hadoop 叢集 跨 版本資料遷移

hackeruncle發表於2016-03-22
忙著做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 了.  

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30089851/viewspace-2062010/,如需轉載,請註明出處,否則將追究法律責任。

相關文章