資料遷移distcp方案
根據遷移的實際情況,由於資料量大、重要、迫切性,因此實施方案每一步都需嚴謹執行,並且當出錯時清楚缺少的資料和補救的辦法。
大的步驟分為3步,即export、distcp、import。
在export匯出資料時,以時間戳作為引數,如將三個月的資料為乙個單位匯出,出錯時,重複執行。命令案例:
sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.export ship_historical_trace /ship_historical_trace0 1 0 1514736000000
注釋:1514736000000
為2018-01-01 00:00:00的時間戳
sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.export ship_historical_trace /ship_historical_trace1 1 1514736000000
1522425600000
注釋:1514736000000
為 2018-01-01 00:00:00的時間戳
1522425600000
為 2018-03-31 00:00:00的時間戳
………在執行distcp拷貝檔案時,首先確定以下幾點:
(1)首先確保兩個集群的mapreduce計算框架沒問題
(2)開通目標集群所有機器到源集群namenode節點的網路
(3)版本差距不是很大時,用hdfs協議;版本差距較大時,用hftp協議
(4)在ambari在的節點上使用命令,只有該節點可以免密登入其他機器
(5)檔案拷貝的路徑需要寫namenode存在節點,因為只用它開啟了rpc埠
(6)在目標集群的ambari節點執行命令
命令案例:
sudo -u hdfs hadoop distcp -i hdfs: hdfs:
sudo -u hdfs hadoop distcp -i hdfs: hdfs:
……….
import匯入資料的效能:
原資料表已存在key,不會修改
原資料沒有資料,做插入操作
命令案例:
sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.import ship_historical_trace /ship_historical_trace0
sudo -u hdfs hbase org.apache.hadoop.hbase.mapreduce.import ship_historical_trace /ship_historical_trace1
………根據yarn或mapreduce的節點埠8088檢視job任務的進度。根據job的id得知哪些操作失敗,將操作失敗命令做再次嘗試。
根據namenode節點埠50070檢視具體檔案的個數情況,粗略判斷是否成功。
使用命令檢視hdfs具體資料夾大小
sudo -u hdfs hadoop fs -du –h /ship_historical_trace0
在資料夾拷貝過程中,單個檔案丟失時,可單獨拷貝該檔案:
sudo -u hdfs hadoop distcp -i hdfs:/part-m-00000 hdfs:ship_historical_trace/part-m-00000
操作成功後,使用hbase shell命令隨機檢視兩集群幾組資料,進行比較
檔案大小
export用時
distcp用時
import用時
632.7g
24小時 13
小時(跨集群)
(期間磁碟滿了,操作失敗)
44.53 gb
(沒做)
615秒(集群內)
1小時8分(跨集群) 4
小時
Hadoop資料遷移 distcp 工具
hadoop distcp 備份hdfs檔案,並行複製大量資料。1.同版本集群之間複製 hadoop distcp hdfs namenode1 src hdfs namenode2 dist這將從第乙個集群中複製 src目錄下的內容複製到第二個集群中的 dist目錄下 預設情況下,distcp會跳...
distcp集群遷移問題總結
1.源集群準備一台用於提交資料拷貝任務的機器,要求可以連線目標大資料集群且安裝json命令 尋找 datanode的機器 且驗證一下上面安裝了json的命令 hdfs dfs dipc.client.fallback to auth allowed true ls hdfs namenode 802...
集群間資料遷移工具distcp用法介紹
最近公司集群切換,需要將老集群中的資料遷移到新集群上,了解到了distcp這個工具。借助它很好的完成了遷移任務。基礎用法如下 hadoop distcp hdfs cluster1 9000 stat hdfs cluster2 9000 這裡就是把cluster1中的stat拷貝到cluster2...