TDH是星环公司的一款大数据组件聚合平台,类似于CDH,但是TDH将一些组件自己做了封装,比如hive重新封装成了inceptor,公司的TDH测试环境要下线,需要备份inceptor中的数据,现在分步做一次记录:
1.TDH的各个组件都是安装在docker容器的,命令行无法直接使用,我们需要在客户端界面下载TDH Client包,包取决于你安装的组件,意味着你每次添加或者删除组件都需要重新下载这个包;
2.将客户端上传到TDH随便一台服务器节点,解压;
3.进入解压缩的目录后,你安装的各个组件的命令行客户端便都可以看到了
但是使用还要进入对应的目录,不方便,这里需要对客户端进行初始化,执行脚本
source /opt/software/TDH-Client/init.sh
注意这里必须使用source执行脚本,其他方式执行不起作用,执行完这个脚本我们便可以正常使用TDH的常用命令了;
4.inceptor的文档没具体介绍数据导出,但是我们可以类比于hive,毕竟他们算得上是一个东西,但是这里有一个小坑,hive是可以直接将数据导出到本地文件的,inceptor我试了一下,会报路径不匹配的错误,证明无法直接从hive导出到本地{当然也无法直接把本地数据直接导入到hive,但是他的文档里面说是可以,最初当如数据时了来回折腾。。。},这里我们先获取我们要导出hive库以及表名:
beeline -u jdbc:hive2://localhost:10000 -e "use awp;show tables;" > tables2.txt
命令执行完毕后vim tables2.txt看一下,发现格式是这样的:
一脸懵逼,加上vim玩的也不溜,没有什么骚操作,最后乖乖的show tables;然后复制到windows,改巴改巴粘贴到tables.txt,到此表名获取到了→_→
5.接下来是获取建表语句,基本语句是show create table;在这个基础上编写简单脚本获取所有的表结构,脚本如下
#!/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.现在说一下前面说到的inceptor的小坑,由于他不可以直接将数据导出到local file,所以采用迂回的方式,先将数据导出到hdfs,在导出到本地,这里我们还是简单编写一个脚本:
#!/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
将所有数据导出到hdfs的/tmp/hive的目录下;
7.最后通过hdfs dfs -get /tmp/hive /root/ 将文件下载到服务器的/root/目录下,然后将数据打包 tar -zcvf /root/hive 存储。