该工具提供自动化解析HDFS集群FSImage文件,并解析成文本文件存储在HDFS中;解析后的信息通过Hive映射成表,并通过Hive进行相关信息统计,使用有数生成相关报表。
该工具包含两部分:
HDFS有提供接口(dfsadmin -fetchImage)下载FSImage到本地,但是其存在两个问题:
针对以上的两个问题,采用在NameNode节点配置Crontab定时调用脚本把本地FSImage上传到HDFS指定目录中的方式。采集的流程如下:
依赖:HDFS Client
环境变量:HADOOP_HOME
命令:
sh upload-fsimage.sh <fsimage_storage_dir> <dir_user> <dir_group>
举例:
sh upload-fsimage.sh hdfs://hz-cluster6/fsimage smilodon hadoop
Crontab:建议crontab设置为10分钟执行一次。
目前FSImage保存2个副本,正常是一小时生成一个副本,在繁忙时间会更短,所以10分钟一次可以保证不遗漏FSImage。
该任务是Yarn类型脚本任务,从Yarn申请Container,在Container启动脚本任务,下载FSImage到本地并分析,结束后上传分析结果到HDFS中。
每个Container资源需求较少,1 core,1 GB内存即可。可以启动多个Container为多个FSImage进行并发分析。
Container启动后会下载Hadoop 指定集群的配置文件,可以在一个Yarn集群分析所有线上集群的FSImage。 例如:在北京集群启动任务,去分析重庆、南京、杭州等所有集群的FSImage。
依赖:Yarn Client(有版本依赖,2.7.3集群需要2.7.3的客户端)
环境变量:fsimage-env.sh定义的变量
命令:sh fsimage-daemon.sh \<hadoop-conf-path> \<fsimage_input_path> <fsimage_output_path>
举例:
sh fsimage-daemon.sh http://repo.xxx.org/dev_packages/common/hadoop/cluster6-1.0.0.tar.gz hdfs://cluster3/fsimage hdfs://cluster6/fsimage/cluster3