TDH是星環(huán)公司的一款大數(shù)據(jù)組件聚合平臺,類似于CDH硅则,但是TDH將一些組件自己做了封裝癞揉,比如hive重新封裝成了inceptor,公司的TDH測試環(huán)境要下線铣猩,需要備份inceptor中的數(shù)據(jù)揖铜,現(xiàn)在分步做一次記錄:
1.TDH的各個組件都是安裝在docker容器的,命令行無法直接使用达皿,我們需要在客戶端界面下載TDH Client包天吓,包取決于你安裝的組件,意味著你每次添加或者刪除組件都需要重新下載這個包峦椰;
2.將客戶端上傳到TDH隨便一臺服務(wù)器節(jié)點龄寞,解壓;
3.進(jìn)入解壓縮的目錄后汤功,你安裝的各個組件的命令行客戶端便都可以看到了
但是使用還要進(jìn)入對應(yīng)的目錄物邑,不方便,這里需要對客戶端進(jìn)行初始化滔金,執(zhí)行腳本
source /opt/software/TDH-Client/init.sh
注意這里必須使用source執(zhí)行腳本色解,其他方式執(zhí)行不起作用,執(zhí)行完這個腳本我們便可以正常使用TDH的常用命令了餐茵;
4.inceptor的文檔沒具體介紹數(shù)據(jù)導(dǎo)出科阎,但是我們可以類比于hive,畢竟他們算得上是一個東西忿族,但是這里有一個小坑锣笨,hive是可以直接將數(shù)據(jù)導(dǎo)出到本地文件的,inceptor我試了一下道批,會報路徑不匹配的錯誤错英,證明無法直接從hive導(dǎo)出到本地{當(dāng)然也無法直接把本地數(shù)據(jù)直接導(dǎo)入到hive,但是他的文檔里面說是可以屹徘,最初當(dāng)如數(shù)據(jù)時了來回折騰走趋。。。}簿煌,這里我們先獲取我們要導(dǎo)出hive庫以及表名:
beeline -u jdbc:hive2://localhost:10000 -e "use awp;show tables;" > tables2.txt
命令執(zhí)行完畢后vim ?tables2.txt看一下氮唯,發(fā)現(xiàn)格式是這樣的:
一臉懵逼,加上vim玩的也不溜姨伟,沒有什么騷操作惩琉,最后乖乖的show tables;然后復(fù)制到windows夺荒,改巴改巴粘貼到tables.txt,到此表名獲取到了→_→
5.接下來是獲取建表語句瞒渠,基本語句是show create table;在這個基礎(chǔ)上編寫簡單腳本獲取所有的表結(jié)構(gòu)技扼,腳本如下
#!/bin/bash
source /opt/software/TDH-Client/init.sh
#beeline -u jdbc:hive2://localhost:10000 -e "use awp;show tables;" > tables2.txt
cat tables2.txt|while read eachline
do
beeline -u jdbc:hive2://localhost:1000 -e "use awp;show create table $eachline" >>??tablesDDL.txt
echo ";" >> tablesDDL.txt
done
不過輸出的格式請參照獲取表名伍玖,太坑,后來還是將文件下載到windows各種Ctrl +R剿吻,最后搞定窍箍;
6.現(xiàn)在說一下前面說到的inceptor的小坑,由于他不可以直接將數(shù)據(jù)導(dǎo)出到local file丽旅,所以采用迂回的方式椰棘,先將數(shù)據(jù)導(dǎo)出到hdfs,在導(dǎo)出到本地榄笙,這里我們還是簡單編寫一個腳本:
#!/bin/bash
source /opt/software/TDH-Client/init.sh
cat tables2.txt|while read eachline
do
? ? ? ? beeline -u jdbc:hive2://localhost:10000? -e "INSERT OVERWRITE DIRECTORY '/tmp/hive/$eachline' ROW format delimited fields terminated BY '\t' SELECT * from awp.$eachline;"
done
將所有數(shù)據(jù)導(dǎo)出到hdfs的/tmp/hive的目錄下邪狞;
7.最后通過hdfs dfs -get /tmp/hive? /root/? ? ? 將文件下載到服務(wù)器的/root/目錄下,然后將數(shù)據(jù)打包? tar -zcvf /root/hive? 存儲茅撞。