大家好,我是明哥!
最近有小同伴问到 hadoop distcp 的经常使用,对其中的一些细节和容易踩的坑不是很分明,所以当天咱们来看下 hadoop distcp的原理,细节和容易踩的坑。
1.DistCp 概述
咱们知道大数据集群外部都有节点级别和机架级别的容错机制(存储层对应的就是传统的三正本或纠删码机制),但关于一些数据安保性要求更改的场景,比如在金融行业典型的两地三核心场景下,经常有跨区域跨集群灾备的需求,此时就会触及到跨集群的数据同步。
DistCp (distributed copy) 就是一款跨集群的数据同步工具。
DistCp 可以用来做 hdfs 集群外部或集群之间的大规模的数据同步,由于在底层经常使用了 MapReduce 框架会经过多个 mapper来拷贝须要拷贝的文件列表,其性能相比 hdfs dfs -get/put 等经过本地文件系统中转的数据同步打算,要高效极速很多。
同时由于 DistCp 可以跨 hdfs 大版本启动数据同步,且新版本的 DistCp(distcp version 2)相比老版本的DistCp(legacy DistCp,version1.2.1)在很多方面都做了优化和改良,所以大规模的数据同步,不论是集群外部还是集群之间,首选的打算都是DistCp。
很多商业的hdfs数据同步打算,其底层都是原生的 DistCp,比如 cdh 的 bdr 工具,比如 tdh 的backup工具,其原理都是如此。
2.关于集群间数据同步
3.关于开启了 kerberos 安保认证后的数据同步
4.DistCp 的底层上班机制
新版 DistCp 底层有以下组件,其各自的职责如下:
5.DistCp 的关键参数解说
DistCp 提供了多种参数,来控制拷贝义务的各种细节,经常经常使用到的关键参数有 -update, -delete, -overwrite, -m,-bandwidth,-diff,-p,-i 等:
6.易踩的坑 - skipcrccheck
skipcrccheck 的坑-hdfs
skipcrccheck 的坑-hive sql