1. 程式人生 > >hadoop叢集間資料遷移工具

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