복붙노트

[HADOOP] Hadoop MapReduce log4j - userlogs / job_ dir의 사용자 정의 파일에 메시지를 기록 하시겠습니까?

HADOOP

Hadoop MapReduce log4j - userlogs / job_ dir의 사용자 정의 파일에 메시지를 기록 하시겠습니까?

작업 레벨에서 Hadoop MapReduce log4j를 어떻게 구성해야하는지 명확하지 않습니다. 누군가가 내가이 질문에 대답하도록 도울 수 있습니까?

1) 클라이언트 시스템에서 log4j 로깅 지원을 추가하는 방법. 즉 클라이언트 컴퓨터에서 log4j 등록 정보 파일을 사용하려고하므로 클러스터의 Hadoop log4j 설정을 방해하고 싶지 않습니다. 나는 프로젝트 / jar에 속성 파일을 가지고 있으면 충분하다고 생각할 것이며, hadoop의 분산 캐시는 나머지를 map-reduce jar 파일로 옮겨야한다.

2) $ HADOOP_HOME / logs / userlogs / job_ / dir에있는 사용자 정의 파일에 메시지를 기록하는 방법.

3)지도 작업 줄이기 둘 다 log4j 속성 파일을 사용합니까? 클라이언트 작업에서 제공 한 것이고 hadoop 클러스터에있는 것이 있습니까? 그렇다면 log4j.rootLogger는 두 속성 값을 모두 추가합니까?

Tenks Srivatsan은 좋다

해결법

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

    1.코드에서 log4j를 직접 구성 할 수 있습니다. 예를 들어 PropertyConfigurator.configure (속성)를 호출 할 수 있습니다. 예 : 매퍼 / 감속기 설정 방법.

    코드에서 log4j를 직접 구성 할 수 있습니다. 예를 들어 PropertyConfigurator.configure (속성)를 호출 할 수 있습니다. 예 : 매퍼 / 감속기 설정 방법.

    다음은 hdfs에 저장된 등록 정보의 예입니다.

            InputStream is = fs.open(log4jPropertiesPath);
            Properties properties = new Properties();
            properties.load(is);
            PropertyConfigurator.configure(properties);
    

    여기서 fs는 FileSystem 객체이고 log4jPropertiesPath는 hdfs의 경로입니다.

    이것으로 job_id로 dir에 로그를 출력 할 수도 있습니다. 예를 들어 PropertyConfigurator.configure (속성)를 호출하기 전에 속성을 수정할 수 있습니다.

    Enumeration propertiesNames = properties.propertyNames();
                while (propertiesNames.hasMoreElements()) {
                    String propertyKey = (String) propertiesNames.nextElement();
                    String propertyValue = properties.getProperty(propertyKey);
    
                    if (propertyValue.indexOf(JOB_ID_PATTERN) != -1) {
                        properties.setProperty(propertyKey, propertyValue.replace(JOB_ID_PATTERN, context.getJobID().toString()));
                    }
                }
    
  2. ==============================

    2.원사 로그 --applicationId 를 사용하여 전체 로그를 가져온 다음 unix 명령을 사용하여 필요한 로그 부분을 구문 분석하고 추출하십시오.

    원사 로그 --applicationId 를 사용하여 전체 로그를 가져온 다음 unix 명령을 사용하여 필요한 로그 부분을 구문 분석하고 추출하십시오.

  3. from https://stackoverflow.com/questions/22860045/hadoop-mapreduce-log4j-log-messages-to-a-custom-file-in-userlogs-job-dir by cc-by-sa and MIT license