在近期的工作中,我需要用腳本來運行mapreduce,並且要判斷運行的結果,根據結果來做下一步的動作。
開始我想到shell中獲得上一條命令運行結果的方法,即判斷"$?"的值
if [ $? -eq 0 ];then #do something fi
但是有時候即便mapreduce運行失敗了,也還是會進入判斷結構中。
后來查閱了相關資料,得知hadoop中可以使用yarn的命令,來獲得job的狀態,包括job名稱、完成百分比、當前狀態等參數,其實就和yarn的web界面查看到的數據一模一樣。
使用yarn命令查看job狀態:
我們要做的就只剩下截取“Final-State”后的字段,即可判斷程序運行的最終結果了。這里我們要使用awk命令進行解析:
yarn application -status application_1468831024962_0278 | grep 'Final-State' | awk -F ':' '{print $2}'
其中 application_1468831024962_0278 是我的applicationID,你可以通過yarn application -list來獲得applicationID。
運行結果如下:
這樣就很容易判斷成功與否,進行下一步的處理了。