hbase跨集羣遷移數據(實踐檢驗版)

--數據遷移
步驟0:清理目標集羣
    1>刪除目標集羣上要導入的表
        1.1>進入命令行 
        $HBASE_HOME/bin/hbase shell
        1.2>下線表
        disable '{tableName}'
        1.3>刪除表
        enable '{tableName}'
    2>檢查目標集羣上的線程數
        $HADOP_HOME/etc/hadoop/hdfs-site.xml 如下配置,沒有則要加入重啓
        <property>
         <name>dfs.datanode.max.transfer.threads</name>
         <value>65536</value>
        </property>
    3>停止HBASE目標集羣上的所有線程
        1.1>master上執行 
        $HBASE_HOME/bin/hbase-daemon.sh stop master
        1.2>regionserver上執行
        $HBASE_HOME/bin/hbase-daemon.sh stop regionserver
步驟1:在舊集羣上創建快照
    1>進入命令行 
    $HBASE_HOME/bin/hbase shell
    2>創建快照
    hbase>snapshot '{tableName}', 'snapshot_{tableName}', {SKIP_FLUSH => true}
    3>查看快照
    hbase>list_snapshots
    *>如果出錯可用以下命令 刪除快照
    hbase>delete_snapshot 'snapshot_{tableName}'
步驟2:在舊集羣上啓動mapreduce任務將快照複製到新集羣
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.snapshot.ExportSnapshot -Dmapreduce.map.memory.mb=4096 -Dmapreduce.map.java.opts=-Xmx4096m -snapshot 'snapshot_{tableName}' -copy-to hdfs://{newHdfsMasterIp}:9000/hbase/ -mappers {node的個數}
    *問題處理:
    1>The auxService:mapreduce_shuffle does not exist.
        /opt/hadoop-2.7.5/etc/hadoop/yarn-site.xml文件中添加一下
        <property>
          <name>yarn.nodemanager.aux-services</name>
          <value>mapreduce_shuffle</value>
        </property>
        執行distcp命令複製到hadoop各節點上(namenode+datanode),並且重啓
    2>Error: Java heap space
        修改 -Dmapreduce.map.memory.mb=4096 -Dmapreduce.map.java.opts=-Xmx4096m 加大內存
        
    3>Error: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.hdfs.server.namenode.LeaseExpiredException): No lease o
        參加步驟0的2>檢查目標集羣上的線程數
    
    4>ERROR [VerifySnapshot-pool1-t5] snapshot.SnapshotReferenceUtil: Can't find hfile:
        參加步驟0的3>HBASE目標集羣master線程會刪除TTL過期hfile數據,應該先停止

步驟3、在新集羣上恢復快照
    0>啓動集羣
        0.1>master上執行 
        $HBASE_HOME/bin/hbase-daemon.sh start master
        0.2>regionserver上執行
        $HBASE_HOME/bin/hbase-daemon.sh start regionserver
    1>進入命令行 
        $HBASE_HOME/bin/hbase shell
    2>如果目標表存在則刪除表
        參加步驟0的1>
    2>恢復快照
        hbase>clone_snapshot 'snapshot_{tableName}', '{tableName}'
    3>檢查數據
        enable '{tableName}'
        hbase>scan '{tableName}',{LIMIT=>5}

發佈了55 篇原創文章 · 獲贊 14 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章