**
디버그 맵리 듀스 프로그램
**
1. LOG4에 의해 MR 코드 디버깅 추천
Logger logger = Logger(xxx.class);
logger.info()
通过上述操作 输出的结果,只能查看job的信息,而Map,Reduce的信息看不到。
需要开启Yarn 历史日志 ,日志归档
역사 로그를 켜 아카이브를 기록하는 방법 2.yarn 클러스터
1. 配置文件(每台服务器均配置)
mapred-site.xml 历史服务
<property>
<name>mapreduce.jobhistory.address</name>
<!--历史服务在主节点上-->
<value>hadoop12:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>hadoop12:19888</value>
</property>
yarn-site.xml 日志聚合
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!--秒-->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
2. 启动进程(主节点启动)
sbin/mr-jobhistory-daemon.sh start historyserver
配置完成后重启HDFS和Yarn集群
sbin/mr-jobhistory-daemon.sh stop historyserver
<!-- 然后访问hadoop12:19888的webUi页面 查看Map,Reduce的日志-->
3. 또 다른 방법은 다음 (또한 일반적인 방법)을 해결하기 위해 쉘 스크립트를 사용하여
- 닫기 로그 집계
- 등 / 하둡 / yarn-env.sh 파일 구성
export YARN_LOG_DIR=~/logs/yarn
export YARN_PID_DIR=~/data/yarn
- 스크립트 (scanMRLog.sh) 만들기
STDERR : 출력 System.err에 출력
표준 출력 : 출력 System.out에 출력
시스템 로그 : 로그 출력 수단 (예 SLF4J 같은 Log4j의) 정보 출력
scanMRLog.sh [애플리케이션 ID [LogType의 선택 사항]
if [ $# -le 0 ]
then
echo 缺少参数
exit 1
fi
logtype=out
if [ $# -ge 1 ]
then
logtype=${2}
fi
for n in `cat /opt/install/hadoop-2.5.2/etc/hadoop/slaves`
do
echo ===========查看节点 $n============
ssh $n "cat ~/logs/yarn/userlogs/${1}/container_*/*${logtype}|grep com.baidu"
done
구성 및 다시 시작 HDFS 서비스 피란 후
- 스크립트를 실행
1. 修改脚本权限 chmod 744 scanMRLog.sh
2. ./scanMRLog.sh application_1558968514803_0001
이 로그에서 정보를 콘솔에 출력됩니다.