2010-05-14 7 views
7

System.out.println()을 사용하여 값을 인쇄하려고했으나 콘솔에 나타나지 않습니다. Hadoop을 사용하여 디버깅을 위해 map/reduce 어플리케이션의 값을 어떻게 출력합니까?hadoop 응용 프로그램 디버그

감사합니다. Deepak.

+1

여기를 참조하십시오 https://stackoverflow.com/questions/23235343/debugging :

HadoopApprovals.verifyMapReduce(new WordCountMapper(), new WordCountReducer(), 0, "cat cat dog"); 

는 출력을 생성 예를 들어 http://t.co/leExFVrf

코드 : 여기에 비디오가있다 -hadoop-in-eclipse – Mash

답변

5

페이지 @SquareCog 포인트 정보의 아주 좋은 소스가 당신이 그것을 실행하는 일단 맵리 듀스 작업을 디버깅에에있다 구름에.

마더와 리듀서에 대한 단위 테스트를 작성해야한다고 생각하기에 이르면 기본 논리가 작동하는지 확인할 수 있습니다. 유닛 테스트를 통해 맵을 테스트하고 로직을 줄이려면 mrunit을 확인하십시오.이 방법은 JUnit과 비슷한 방식으로 작동합니다.

+1

음, 내가 MRUnut에 대해 이야기 할 때 가리킨 페이지 :) 그러나 확실합니다. – SquareCog

+0

@SquareCog - 나쁘다. 나는 당신이 어떤 페이지를 링크했는지 알았다고 생각했다. 좋은 정보원 : +) –

5

System.out.println 및 System.err.println을 사용하여 인쇄 된 라인은 Hadoop이 작업 단위로 기록하는 로그로 이동합니다. 개별 작업을 클릭하여 웹 UI를 사용하여 볼 수 있습니다.

은 시험에 대한 조언을 많이하고 디버깅 하둡 작업에 클라우 데라에서이 블로그 게시물을 참조 : http://www.cloudera.com/blog/2009/07/advice-on-qa-testing-your-mapreduce-jobs/

3

디버깅에도 CountersHadoop JavaDoc을 사용할 수 있습니다. 예 : 확인하고 싶으면 프로그램의 특정 줄을 얼마나 자주 지나치게하는지.

0

System.out.println은 터미널로 전달되지 않고 로그 파일에 기록됩니다. 로그 파일은 기본적으로 Hadoop 디렉토리에 있습니다. 터미널에 입력 할 수 있습니다. cat /hadoop-homedirectory/logs/userlogs/jobID/attemptID/stdout 웹 인터페이스를 통해서도 액세스 할 수 있습니다. ip : 50070/logs/userlogs를 입력하십시오.

0

MRUnit & ApprovalTests를 사용하면지도 축소 작업의 프로세스를 매우 쉽게 인쇄 할 수 있습니다.

[cat cat dog] 
-> maps via WordCountMapper to -> 
(cat, 1) 
(cat, 1) 
(dog, 1) 

-> reduces via WordCountReducer to -> 
(cat, 2) 
(dog, 1) 
관련 문제