需求:拉取fsimage文件,解析成csv入库到clickhouse,为监控提供数据
1、拉取fsimage
在有客户端的机器上执行如下命令,拉取fsimage文件到当前目录下
hdfs dfsadmin -fetchImage ./
2、解析fsimage
hdfs oiv -p Delimited -delimiter "|" -i /home/hadoop/fsimage -o fsimage.csv -t /home/hadoop/temp
-delimiter:指定分隔符
-i:输入文件,即fsimage文件
-o:输出文件名
-t:临时目录,fsimage过大的情况下会引起内存溢出,加临时目录避免内存溢出
3、入库clickhouse
cat fsimage.csv | clickhouse-client --host ip -u username --password pwd -m --format_csv_delimiter="|" --input_format_allow_errors_num=10000 --query="INSERT INTO database.table FORMAT CSVWithNames"
–format_csv_delimiter=“|”:指定分隔符
–input_format_allow_errors_num=10000 允许错误行为1w行
4、查询所需数据,如冷数据条数:
select count(1) from database.table where dateDiff('month', toDateTime(concat(cast(ModificationTime as String),':00')), now())>6;