トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

Hadoop:スレーブのstderrログを収集する の変更点

Top / 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ファイルだけコピーしてくれます。

手抜きシェルでごめんなさい。