복붙노트

[HADOOP] 하둡 스트리밍 : 어디 응용 프로그램 로그는?

HADOOP

하둡 스트리밍 : 어디 응용 프로그램 로그는?

하둡 스트리밍 : 어떻게 응용 프로그램 로그를 참조하는 내 질문은 다음과 유사? (답의 링크가 현재 작동하지 않습니다. 그래서 추가 질문을 다시 게시 할 수 있습니다)

내 / usr / 지방 / 하둡의 모든 하둡 로그를 볼 수 있습니다 / 경로를 기록

하지만 어디 응용 프로그램 수준의 로그를 볼 수 있습니까? 예를 들어 :

reducer.py -

import logging
....
logging.basicConfig(level=logging.ERROR, format='MAP %(asctime)s%(levelname)s%(message)s')
logging.error('Test!')  
...

나는 표준 에러에 로그 (WARNING, ERROR) 중 하나를 볼 수 없습니다입니다.

어디에서 응용 프로그램 내 로그 문을 찾을 수 있습니까? 파이썬을 사용하여 하둡 스트리밍을 사용하고 있습니다.

추가 질문 :

내가 저장 파일을 사용하려면 / 내 응용 프로그램 로그를 같이 집계 :

reducer.py -

....
logger = logging.getLogger('test')
hdlr = logging.FileHandler(os.environ['HOME']+'/test.log')
formatter = logging.Formatter('MAP %(asctime)s %(levelname)s %(message)s')
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logger.setLevel(logging.ERROR)
logger.error('please work!!')
.....

(내 하둡 클러스터에 마스터 및 모든 슬레이브의 $ 홈 위치에 test.log했다고 가정). 나는 하둡과 같은 분산 환경에서 이것을 달성 할 수 있습니까? 그렇다면, 어떻게 이것을 달성 할 수 있습니까?

나는이 시도하고 작업을 스트리밍 샘플을 실행, 만에 아래의 오류를 참조하십시오

Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 1
    at org.apache.hadoop.streaming.PipeMapRed.waitOutputThreads(PipeMapRed.java:330)
    at org.apache.hadoop.streaming.PipeMapRed.mapRedFinished(PipeMapRed.java:543)
    at org.apache.hadoop.streaming.PipeReducer.close(PipeReducer.java:134)
    at org.apache.hadoop.io.IOUtils.cleanup(IOUtils.java:237)
    at org.apache.hadoop.mapred.ReduceTask.runOldReducer(ReduceTask.java:484)
    at org.apache.hadoop.mapred.ReduceTask.run(ReduceTask.java:397)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:175)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:415)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1548)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:170)

Container killed by the ApplicationMaster.
Container killed on request. Exit code is 143
Container exited with a non-zero exit code 143

내가 로깅 하둡 스트리밍 작업에 달성 할 수있는 방법을 이해하는 데 도움이 바랍니다.

감사합니다

해결법

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

    1.이 HDFS 경로를보십시오 : / 사 / 응용 프로그램 / & {_ 이름} / 로그 / 응용 프로그램 _ $ {APPID} /

    이 HDFS 경로를보십시오 : / 사 / 응용 프로그램 / & {_ 이름} / 로그 / 응용 프로그램 _ $ {APPID} /

    일반적으로 :

    당신이 stderr로 인쇄하는 경우 당신은 내가 위에서 언급 한이 디렉토리 아래의 파일에서 찾을 수 있습니다. 하나 개의 노드 당 하나 개의 파일이 있어야합니다.

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

    2.당신은 하둡 스트리밍은 감속기에 매퍼에서 파이프 데이터를 표준 출력으로 사용하는 알고 있어야합니다. 로깅 시스템이 표준 출력에 쓰는 경우는 매우 가능성이 논리와 작업을 중단하기 때문에 그래서, 당신은 문제가 될 것입니다. 로그인하는 한 가지 방법은 그래서 당신이 오류 로그에 로그를 볼 수, 표준 에러에 작성하는 것입니다.

    당신은 하둡 스트리밍은 감속기에 매퍼에서 파이프 데이터를 표준 출력으로 사용하는 알고 있어야합니다. 로깅 시스템이 표준 출력에 쓰는 경우는 매우 가능성이 논리와 작업을 중단하기 때문에 그래서, 당신은 문제가 될 것입니다. 로그인하는 한 가지 방법은 그래서 당신이 오류 로그에 로그를 볼 수, 표준 에러에 작성하는 것입니다.

  3. from https://stackoverflow.com/questions/30586619/hadoop-streaming-where-are-application-logs by cc-by-sa and MIT license