Hadoop:スレーブのstderrログを収集する の変更点
Top / Hadoop:スレーブのstderrログを収集する
- 追加された行はこの色です。
- 削除された行はこの色です。
- Hadoop:スレーブのstderrログを収集する へ行く。
- Hadoop:スレーブのstderrログを収集する の差分を削除
*Hadoop:スレーブのstderrログを収集する [#qb384531] 必要だったので作りました。 こんな感じです。 ■harvestJobErrLog.sh #!/bin/bash if [ $# -ne 1 ] then echo "ERROR: No input args" exit 255 fi JOB_ID=$1 OUTDIR=${JOB_ID}/ mkdir ${OUTDIR} while read target_host do ssh -n ${target_host} "ls -1 /var/log/hadoop/userlogs/attempt_${JOB_ID}_*/stderr" > ./tmperrlist while read tlog do tfilename=`echo ${tlog} | awk -F/ '{print $6$7}'` scp ${target_host}:/${tlog} ${OUTDIR}${tfilename}_${target_host} done < tmperrlist echo "${target_host} is done" done < hostlist.txt slaveのログのディレクトリは適宜変更して使ってください。 このシェルとは別にhostlist.txtファイルが必要です。 ■hostlist.txt slave01 slave02 slave03 以下のような感じで実行できます。 |実行ユーザ|hadoop(スレーブサーバにssh認証設定がされているユーザ)| |実行形式| harvestJobErrLog.sh JOB_ID| |引数のJOB_IDについて|頭の「job_」を取った値。| 実行例は以下の通り。 harvestJobErrLog.sh 201103251444_1959 すると、引数で指定したジョブIDでディレクトリを掘って、適当にファイル名がかぶらないようにstderrファイルだけコピーしてくれます。 手抜きシェルでごめんなさい。