[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.이 HDFS 경로를보십시오 : / 사 / 응용 프로그램 / & {_ 이름} / 로그 / 응용 프로그램 _ $ {APPID} /
이 HDFS 경로를보십시오 : / 사 / 응용 프로그램 / & {_ 이름} / 로그 / 응용 프로그램 _ $ {APPID} /
일반적으로 :
당신이 stderr로 인쇄하는 경우 당신은 내가 위에서 언급 한이 디렉토리 아래의 파일에서 찾을 수 있습니다. 하나 개의 노드 당 하나 개의 파일이 있어야합니다.
-
==============================
2.당신은 하둡 스트리밍은 감속기에 매퍼에서 파이프 데이터를 표준 출력으로 사용하는 알고 있어야합니다. 로깅 시스템이 표준 출력에 쓰는 경우는 매우 가능성이 논리와 작업을 중단하기 때문에 그래서, 당신은 문제가 될 것입니다. 로그인하는 한 가지 방법은 그래서 당신이 오류 로그에 로그를 볼 수, 표준 에러에 작성하는 것입니다.
당신은 하둡 스트리밍은 감속기에 매퍼에서 파이프 데이터를 표준 출력으로 사용하는 알고 있어야합니다. 로깅 시스템이 표준 출력에 쓰는 경우는 매우 가능성이 논리와 작업을 중단하기 때문에 그래서, 당신은 문제가 될 것입니다. 로그인하는 한 가지 방법은 그래서 당신이 오류 로그에 로그를 볼 수, 표준 에러에 작성하는 것입니다.
from https://stackoverflow.com/questions/30586619/hadoop-streaming-where-are-application-logs by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 감속기에서 동일하게 반복 할 하둡에 TwoDArrayWritable을 사용자 정의하지 수 (0) | 2019.10.07 |
---|---|
[HADOOP] 돼지 라틴어 스크립트를 실행하는 동안 예외를 얻기 (0) | 2019.10.07 |
[HADOOP] 하둡 네임 노드, 체크 포인트 노드 및 백업 노드를 사용의 장점과 단점은 무엇입니까? (0) | 2019.10.07 |
[HADOOP] 하둡 스트리밍 mapred.local.dir 오류 (0) | 2019.10.07 |
[HADOOP] 하둡 클러스터는 마스터 노드 또는 모든 노드를 사용하고 (0) | 2019.10.07 |