因为datax工具本身无法传入认证参数,所以若想在TBDS上使用datax同步数据则需要关闭相应的服务认证。
此文以mysql同步至hive举例
1.首先关闭hdfs认证,在8088界面修改HDFS配置
hadoop.security.authentication tbds 改成simple
2.关闭hive认证,在8088界面修改Hive配置
Enable Ranger for HIVE 去掉勾或者ranger-hive-plugin-enabled Yes改成No
3.停止HDFS服务,再启动HDFS服务(注意不要直接重启)
4.停止HIVE服务,再启动HIVE服务
5.对于HDFS和HIVE的配置更改后,有些服务也是需要重启的,对关联的服务进行重启
6.服务重启后,使用hadoop命令测试是否不需要认证即可访问
7.下载datax工具,并解压到TBDS任意一台服务器上,建议是portal节点
http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
8.创建datax数据同步配置文件mysql2hive.json
cat datax/job/mysql2hive.json
{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "column": ["id","username"], "connection": [ { "jdbcUrl": ["jdbc:mysql://tbds-x-x-x-x:3306/easytest"], "table": ["target_user"] } ], "password": "xxxx", "username": "root", "where": "" } }, "writer": { "name": "hdfswriter", "parameter": { "column": [ {"name":"id","type":"string"} {"name":"username","type":"string"} ], "compress": "",##为空则不压缩 "defaultFS": "hdfs://tbds-x-x-x-x:8020", "fieldDelimiter": "t", ###此处的分隔符一定要和建hive表时设置的分隔符一致,否则会导致数据为空 "fileName": "target_user", "fileType": "text",###根据存储的格式有text和orc "path": "/apps/hive/warehouse/easy.db/mysql2hive",###此路径需要提前建好,即需要提前建好hive表 "writeMode": "append" } } } ], "setting": { "speed": { "channel": "1" } } } }
9.建hive表
beeline -u jdbc:hive2://tbds-x-x-x-x:10000 -nadmin -pxxx
create table mysql3hive ( id int, username string ) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
10.运行datax同步数据
因为将认证关闭了,所以使用hdfs用户运行工具
su hdfs
python datax.py ../job/mysql2hive.json
11.查看数据及数据文件