公司hadoop集群遷移,需要遷移所有的表結構及比較重要的表的數據(跨雲服務機房,源廣州機房,目標北京機房)
1、遷移表結構
1)、老hive中導出表結構
hive -e "use db;show tables;" > tables.txt
#!/bin/bash cat tables.txt |while read eachline do hive -e "use klwarehouse;show create table $eachline" >>tablesDDL.txt echo ";" >> tablesDDL.txt done
2)、新hive中導入表結構
hive -f tableDDL.txt
對了,執行之前要先建立db,然后在tableDDL.txt前面加上use db;
2、遷移表數據
目前使用的方案是一個一個將表數據導出到HDFS,接着下載到雲主機中,壓縮,外網傳到新的hive集群網絡中的主機中,解壓,上傳至HDFS,上傳至HIVE
1)、將HIVE表數據導出至HDFS
hdfs dfs -mkdir /tmp/hive-export
use db; export table 表名 to /tmp/hive-export
2)、將HDFS數據下載至主機中
hdfs dfs -get /tmp/hive-export/
3)、將數據壓縮
tar -zcvf hivetable1.tar.gz hive-export
4)、將數據發送至目標hive集群的內網主機中
scp hivetable1.tar.gz root@x.x.x.x:/data
5)、解壓數據
tar -zxvf hivetable1.tar.gz
6)、將數據上傳至HDFS中
hdfs dfs -put hive-export/ /tmp/hive-export
7)、將HDFS數據上傳至Hive表中
use db; import table 表名 from /tmp/hive-export