hadoop集群间数据迁移工具

背景

    当前比较流行的hdfs间数据迁移工具有hadoop默认提供的distcp,阿里开源的DataX,这些工具能够满足常规的大部分需求,但是当时碰到hadoop版本不一致、keberos授权等场景时就行不通了。针对这些特殊的应用场景和实际需求我就构思并实现了HdfsDataExchanger这种实现方案。通过在一台可以访问两边hadoop集群的中转机上部署HdfsDataExchanger就可以实现将一个集群的数据迁移到另一个集群。HdfsDataExchanger提供单机多线程数据迁移,不支持分布式并行执行。

功能

  1. 不同版本的hdfs间文件迁移
  2. 本地文件系统与hdfs间文件迁移

不同文件系统间数据交换

原理

  1. 抽象一套hdfs文件操作接口。
  2. 使用源集群和目标集群对应版本的hadoop分别实现接口。
  3. 使用jetty的WebAppClassLoader分别加载两套(源和目标)hdfs相关的jar,并创建对应的FileSystem。
  4. 使用源FileSystem读取数据到缓冲区,然后使用目标FileSystem将缓冲区的数据写入到目标文件。
  5. 单机多线程执行,每个线程都以文件为单位进行迁移,完成之后再拿取下一个待迁移的文件。

实现原理

Github

https://github.com/SebastinHe/HdfsDataExchanger

猜你喜欢

转载自my.oschina.net/u/3987818/blog/2222931