FsImage Analyse Tool

2021-01-07  本文已影响0人  sparkle123

FsImage Analyse Tool

该工具提供自动化解析HDFS集群FSImage文件,并解析成文本文件存储在HDFS中;解析后的信息通过Hive映射成表,并通过Hive进行相关信息统计,使用有数生成相关报表。

该工具包含两部分:

NameNode节点采集FSImage

HDFS有提供接口(dfsadmin -fetchImage)下载FSImage到本地,但是其存在两个问题:

针对以上的两个问题,采用在NameNode节点配置Crontab定时调用脚本把本地FSImage上传到HDFS指定目录中的方式。采集的流程如下:

  1. 检查本机NameNode是否为Standby,如果不是Standby,结束任务。
  2. 从配置文件中获取NameNode的元数据存放目录,获取该目录下的FSImage文件。
  3. 根据每个FSImage的生成时间戳,拼接HDFS存储目录:<RemoteDir/YYYY/MM/DD/HH-MM-SS>
  4. 如果未上传到HDFS,则上传。
  5. 上传完成后,把目录属主给到指定用户。

使用方式

依赖: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

上一篇下一篇

猜你喜欢

热点阅读