복붙노트

[HADOOP] hadoop에서 로깅 기능 제어

HADOOP

hadoop에서 로깅 기능 제어

hadoop에서 로깅 기능을 제어하는 ​​방법은 무엇입니까? Hadoop은 로그를 제어하기 위해 기본 log4j.properties 파일을 사용합니다. 내 유스 케이스는 내 클래스에서 생성 된 로그를 제어하는 ​​것이다.

JobTracker, TaskTracker, NameNode 및 DataNode 데몬 프로세스와 같은 Hadoop 데몬은 각 호스트 노드의 hadoop-conf-directory에서 log4j.properties 파일을 사용합니다. rootLogger는 INFO 레벨의 모든 메시지를 콘솔에 기록하는 "INFO, console"로 설정됩니다.

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

나는 기본 log4j.properties 파일을 만지기로되어 있지 않다.

나는 Oozie-v3.1.3-incubating, hadoop-v0.20 및 cloudera CDH-v4.0.1을 사용하고 있습니다.

어떻게 기본 log4j.properties 파일을 대체 할 수 있습니까 ?? 또는 내 수업에 대한 로그를 어떻게 제어 할 수 있습니까?

해결법

  1. ==============================

    1.특별히 Log4J 파일로 달성하고자하는 것은 무엇입니까? 로그가 클러스터를 통해 분산되기 때문에 rootlogger에 로그를 남기므로 작업 추적기를 통해 로그를 볼 수 있어야합니다 (작업 작업 시도를 드릴 다운하여).

    특별히 Log4J 파일로 달성하고자하는 것은 무엇입니까? 로그가 클러스터를 통해 분산되기 때문에 rootlogger에 로그를 남기므로 작업 추적기를 통해 로그를 볼 수 있어야합니다 (작업 작업 시도를 드릴 다운하여).

    롤링 파일을 사용하려는 경우 나중에 해당 파일을 검색하는 데 어려움을 겪습니다 (작업 노드를 통해 분산되기 때문에).

    동적으로 로그 수준을 설정하려면이 작업이 충분히 간단해야합니다.

    public static Logger log = Logger.getLogger(MyMapper.class);
    
    @Override
    protected void setup(Context context) throws IOException,
            InterruptedException {
        log.setLevel(Level.WARN);
    }
    

    자신의 appender를 추가하고 싶다면 위와 같이 setup 메소드를 사용하여 프로그래밍 방식으로이 작업을 수행 할 수 있습니다 (이 SO 질문 참조).

  2. from https://stackoverflow.com/questions/14191070/controlling-logging-functionality-in-hadoop by cc-by-sa and MIT license