hadoop作业在运行的时候可能遇到各种各样的问题,需要我们通过工具来逐个排查。一种手工排查方式就是到yarn 或者jobhistory(已经运行完的任务)查看各个map,reduce报错,根据所有map task以及reduce task的耗时排序查看任务是否倾斜。这种任务数据读取的都是appmaster写在hdfs的数据。配置项为:
<name>mapreduce.jobhistory.done-dir</name>
那么我们如何监控这些任务?自动收集这些任务信息?而不是一个个点开yarn UI分析任务。
一种应该是通过resourcemanager的restapi解析通过调用api返回的json数据然后写到db中。
另一种方式就是sparkstreaming读取hdfs 上述配置的目录 的.jhist 格式文件然后解析存储到db,这种可以做到实时。
可以通过streamingcontext的receiverStream 接口实现一个自动发现目录下的.jhist 文件,提交给线程池处理。