集群a上hive表資料需同步到集群b上,由於每張表做了日分割槽,傳輸部分日期資料,通過手工方式一一篩選比較複雜,編寫指令碼實現。
#!/bin/sh之後在集群b上建庫建表,執行msck repair table 表名。這步後面再更新到指令碼中。hadoop_cmd="hadoop distcp -update -bandwidth 50"
declare -a dict //宣告字典
dict['talbe1']="/hdfs上table1對應的上層目錄/table1"
dict['talbe2']="/hdfs上table2對應的上層目錄/table2"
start_day="20190303"
end_day="20190509"
for table in $(echo $) //遍歷字典所有key值,即表名
dohdfs_path=$(echo $) //賦值每張表對應的hdfs路徑
start_date=`date -d "$start_day" +%y%m%d` //獲取日期變數
end_date=`date -d "$end_day" +%y%m%d`
while [[ $start_date < $end_date ]]
dohadoop distcp -update -bandwith 15 $hdfs_src$hdfs_path/dt=$start_date $hdfs_dst$hdfs_path/dt=$start_date
start_date=`date -d "+1 day $start_date" +%y%m%d`
done
done
hive資料遷移
資料遷移指令碼 1 在原集群上建立,並設定相應許可權 hadoop fs mkdir tmp hive export 2 生成匯出指令碼 hive e use fangyc show tables awk sed s g export.hql fangyc 是資料庫名,根據實際情況修改 3 手工匯出...
hive資料遷移
網路互通的兩個hadoop集群中,可執行如下命令,將nn1節點所在集群a上目錄a.dir拷貝到nn2節點所在集群b目的b.dir上 hadoop distcp i hdfs nn1 8020 a.dir hdfs nn2 8020 b.dir詳情參考 設定預設需要匯出的hive資料庫為default...
遷移hive資料
新集群的資料遷移到老集群,往往會遇到很多問題 1.小檔案多 2.老集群效能比較差 3.資料量大 使用資料遷移工具nifi 該工具的特點是輕量,對小檔案遷移支援度高,大檔案遷移慢 遇到的問題 1.曾經在老集群寫spark程式合併小檔案,但老集群效能比較低,程式跑了一晚上都沒有合併完成乙個月 2.將小集...