일반적으로 디버깅 맵리 듀스 프로그램을 두 가지 방법으로 사용

**

디버그 맵리 듀스 프로그램

**
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

이 로그에서 정보를 콘솔에 출력됩니다.

게시 24 개 원래 기사 · 원 찬양 한 · 전망 (505)

추천

출처blog.csdn.net/Mr_YXX/article/details/104948556