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