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

相關文章
相關標籤/搜索