2013-01-07 3 views
6

하둡에서 로깅 기능을 제어하는 ​​방법은 무엇입니까? Hadoop은 로그를 제어하기 위해 기본 log4j.properties 파일을 사용합니다. 나의 유스 케이스는 클래스에 의해 생성 된 로그를 제어하는 ​​것이다. JobTracker에, TaskTracker, 네임 노드데이터 노드 데몬 프로세스와 같은hadoop에서 로깅 기능 제어

하둡 데몬은 각각의 호스트 노드의 hadoop-conf-directory있는 log4j.properties 파일을 사용합니다. rootLogger는 "INFO, console"으로 설정되어 모든 메시지를 레벨 INFO에 콘솔에 기록합니다.

Oozie Workflow를 사용하여 hadoop 작업을 트리거합니다. -Dlog4j.configuration=path/to/log4j.properties 시스템 속성을 설정하여 사용자 지정 log4j.properties 파일을 작업에 전달하려고 시도했지만 작동하지 않습니다. 여전히 기본 log4j 속성을 사용합니다.

기본 log4j.properties 파일을 수정하지 않아도됩니다.

내가 Oozie-v3.1.3-인큐베이팅, 하둡-v0.20와 클라우 데라 CDH-v4.0.1을 사용하고 있습니다.

어떻게 기본 log4j.properties 파일을 대체 할 수 있습니까 ?? 또는 클래스에 대한 로그를 제어하는 ​​방법은 무엇입니까?

답변

10

구체적으로 Log4J 파일로 달성하고자하는 것은 무엇입니까? 로그가 클러스터를 통해 배포되기 때문에 rootlogger에 로그를 남기므로 작업 추적을 통해 로그를 볼 수 있어야합니다 (작업 작업 시도를 자세히 조사하여).

롤링 파일을 사용하려는 경우 나중에 해당 파일을 검색하는 데 어려움을 겪습니다 (다시 말해서 해당 노드가 작업 노드에 분산되어 있기 때문입니다). 동적으로 로그 레벨을 설정하려면

이 충분히 단순해야한다 :

public static Logger log = Logger.getLogger(MyMapper.class); 

@Override 
protected void setup(Context context) throws IOException, 
     InterruptedException { 
    log.setLevel(Level.WARN); 
} 

당신이 어 펜더를 소유하고 추가하려는 경우, 당신은 프로그램이 작업을 수행 할 수 있어야한다 (이 SO Question 참조) 위와 같은 설정 방법.

+0

답장을 보내 주셔서 감사합니다 .--) 저에게 많은 도움이됩니다. – Suresh

+0

그래, 도움이된다 .. 고마워. –