当我执行这些命令时,它非常慢并且总是需要五个小时或更长时间才能完成。
hdfs dfsadmin -fetchImage ${t_save_fsimage_path}
# 获取下载的fsimage具体文件路径
t_fsimage_file=`ls ${t_save_fsimage_path}/fsimage*`
# 处理fsimage为可读的csv格式文件
hdfs oiv -i ${t_fsimage_file} -o ${t_save_fsimage_path}/fsimage.csv -p Delimited
# 删除fsimage.csv的首行数据
sed -i -e "1d" ${t_save_fsimage_path}/fsimage.csv
# 创建数据目录
hadoop fs -test -e ${t_save_fsimage_path}/fsimage || hdfs dfs -mkdir -p ${t_save_fsimage_path}/fsimage
# 拷贝fsimage.csv到指定的路径
hdfs dfs -copyFromLocal -f ${t_save_fsimage_path}/fsimage.csv ${t_save_fsimage_path}/fsimage/
答案 0 :(得分:0)
以下内容在处理大型fsimage
时尤其有用:
设置Java堆大小:
export HADOOP_OPTS="-Xmx55G"
使用-t或--temp选项使用临时目录(而不是内存)来缓存中间结果:例如hdfs oiv -i fsimage_example -o fsimage_example.csv -p Delimited -delimiter "|" --temp /tmp/fsimage_example
答案 1 :(得分:0)
您可以使用HFSA lib或HFSA cli tool(取决于您的用例)以编程方式分析fsimage。