2013-10-04 2 views
1

EMR 초보자 경고 :EMR - 로그에서 사용자 로그 생성

Google 웹 사이트의 사용 데이터가 포함 된 큰 로그가 있습니다. 고객은 고객 ID로 인증되고 식별됩니다. 고객 문제를 해결하려고 할 때마다 검색 기준으로 customer_id를 사용하여 모든 로그를 조회하고 결과를 파일로 파이프합니다. 그런 다음 결과 파일을 사용하여 문제를 해결합니다. EMR을 사용하여 고객 별 로그 파일을 만들려고 생각 했으므로 필요할 때마다 고객 별 로그 파일을 만들 필요가 없습니다. EMR은 모든 고객을 위해 매 시간마다 우리를 위해 그것을 할 것입니다.

우리는 EMR 스트리밍을보고지도 단계를 위해 약간의 루비 스크립트를 제작했습니다. 이제 키/값 (userid, logdata)의 큰 목록이 있습니다.

그러나 우리는 감소 단계를 고수하고 있습니다. 이상적으로는 특정 고객의 모든 로그 데이터가 포함 된 파일을 생성하여 S3 버켓에 넣고 싶을 것입니다. 아무도 우리가이 일을 어떻게 할 수 있겠습니까? EMR은 우리가 사용하고자하는 기술입니다.

덕분에, 베노

답변

0

하나의 가능성은 속성을 통해 작업을 사전에 줄일 수를 규정하는, 신원 감속기를 사용하는 것입니다. 사용자의이 설정된 에 대한 모든 레코드가 저장되는 고정 된 수의 파일에 도달하게됩니다. 특정 사용자를 검색 할 수있는 올바른 파일을 찾으려면 사용자 아이디를 해시하여 올바른 파일을 찾고 거기에서 검색하십시오.

사용자 당 실제로 하나의 파일을 원할 경우 감속기는 호출 될 때마다 새 파일을 생성해야합니다. 나는 루비에 사용할 수있는 s3 클라이언트 라이브러리가 충분히 있다고 확신한다.

0

Splunk을보세요. 대량의 텍스트 데이터에서 패턴과 관계를 발견 할 수 있도록 설계된 엔터프라이즈 급 도구입니다. 대규모 웹 사이트의 웹 및 응용 프로그램 로그를 모니터링하는 데 사용합니다. Splunk가 모든 것을 색인화하고 검색 엔진을 사용하여 데이터를 드릴 - 사전 처리가 필요하지 않습니다. 예,이 맵리 듀스에서 할 일반적으로 매우 쉽게 코드를 보지 않고 Getting Started with Splunk as an Engineer

0

;

그냥이 가로 질러 여기서 가장 좋은 시나리오는 사용자가 많고 사용자가 많지 않고 사용자 당 상호 작용이 제한되어있는 경우입니다.

추상적으로, 사용자의 입력 데이터는 아마도 다음과 같을 것이다 :

File 1: 
1, 200, "/resource", "{metadata: [1,2,3]}" 

File 2: 
2, 200, "/resource", "{metadata: [4,5,6]}" 
1, 200, "/resource", "{metadata: [7,8,9]}" 

을이 단지 사용자, HTTP 상태, 경로/자원의 로그, 일부 메타 데이터입니다. 가장 좋은 방법은 실제로 데이터를 정리하고, 소비 할 수있는 형식으로 변환하고, 사용자 ID와 키/값 쌍으로 사용자 ID와 기타 모든 항목을 다시 표시하는 것만으로 사용자의 매퍼를 집중시키는 것입니다.

내가 하둡 스트리밍에 매우 익숙하지 해요,하지만 문서에 따르면 : 당신이 그것을 사용할 수 있습니다대로 1이 반복되는 것을

1\t1, 200, "/resource", "{metadata: [7,8,9]}" 

참고 : By default, the prefix of a line up to the first tab character is the key, 그래서이 같이 보일 수 있습니다 출력, 그리고 셔플의 일부가 아닙니다.즉 File 1File 2를 처리 한 매퍼에서 처리 변화가 더 같은 somethig에 위치를 : 당신이 볼 수 있듯이, 우리가 이미 기본적으로 우리의 사용자 별 그렙 한 적이

1: 
1, 200, "/resource", "{metadata: [1,2,3]}" 
1, 200, "/resource", "{metadata: [7,8,9]}" 

2: 
2, 200, "/resource", "{metadata: [4,5,6]}" 

! 그것은 일종의 정렬을 포함 할 수있는 최종 변환의 문제입니다 (본질적으로 시계열 데이터이므로). 그래서 이전에 많은 사용자와 제한된 사용자 상호 작용이있는 경우이 방법이 훨씬 효과적이라고 말한 것입니다. 사용자 당 MB 만톤을 정렬 (또는 네트워크를 통해 전송)하는 것은 특히 빠를 수는 없습니다 (대안보다 잠재적으로 더 빠름).

요약하면 크기와 사용 사례에 따라 다르지만 일반적으로 예, 일반적으로 매핑/축소에 적합합니다.