복붙노트

[HADOOP] MapReduce 작업에 로그인하기위한 표준 사례

HADOOP

MapReduce 작업에 로그인하기위한 표준 사례

MapReduce 작업에 로그인하기위한 최선의 방법을 찾고 있습니다. 나는 다른 Java 응용 프로그램에서와 같이 log4j appender와 함께 slf4j를 사용하고 있지만 MapReduce 작업은 제한된 액세스 권한을 가진 공유 클러스터이기 때문에 클러스터 전체에서 분산 된 방식으로 실행되므로 로그 파일 위치를 어디에 설정해야하는지 모르겠습니다. 특권.

MapReduce 작업에 로그인하기위한 표준 사례가 있습니까? 따라서 작업 완료 후 클러스터 전체에서 로그를 쉽게 볼 수 있습니까?

해결법

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

    1.hadoop이 사용하는 기본 로깅 프레임 워크 인 log4j를 사용할 수 있습니다. MapReduce 애플리케이션에서 다음과 같이 할 수 있습니다.

    hadoop이 사용하는 기본 로깅 프레임 워크 인 log4j를 사용할 수 있습니다. MapReduce 애플리케이션에서 다음과 같이 할 수 있습니다.

    import org.apache.log4j.Logger;
    // other imports omitted
    
    public class SampleMapper extends Mapper<LongWritable, Text, Text, Text> {
        private Logger logger = Logger.getLogger(SampleMapper.class);
    
        @Override
        protected void setup(Context context) {
            logger.info("Initializing NoSQL Connection.")
            try {
                // logic for connecting to NoSQL - ommitted
            } catch (Exception ex) {
                logger.error(ex.getMessage());
            }
        }
    
        @Override
        protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
            // mapper code ommitted
        }
    }        
    

    이 샘플 코드는 log4j 로거 사용자가 상속 된 매퍼 로거에 이벤트를 기록하도록합니다. 모든 로그 이벤트는 해당 작업 로그에 기록됩니다. JobTracker (MRv1) / ResourceManager (MRv2) 웹 페이지에서 작업 로그를 방문 할 수 있습니다.

    원사를 사용하는 경우 다음 명령을 사용하여 명령 줄에서 응용 프로그램 로그에 액세스 할 수 있습니다.

    yarn logs -applicationId <application_id>
    

    mapreduce v1을 사용하는 경우 명령 줄에서 단일 액세스 지점이 없습니다. 따라서 각 TaskTracker에 로그인하고 $ {hadoop.log.dir}에 지정된 / var / log / hadoop / userlogs / 시도 _ / syslog를 / log4j 출력을 포함하는 userlogs로 구성된 경로를 확인해야합니다.

  2. ==============================

    2.@Ashrith의 대답에 추가하려면 JobTracker GUI를 통해 개별 작업 추적기 로그를 볼 수 있습니다. 실행중인 작업 시도는 JT Gui가 볼 수 있으며 stderr, stdout 및 시스템 로그 중 하나를 클릭 할 수 있습니다. 시스템 로그는 log4j 출력을 찾는 곳입니다.

    @Ashrith의 대답에 추가하려면 JobTracker GUI를 통해 개별 작업 추적기 로그를 볼 수 있습니다. 실행중인 작업 시도는 JT Gui가 볼 수 있으며 stderr, stdout 및 시스템 로그 중 하나를 클릭 할 수 있습니다. 시스템 로그는 log4j 출력을 찾는 곳입니다.

  3. from https://stackoverflow.com/questions/28119423/standard-practices-for-logging-in-mapreduce-jobs by cc-by-sa and MIT license