天天看點

hadoop 叢集 跨 版本資料遷移

忙着做hadoop 1.x  到 2.x 的資料遷移. 

hadoop 系統提供 了一個 指令  distcp  可以跨版本 遷移資料.  

具體的指令格式:  在新的hadoop 版本上執行 . 

兩個叢集間的所有的主機hosts 檔案裡要把對方的叢集節點的主機名配置上去. 因為是mapreduce 作業,不然會job 失敗. 

在 hadoop 2.x 上執行 .

hadoop  distcp  hftp://hadoop1.x-namenode:50070/xxxx/xxx/xxx*    /path-to-hadoop2.x/xxx/xxx

注意這裡用的hftp 協定   ,不是hdfs 協定, hdfs 協定兩邊不通的.

如果你 hadoop 2.x  是預設安裝的 還有個地方需要修改 , 不然會封包件校驗 checksum 報錯. 無法複制. 

hadoop  1.x  的檔案校驗用的crc32  

hadoop 2.x  的檔案校驗用的CRC32C  兩個版本的hadoop 的校驗方法不同,會報錯.無法遷移資料. 

在hadoop  2.x  hdfs-site.xml 裡增加 一個配置. 

<property>

<name>dfs.checksum.type</name>

<value>CRC32</value>

<description>

    when  transfer data from  hadoop 1.x to hadoop 2.x  the data block  checksum  in hadoop 1.x is crc32

      and  hadoop 2.x is crc32c .   transfer data will fail .

</description>

</property>

然後就ok 了.  

繼續閱讀