互联网技术 / 互联网资讯 · 2024年1月10日

Hadoop数据迁移的使用方法详解

一般用法 Hive数据迁移 ExpoRt/IMpoRt方式 同步元数据 总结 数据迁移使用场景 冷热集群数据分类存储,详见上述描述. 集群数据整体搬迁.当公司的业务迅速的发展,导致当前的服务器数量资源出现临时紧张的时候,为了更高效的利用资源,会将原A机房数据整体迁移到B机房的,原因可能是B机房机器多,而且B机房本身开销较A机房成本低些等. 数据的准实时同步.数据的准实时同步与上一点的不同在于第二点可以一次性操作解决,而准实时同步需要定期同步,而且要做到周期内数据基本完全一致.数据准实时同步的目的在于数据的双备份可用,比如某天A集群突然宣告不允许再使用了,此时可以将线上使用集群直接切向B的同步集群,因为B集群实时同步A集群数据,拥有完全一致的真实数据和元数据信息,所以对于业务方使用而言是不会受到任何影响的. hadoop 集群间拷贝数据:

需要将数据源集群的/etc/hosts中的hadoop节点拷贝到目标集群所有节点的/etc/hosts中,保证新集群所有节点可以PING同老集群所有节点;

hadoop disTCP hdfs://qcloud-hadoop02:9000/Hive/waRehouse/HM2.db/helpeR/dt=2018-10-17 /data

说明:我们这里是Apache hadoop 到cdh数据迁移,这个命令仍然是可以用的。

一般用法

1、迁移之前需要把两个集群的所有节点都互通/etc/hosts文件(重要,包括各个数据节点)

2、配置当前集群主节点到老集群各个节点的SSh免密登陆(可选)

3、由于老集群是HDP2.7.1,新集群是cdh5.8.5,版本不同,不能用hdfs协议直接拷贝,需要用http协议 即不能用:disTCP hdfs://sRc:50070/foo /User而要用:disTCP hFTP://sRc:50070/foo /User最终的命令为:

hadoop disTCP hFTP://192.168.57.73:50070/Hive3/20171008 /Hive3/

4、如果两个集群的版本相同,则可以使用hdfs协议,命令如下:

hadoop disTCP hdfs://naMEnodeIP:9000/foo hdfs://naMEnodeIP:9000/foo

5、由于迁移数据运行了MR任务,对集群资源有一定的消耗

DisTCP优势特性

1 带宽限流

DisTCP是支持带宽限流的,使用者可以通过命令参数bandwidth来为程序进行限流,原理类似于HDFS中数据balance程序的限流.

2 增量数据同步

对于增量数据同步的需求,在DisTCP中也得到了很好的实现.通过update,append和diFF2个参数能很好的解决.官方的参数使用说明:

update: update taRget, copying only MiSSing files oR diRecTories append: Reuse existing data in taRget files and append new data to theM if poSSible. DiFF: use snapshot diFF report to identify the difference between souRce and taRget.

第一个参数,解决了新增文件目录的同步;第二参数,解决已存在文件的增量更新同步;第三个参数解决删除或重命名文件的同步.

这里需要额外解释一下diFF的使用需要设置2个不同时间的snapshot进行对比,产生相应的DiFFInfo.在获取快照文件的变化时,只会选择出DELETE和RENAME这2种类型的变化信息.

相同hadoop版本同步数据

hadoop disTCP -skiPCRccheck -update -M 20 hdfs://dchadoop002.dx:8020/User/dc/waRehouse/test /User/dc/waRehouse/test

不同hadoop版本同步数据

hadoop disTCP -skiPCRccheck -update -M 20 hFTP://ns1/User/test /User/dc/test

参数:

-M 表示并发数 -skiPCRccheck 跳过hdfs校验 -update 更新文件

理源路径的方式与默认值不同,有些细节需要注意。这里给出一些 -update和 -OVeRwRITe的例子。考虑从/souRce/fiRst/ 和 /souRce/second/ 到 /taRget/的拷贝,源路径包括:

hdfs://nn1:8020/souRce/fiRst/1 hdfs://nn1:8020/souRce/fiRst/2 hdfs://nn1:8020/souRce/second/10 hdfs://nn1:8020/souRce/second/20

当不使用-update或-OVeRwRITe选项时,DisTCP默认会在/taRget下创建/fiRst和/second目录。因此将在/taRget之前先创建目录。

从而:

hadoop disTCP hdfs://nn1:8020/souRce/fiRst hdfs://nn1:8020/souRce/second hdfs://nn2:8020/taRget

上述命令将在/taRget中生成以下内容:

hdfs://nn2:8020/taRget/fiRst/1 hdfs://nn2:8020/taRget/fiRst/2 hdfs://nn2:8020/taRget/second/10 hdfs://nn2:8020/taRget/second/20

当指定-update或-OVeRwRITe时,源目录的内容将复制到目标,而不是源目录本身。

从而:

disTCP -update hdfs://nn1:8020/souRce/fiRst hdfs://nn1:8020/souRce/second hdfs://nn2:8020/taRget

上述命令将在/ taRget中生成以下内容:

hdfs://nn2:8020/taRget/1 hdfs://nn2:8020/taRget/2 hdfs://nn2:8020/taRget/10 hdfs://nn2:8020/taRget/20

如果设置了这两个选项,每个源目录的内容都会和目标目录的内容做比较。如果两个源文件夹都包含一个具有相同名称的文件(例如“0”),那么这两个源文件将在目的地映射到同一个目录:/taRget/0。DisTCP碰到这类冲突的情况会终止操作并退出。现在,请考虑以下复制操作:

disTCP hdfs://nn1:8020/souRce/fiRst hdfs://nn1:8020/souRce/second hdfs://nn2:8020/taRget

其中源路径/大小:

hdfs://nn1:8020/souRce/fiRst/1 32 hdfs://nn1:8020/souRce/fiRst/2 32 hdfs://nn1:8020/souRce/second/10 64 hdfs://nn1:8020/souRce/second/20 32

和目的路径/大小:

hdfs://nn2:8020/taRget/1 32 hdfs://nn2:8020/taRget/10 32 hdfs://nn2:8020/taRget/20 64

会产生:

hdfs://nn2:8020/taRget/1 32 hdfs://nn2:8020/taRget/2 32 hdfs://nn2:8020/taRget/10 64 hdfs://nn2:8020/taRget/20 32

文件“1”因为文件长度和内容匹配而被跳过。文件“2”被复制,因为它不存在/taRget中。因为目标文件内容与源文件内容不匹配,文件“10”和文件“20”被覆盖。如果使用-update 选项,文件“1”也被覆盖。

3 高效的性能

执行的分布式特性

高效的MR组件

Hive数据迁移

1.Hive数据expoRt到hdfs

expoRt table HM2.helpeR to ””/tMp/expoRt/HM2/helpeR””;

如下:

Hive> expoRt table HM2.helpeR to ””/tMp/expoRt/HM2/helpeR””; Copying data fRoM file:/app/data/Hive/tMp/scRatchdiR/ce4c15d9-6875-40ed-add4-deedd75a4a92/Hive_2018-10-26_10-58-21_552_8465737459112285307-1/-local-10000/_Metadata Copying file: file:/app/data/Hive/tMp/scRatchdiR/ce4c15d9-6875-40ed-add4-deedd75a4a92/Hive_2018-10-26_10-58-21_552_8465737459112285307-1/-local-10000/_Metadata Copying data fRoM hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=13/MSGtype=helpeR Copying data fRoM hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00001 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00003 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00004 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00005 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00006 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00007 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00008 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00009 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00010 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00011 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00012 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00013 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00014 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-12/houR=14/MSGtype=helpeR/paRt-M-00015 Copying data fRoM hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=13/MSGtype=helpeR Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=13/MSGtype=helpeR/paRt-M-00002 Copying data fRoM hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=14/MSGtype=helpeR Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=14/MSGtype=helpeR/paRt-M-00000 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=14/MSGtype=helpeR/paRt-M-00002 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=14/MSGtype=helpeR/paRt-M-00006 Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-13/houR=14/MSGtype=helpeR/paRt-M-00016 Copying data fRoM hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-22/houR=08/MSGtype=helpeR Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-22/houR=08/MSGtype=helpeR/paRt-M-00006 Copying data fRoM hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-22/houR=09/MSGtype=helpeR Copying file: hdfs://naMeseR/Hive/waRehouse/HM2.db/helpeR/dt=2018-06-22/houR=09/MSGtype=helpeR/paRt-M-00000 OK TiMe taken: 1.52 seconds

2.集群间数据复制

需要保证原始集群目录有读权限,

OpenMagic API

Need more than content? Move into the product flow.

If you are here for model access, pricing, developer docs, or the future API console, the dedicated product path now lives on api.openmagic.ai.