2012-12-29 6 views
0

"Mapreduce for the Masses"자습서의 commoncrawl 예제 코드를 사용하고 있습니다. 매퍼를 수정하려고하는데 일부 출력에 문자열을 기록 할 수 있기를 원합니다. 몇 가지 noSQL db를 설정하고 내 결과물을 푸시하는 것을 고려하고 있지만 좋은 해결책이라고 생각하지 않습니다. Java에서 이러한 종류의 로깅을 수행하는 표준 방법은 무엇입니까?매퍼에서 어떻게 로그합니까? (hadoop with commoncrawl)

답변

1

일반적인 로거를 제외하고는 특별한 해결책이 없습니다 (적어도 하나는 알고 있습니다). 몇 가지 해결책을 볼 수 있습니다.
a) 로그가 디버그 목적 인 경우 - 실제로 일반적인 디버그 로그를 작성하십시오. 실패한 작업의 경우 UI를 통해 해당 작업을 찾고 분석 할 수 있습니다.
b)이 로그가 일종의 출력물 인 경우 작업의 다른 출력물과 함께 가져오고 싶다면 specail 키를 지정하고 컨텍스트에 쓰십시오. 그런 다음 감속기에서 출력에 배치하기 위해 특별한 논리가 필요합니다.
c) HDFS에 디렉토리를 생성하고 매퍼에서 해당 디렉토리에 쓸 수 있습니다. 그것은 부작용이기 때문에 MR에 대한 고전적인 방법이 아닙니다 - 어떤 경우에는 괜찮을 수 있습니다. 특히 각 매퍼가 자신의 파일을 생성 한 후에이를 고려하여 hadoop fs -getmerge ... 명령을 사용하여 모든 로그를 하나의 파일로 얻을 수 있습니다.
c) 작업 진행 상황, 오류 수 등을 모니터링하려면 카운터를 사용할 수 있습니다.

+1

System.err.println도 잘 작동합니다. –

+0

commoncrawl google 그룹에 대한 내 질문에 도움을주었습니다. 관심있는 사람은 다음과 같습니다. https://groups.google.com/forum/?fromgroups=#!topic/common-crawl/ibp0urs3Hc0 – kelorek