如何在代码中通过API监控Hadoop、Spark任务的进度和结果?
公司最近要开始搞大数据项目,只好0基础开始学习摸索,目前对基础理论已经入门了,也能单独写一点简单的计算程序跑起来。不过项目需求比较复杂,涉及的技术有好几个,主要为Hadoop2(HDFS、YARN、MapReduce)、Sqoop、Flume、Spark1.6,流程总体可以概括为:
1.通过Sqoop把Oracle里面的数据导入到Hive/HDFS,通过Flume把文件数据导入到Hive/HDFS
2.使用Spark程序对导入的数据执行计算,得到计算结果保存为Hive表
3.通过Sqoop把计算结果导出到Oracle
整个流程是串行的,要上一步完成并且成功才能进行下一步操作,因此公司要求开发一个Java版“总控”程序,实现各操作步骤的管控。我想过,觉得执行任务倒好办一点,可以通过java的Runtime去exec命令例如sqoop import/export、spark-submit等,但是java程序中如何能够监控hadoop mapreduce(因为sqoop底层是hadoop mapreduce任务)、Spark的任务呢?即使没有进度信息也没关系,关键是要能够获得任务状态以及任务是成功还是失败的信息,以便开始下一步工作。
求大神指教!!