更新时间:2024-10-17 GMT+08:00

DataX对接OBS

概述

DataX是一个数据同步框架,实现了包括MySQL、SQL Server、Oracle、PostgreSQL、HDFS、Hive、HBase、OTS、ODPS等各种异构数据源之间高效的数据同步功能。OBS在大数据场景中可以替代Hadoop系统中的HDFS服务,本文介绍DataX如何对接OBS。

对接步骤

  1. 下载datax源码,以发布版本datax_v202308为例下载地址
  2. 修改编译datax。

    1. 升级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>
    2. 编译datax。
    3. 执行以下命令,在datax源码根目录/target目录下生成datax.tar.gz压缩文件。

      mvn -U clean package assembly:assembly -Dmaven.test.skip=true

  3. 安装datax。

    1. 解压datax.tar.gz到/opt/datax目录。
    2. 在Github下载hadoop-huaweicloud:下载地址。(建议使用hadoop 2.8.3版本下最新版本的hadoop-huaweicloud版本,例如hadoop-huaweicloud-2.8.3-hw-53.8,以最新版本为准)
    3. 将上述下载的jar包放入/opt/datax/plugin/writer/hdfswriter/libs和/opt/datax/plugin/reader/hdfsreader/libs。

  4. 验证是否对接成功。

    示例:以txtfilereader为源端,以OBS为目的端。

    1. 创建作业配置文件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"
                              }
                          }
                      }
                  }
              ]
          }
      }
    2. 启动datax。

      python /opt/datax/bin/datax.py file2obs.json