DataX对接OBS
概述
DataX是一个数据同步框架,实现了包括MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS等各种异构数据源之间高效的数据同步功能。OBS在大数据场景中可以替代Hadoop系统中的HDFS服务,本文介绍DataX如何对接OBS。
对接步骤
- 下载datax源码,以发布版本datax_v202308为例:下载地址。
- 修改编译datax。
- 升级hdfsreader和hdfswriter模块依赖的hadoop版本,以升级到2.8.3版本为例。
修改datax\hdfswriter\pom.xml和datax\hdfsreader\pom.xml文件配置:
<properties> <!--由2.7.1升级到2.8.3--> <hadoop.version>2.8.3</hadoop.version> </properties>
- 编译datax。
- 执行以下命令,在datax源码根目录/target目录下生成datax.tar.gz压缩文件。
mvn -U clean package assembly:assembly -Dmaven.test.skip=true
- 升级hdfsreader和hdfswriter模块依赖的hadoop版本,以升级到2.8.3版本为例。
- 安装datax。
- 解压datax.tar.gz到/opt/datax目录。
- 在Github下载hadoop-huaweicloud:下载地址。(建议使用hadoop 2.8.3版本下最新版本的hadoop-huaweicloud版本,例如hadoop-huaweicloud-2.8.3-hw-53.8,以最新版本为准)
- 将上述下载的jar包放入/opt/datax/plugin/writer/hdfswriter/libs和/opt/datax/plugin/reader/hdfsreader/libs。
- 验证是否对接成功。
示例:以txtfilereader为源端,以OBS为目的端。
- 创建作业配置文件file2obs.json。
{ "setting":{ }, "job":{ "setting":{ "speed":{ "channel":2 } }, "content":[ { "reader":{ "name":"txtfilereader", "parameter":{ "path":[ "/opt/test.txt" ], "encoding":"UTF-8", "column":[ { "index":0, "type":"STRING" }, { "index":1, "type":"STRING" } ], "fieldDelimiter":"\t" } }, "writer":{ "name":"hdfswriter", "parameter":{ "defaultFS":"obs://obs-bucket",##obs桶 "fileType":"text", "path":"/test",##obs桶中的路径 "fileName":"test", "column":[ { "name":"col1", "type":"STRING" }, { "name":"col2", "type":"STRING" } ], "writeMode":"append", "fieldDelimiter":"\t", "hadoopConfig":{##此部分hadoop配置必须添加 "fs.obs.impl":"org.apache.hadoop.fs.obs.OBSFileSystem", "fs.obs.access.key":"可访问OBS的ak", "fs.obs.secret.key":"可访问OBS的sk", "fs.obs.endpoint":"OBS桶所在region" } } } } ] } }
- 启动datax。
- 创建作业配置文件file2obs.json。