E-MapReduce HDFS文件快速CRC校验工具介绍
来源:互联网 发布:即将失效请记好新域名 编辑:程序博客网 时间:2024/05/20 06:07
原文地址
背景
在大数据应用场景下经常有数据文件的迁移工作,如果保障迁移之后数据的完整性是一个很常见的问题。对本地文件系统的数据而言,我们一般用md5工具(在Linux下可用md5sum命令)。
而对云存储上的文件来说,md5不一定满足需求。比如阿里云OSS文件并没有提供md5校验值,而是提供了CRC64校验值。本文就给大家介绍一下在大数据场景下,如何用工具快速对比文件。
OSSUtil
首先我们使用OSS官方提供ossutil工具,可以方便的得到云端OSS文件的CRC64:
[hadoop@emr-header-1 ~]$ ossutil stat oss://bucket/file.txtACL : defaultAccept-Ranges : bytesContent-Length : 500000000Content-Type : application/octet-streamEtag : 1C1CE59DC84E49EC89EE6570A3608597-96Last-Modified : 2017-08-01 11:16:27 +0800 CSTOwner : onweridX-Oss-Hash-Crc64ecma : 5376366475988344152X-Oss-Object-Type : MultipartX-Oss-Storage-Class : Standard0.097086(s) elapsed
其中的 X-Oss-Hash-Crc64ecma : 5376366475988344152 就是校验值。
ossutil hash命令还能得到本地文件的CRC64值:
[hadoop@emr-header-1 ~]$ ossutil hash file.txtCRC64-ECMA : 5376366475988344152
将两个CRC值进行比较,就可以知道从本地上传到OSS上的文件是否成功。
但是,上面的方法只对单个文件有用,如果你的文件是放在分布式文件系统,比如E-MapReduce上的HDFS,有需要备份数据到OSS上,用OSSUtil工具可能就太慢了。下面将引入一个新的工具。
E-MapReduce Distcp和DistCheck
DistCp
首先用EMR distcp工具将数据从HDFS导入到OSS上:
hadoop distcp /user/hadoop/terasort-10g oss://emr-bucket/upload
这里的原始目录有10G,文件列表是:
/user/hadoop/terasort-10g/input/part-m-00000
/user/hadoop/terasort-10g/input/part-m-00001
...
/user/hadoop/terasort-10g/input/part-m-00020
将文件列表保持成一个文件 list.txt ,并上传到 HDFS 上 /user/hadoop/list.txt
hadoop fs -put list.txt /user/hadoop/list.txt
下载工具
然后,需要你下载本文附件中的压缩包,解压缩之后可以得到两个文件 streaming.jar 和 crctool。其中crctool是一个可以在本地运行的可执行文件(注意:只能在Linux 64位环境下执行),功能和ossutil的hash功能类似,但它只支持从标准输入中读取数据,比如:
cat file.txt | ./crctool
运行工具
接下去就可以运行DistCheck工具了,具体命令如下:
hadoop jar streaming.jar -Dmapred.reduce.tasks=1 -mapper crctool -file crctool -input /user/hadoop/list.txt -output /user/hadoop/distcheck-out
查看结果
查看工具输出的结果:
[hadoop@emr-header-1 ~]$ hadoop fs -cat /user/hadoop/distcheck-out/part-00000hdfs://emr-header-1:9000/user/hadoop/terasort-10g/input/part-m-00000: 5376366475988344152hdfs://emr-header-1:9000/user/hadoop/terasort-10g/input/part-m-00001: 11439160807767203705hdfs://emr-header-1:9000/user/hadoop/terasort-10g/input/part-m-00002: 2122411653175000878hdfs://emr-header-1:9000/user/hadoop/terasort-10g/input/part-m-00003: 7064261157479130820...
这是HDFS上文件的CRC值,可以和OSS上的文件做比较:
[hadoop@emr-header-1 ~]$ hadoop fs -ls oss://emr-bucket/upload/terasort-10g/input |grep part | awk '{print $6}' | xargs -L1 ./ossutil stat | grep Crc64X-Oss-Hash-Crc64ecma : 5376366475988344152X-Oss-Hash-Crc64ecma : 11439160807767203705X-Oss-Hash-Crc64ecma : 2122411653175000878X-Oss-Hash-Crc64ecma : 7064261157479130820...
原文地址
- E-MapReduce HDFS文件快速CRC校验工具介绍
- CRC校验在线工具
- CRC校验介绍
- MapReduce 和 HDFS介绍
- hdfs文件校验 hdfs fsck
- 使用crc校验方法 校验文件
- HADOOP中的CRC数据校验文件
- WINRAR -- CRC校验失败,文件被破坏
- 对文件或数据进行CRC校验
- java计算文件的CRC校验值
- HADOOP中的CRC数据校验文件
- CRC校验
- CRC校验
- crc校验
- CRC校验
- CRC校验
- crc校验
- CRC校验
- 分享一个好用的桌面日程软件——desktopca
- java基础知识精华(1)
- js判断两个日期是否相等的方法
- HTML中background-repeat 重复背景图属性的的作用
- yii2使用composer安装出错,github授权问题
- E-MapReduce HDFS文件快速CRC校验工具介绍
- hdu6060-思维&搜索&好题-RXD and dividing
- 2017 Multi-University Training Contest
- 使用训练好的googlenet caffemodel进行图片分类
- js 原生常用操作
- Keepalived系列—服务器安装与配置
- CSS中overflow属性介绍
- YII安装
- 8月1日云栖精选夜读:独家:阿里巴巴DevOps落地实践玩法及思路解析