HDFS EC 对 distcp 的影响

distcp 在拷贝一个文件结束后,会对比源文件和目标文件的校验值,判断两者是否一致。其中文件的校验值通过 FileSystem.getFileChecksum(Path) API 获取,该 API 本质上是一个针对 DataNode 的 RPC 调用,需要 DataNode 高度配合才能完成。

Hadoop 3.x 引入 EC 后,由于 EC 文件和副本文件的布局(layout)不同,所以,即使是同一个文件,在分别使用副本模式和 EC 模式保存时,也会得到两个不同的校验值,导致对比失败,进而 distcp 出错。

要解决这个问题,有两个方案:

方案一

跳过源文件和目标文件的校验值对比,添加如下参数:-skipcrccheck,这个方案非常简单。

方案二

client 在获取文件的校验值时,指定使用 CRC 模式进行获取(默认使用 MD5 模式),这两个模式的区别是:

  1. MD5 模式本质上并不是针对文件内容的校验,而是针对 meta 文件内容的校验,而同一个文件在副本和 EC 两种情况下,会生成不同个数、不同大小的 meta 文件,这时候得到的校验值是不同的。
  2. CRC 模式本质上是针对文件内容的校验,同一个文件,无论是以副本形式保存,还是以 EC 形式保存,只要文件的内容相同,那么校验值就是一致的。

CRC 模式是 HDFS 的一个新特性,相关的 patch 主要是 HDFS-13056. Expose file-level composite CRCs in HDFS which are comparable across different instances/layouts,这个 patch 规模较大.

需要特别强调两点:

  1. 对同样一个文件,MD5 和 CRC 这两种模式得到的校验值是不同的。
  2. 无论哪种校验模式,都需要客户端和 DN 一起配合使用,特别的,对于本次新引入的 CRC 模式,如果 DN 不支持,那么最终将导致客户端异常退出。

如果需要在 2.8.5 和 3.2.1 集群之间进行副本文件和 EC 文件的 distcp,那么需要启用 CRC 模式,那么需要:

  1. 升级所有计算集群节点的 hadoop 客户端版本,并添加如下客户端配置,指定使用 CRC 校验模式:
<property>
    <name>dfs.checksum.combine.mode</name>
    <value>COMPOSITE_CRC</value>
</property>
  1. 升级 2.8.5 HDFS 集群的所有 DataNode 到最新版本,目的:确保 2.5 的 DN 支持 CRC 校验模式。

关于 skipcrcheck 的建议

HDFS 本身在读、写文件的过程中有完整的校验策略,能够保证:

  • distcp 从源文件读取到内存中的数据一定是准确的。
  • distcp 从内存写入到目标文件中的数据一定是准确的。
  • distcp 默认会对比源文件和目标文件的长度是否一致。

distcp 本质上就是一读一写,现在我们已经分别保证了读、写的准确性,那么简单推理可知,只要 distcp 本身没有 bug,那么最终源文件和目标文件肯定是一致的。在这种情况下,使用 -skipcrccheck 影响不大。

©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,546评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,224评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,911评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,737评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,753评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,598评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,338评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,249评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,696评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,888评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,013评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,731评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,348评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,929评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,048评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,203评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,960评论 2 355

推荐阅读更多精彩内容

  • Zookeeper用于集群主备切换。 YARN让集群具备更好的扩展性。 Spark没有存储能力。 Spark的Ma...
    Yobhel阅读 7,277评论 0 34
  • 写在前面 我自己一直比较喜欢大数据这个方向的工作,虽然自己也在大数据相关的岗位上工作了小两年,但一直没有系统的学习...
    大数据学习宝典阅读 506评论 0 2
  • 1 HDFS 概述 1.1 HDFS 产出背景及定义 随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分...
    djm猿阅读 393评论 0 0
  • 一 HDFS简介 HDFS产出背景以及定义2.HDFS优缺点3. HDFS组成架构4. HDFS文件块大小 二 H...
    十丈_红尘阅读 769评论 0 1
  • 我是黑夜里大雨纷飞的人啊 1 “又到一年六月,有人笑有人哭,有人欢乐有人忧愁,有人惊喜有人失落,有的觉得收获满满有...
    陌忘宇阅读 8,536评论 28 53