计算 hadoop 目录中所有文件的 md5 校验和

计算 hadoop 目录中所有文件的 md5 校验和

我在 centos 上使用 Hadoop apache 2.7.1,我是 centos 新手

如果我想计算 Hadoop 中特定文件的 md5 校验和,我可以发出以下命令

hdfs dfs -cat /hadoophome/myfile | md5sum

但是如果我想计算 hadoophome hdfs 目录中所有文件的 md5 校验和,该怎么办?

我的意思是如何编写一个脚本,遍历 /hadoophome 中的所有文件(特定的 hdfs 目录),然后将每个文件名及其 md5 校验和在新行中写入包含所有结果的一个文件

注意:我被迫 cat hdfs 文件,然后对该文件使用 md5sum,而不是

hadoop fs -checksum

因为我想要 md5 值

我开始使用以下脚本

for i in $(hadoop fs -ls /hadoophome  | sed '1d;s/  */ /g' | cut -d\  -f8 ); do   hdfs dfs -cat  "$i"  | md5sum  ; done;

答案1

您可以使用 find 命令exec对给定目录及其子目录中找到的每个文件执行命令,然后将输出重定向到另一个文件:

# find /hadoophome -type f -exec md5sum "{}" \; >> /tmp/file-list.txt

输出如下所示:

# find /bin/ -type f -exec md5sum "{}" \; 
...snip...
2de30aeb16259b7051520d2c6c18b848  /bin/mlnx_dump_parser
e1f7d74a86c8fa85588e239f974a6d24  /bin/ibv_task_pingpong
9fbb31d5760f35911eeb644d99c615ab  /bin/mlnx_get_vfs.pl
9f43d9718c5e41727a6520080158b494  /bin/flint_ext
2f315aa63072d96718e7fe268643869c  /bin/mlnx_perf
f31173018f34839e24d5ecf25c811a30  /bin/fwtrace
361cb80244b429f4df29ea2555eee134  /bin/mlnx_qcn
c17cd67a2e996881d9157ec30b7b215f  /bin/mdevices_info
49f03faf85a80d54eedea5ef69358f01  /bin/mlnx_qos
...snip...

相关内容