如何查看hadoop任务跑的sql及任务的输入输出

有一个场景,好比大家公司集群的hdfs的使用率常常快要不够用了,想删除一些就群上的无用数据,某些数据是否被别的目录依赖使用,这个时候咱们就须要解析数据之间的依赖关系,而后从没有下游的数据开始删除,或者设置其生命周期,当某个数据的份数超过其所使用范围,咱们就能够将它认为是无用数据,此数据就能够删掉。sql

由于若是想管理好大数据集群hdfs上的数据合理使用和存在、清理,咱们须要二个基本数据,第一就是目录数据的生命周期,第二就是目录之间的依赖关系。oop

目录级数据的生命周期

这个就要根据具体的也许须要来设置该目录的生命周期,通常状况下,好比阿里的odps上,表的生命周期是按照天来计算的。可是其实纯粹的按照天来设置生命周期是不那么合理的,好比有的表是每月才产出一份,这时候再按照天来设置生命周期显然不太合理,使用方还要算算那几个月是31天,30天等去计算,其实他们使用数据多是最近产出的多少份数据。由于对于目录来讲,以份为单位来对数据进行生命周期的设置和清理是比较合理的。大数据

数据之间的依赖关系

声明一下:此处的依赖关系就只限于提交任务到yarn上的mr任务,其余不经过mr任务进行数据导入或者导出的数据须要各自系统去注册数据的血缘依赖关系。咱们这里只讨论提交到yarn上的mr任务产出的数据之间的依赖关系。此处有几个步骤:3d

  • 天天跑的任务都在hdfs上以日期为目录的格式存听任务跑的时候的信息,咱们能够天天离线跑任务去解析,更新最新的依赖关系。
  • 根据以上生成的依赖的关系,咱们进行血缘关系的组织。 这里的思路其实不难的,我给你们大概讲解下怎么作。首先咱们看下在集群上任务运行历史都是以日期文件夹保存的,具体的列表以下:
    集群运行任务列表

如何查看hadoop任务跑的sql及任务的输入输出 任务运行列表orm

每一个任务都有运行的参数配置和任务输出结果,好比咱们关心的任务运行的脚本(固然若是不是hive,就没有脚本),任务的输入输出目录关系,咱们均可以看到.cdn

  • 好比咱们想看某个任务的信息,怎么看呢?点击任务id,会跳到任务详情页面,以下图: xml

    备注:这边有任务的overview和配置信息,configuration,这里的配置信息在hdfs上是以xml文件保存的,在这有一个可视化的界面,咱们只挑本身比较关心的配置项去看好了。

  • hive.query.string是指该任务执行的sql语句。 blog

  • inputformat.inputdir是指该任务的输入路径,多个则以逗号隔开 生命周期

  • location或者outputformat.dir是指该任务的输出路径,多个则以逗号隔开。 hadoop

    在使用过程当中发现也有坑,就是create table select这种语法,输出路径解析不出来。可能须要特别处理,根据拿到的query语句进行sql语法解析的校订。

你们又什么问题或者疑问欢迎交流,校订。

相关文章
相关标签/搜索