hadoop集群间数据迁移工具

背景

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

功能

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

不一样文件系统间数据交换

原理

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

实现原理

Github

https://github.com/SebastinHe/HdfsDataExchangergithub

相关文章
相关标签/搜索