hadoop叢集間資料遷移工具
阿新 • • 發佈:2018-11-25
背景
當前比較流行的hdfs間資料遷移工具有hadoop預設提供的distcp,阿里開源的DataX,這些工具能夠滿足常規的大部分需求,但是當時碰到hadoop版本不一致、keberos授權等場景時就行不通了。針對這些特殊的應用場景和實際需求我就構思並實現了HdfsDataExchanger這種實現方案。通過在一臺可以訪問兩邊hadoop叢集的中轉機上部署HdfsDataExchanger就可以實現將一個叢集的資料遷移到另一個叢集。HdfsDataExchanger提供單機多執行緒資料遷移,不支援分散式並行執行。
功能
- 不同版本的hdfs間檔案遷移
- 本地檔案系統與hdfs間檔案遷移
原理
- 抽象一套hdfs檔案操作介面。
- 使用源叢集和目標叢集對應版本的hadoop分別實現介面。
- 使用jetty的WebAppClassLoader分別載入兩套(源和目標)hdfs相關的jar,並建立對應的FileSystem。
- 使用源FileSystem讀取資料到緩衝區,然後使用目標FileSystem將緩衝區的資料寫入到目標檔案。
- 單機多執行緒執行,每個執行緒都以檔案為單位進行遷移,完成之後再拿取下一個待遷移的檔案。
Github
https://github.com/SebastinHe/HdfsDataExchanger