FsImage Analyse Tool
FsImage Analyse Tool
该工具提供自动化解析HDFS集群FSImage文件,并解析成文本文件存储在HDFS中;解析后的信息通过Hive映射成表,并通过Hive进行相关信息统计,使用有数生成相关报表。
该工具包含两部分:
- NameNode节点上传FSImage文件到HDFS指定目录中。
- 通过Yarn Application下载指定HDFS上的FSImage到本地机器进行分析,把分析结果上传到HDFS中。
NameNode节点采集FSImage
HDFS有提供接口(dfsadmin -fetchImage)下载FSImage到本地,但是其存在两个问题:
- dfsadmin需要管理员身份,也就是需要hdfs.keytab,按照目前运维规范来说不合适。
- 该接口是从Active NameNode节点下载FSImage,这对Active NameNode有一定的负载。
针对以上的两个问题,采用在NameNode节点配置Crontab定时调用脚本把本地FSImage上传到HDFS指定目录中的方式。采集的流程如下:
- 检查本机NameNode是否为Standby,如果不是Standby,结束任务。
- 从配置文件中获取NameNode的元数据存放目录,获取该目录下的FSImage文件。
- 根据每个FSImage的生成时间戳,拼接HDFS存储目录:<RemoteDir/YYYY/MM/DD/HH-MM-SS>
- 如果未上传到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。
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