一般的にデバッグするMapReduceプログラムに2つの方法で使用

**

デバッグのMapReduceプログラム

**
1. Log4によるMRのコードのデバッグを請求されます。

Logger logger = Logger(xxx.class);
logger.info()

通过上述操作 输出的结果,只能查看job的信息,而Map,Reduce的信息看不到。
需要开启Yarn 历史日志 ,日志归档

履歴ログを有効にする方法2.y​​arnクラスター、ログのアーカイブ

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.別の方法:(また、一般的な方法を)解決するためのシェルスクリプトを使用します

  • 閉じるログの集約
  • など/ Hadoopの/ yarn-env.shファイルの設定
	export YARN_LOG_DIR=~/logs/yarn
	export YARN_PID_DIR=~/data/yarn
  • スクリプト(scanMRLog.sh)を作成
    標準エラー:出力System.errの出力
    標準出力:の出力のSystem.out出力
    シスログ:ログ出力ツール(例えばSLF4Jとして、log4jの)情報出力
    scanMRLog.sh [APPLICATIONID] [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元の記事 ウォンの賞賛1 ビュー505

おすすめ

転載: blog.csdn.net/Mr_YXX/article/details/104948556