在近期的工作中,我需要用脚本来运行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。
运行结果如下:
这样就很容易判断成功与否,进行下一步的处理了。