大数据 DataX 详细安装教程

news2024/12/23 14:26:21

目录

一、环境准备

二、安装部署 

2.1 二进制安装 

2.2 python 3 支持

三、Data X 初体验 

3.1 配置示例

3.1.1. 生成配置模板

3.1.2 创建配置文件

3.1.3 运行 DataX

3.1.4 结果显示

3.2 动态传参  

3.2.1. 动态传参的介绍

3.2.2. 动态传参的案例

3.3 迸发设置 

3.3.1 直接指定

3.3.2 Bps

3.3.3 tps

3.3.4. 优先级


官方参考文档:https://github.com/alibaba/DataX/blob/master/userGuid.md 

一、环境准备

  • Linux 操作系统

  • JDK(1.8 及其以上都可以,推荐 1.8):Linux 下安装 JDK 和 Maven 环境_linux安装jdk和maven-CSDN博客

  • Python(2 或者 3 都可以):Spark-3.2.4 高可用集群安装部署详细图文教程_spark高可用-CSDN博客

  • Apache Maven 3.x(只有源码编译安装需要):Linux 下安装 JDK 和 Maven 环境_linux安装jdk和maven-CSDN博客

二、安装部署 

2.1 二进制安装 

  • 1、下载安装 DataX 工具包,下载地址:https://datax-opensource.oss-cn-hangzhou.aliyuncs.com/202309/datax.tar.gz

  • 2、将下载好的包上传到 Linux 中

  • 3、解压安装即可

(base) [root@hadoop03 ~]# tar -zxvf datax.tar.gz -C /usr/local/
  • 4、自检脚本  
# python {YOUR_DATAX_HOME}/bin/datax.py {YOUR_DATAX_HOME}/job/job.json

# 例如:
python /usr/local/datax/bin/datax.py /usr/local/datax/job/job.json

  • 5、异常解决

如果执行自检程序出现如下错误:

[main] WARN  ConfigParser - 插件[streamreader,streamwriter]加载失败,1s后重试... Exception:Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/usr/local/datax/plugin/reader/._drdsreader/plugin.json]不存在. 请检查您的配置文件.
[main] ERROR Engine -

经DataX智能分析,该任务最可能的错误原因是:
com.alibaba.datax.common.exception.DataXException: Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/usr/local/datax/plugin/reader/._drdsreader/plugin.json]不存在. 请检查您的配置文件.
	at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26)
	at com.alibaba.datax.common.util.Configuration.from(Configuration.java:95)
	at com.alibaba.datax.core.util.ConfigParser.parseOnePluginConfig(ConfigParser.java:153)
	at com.alibaba.datax.core.util.ConfigParser.parsePluginConfig(ConfigParser.java:125)
	at com.alibaba.datax.core.util.ConfigParser.parse(ConfigParser.java:63)
	at com.alibaba.datax.core.Engine.entry(Engine.java:137)
	at com.alibaba.datax.core.Engine.main(Engine.java:204)

解决方案:将 plugin 目录下的所有的以 _ 开头的文件都删除即可

cd /usr/local/datax/plugin
find ./* -type f -name ".*er" | xargs rm -rf

2.2 python 3 支持

        DataX 这个项目本身是用 Python2 进行开发的,因此需要使用 Python2 的版本进行执行。但是我们安装的 Python 版本是 3,而且 3 和 2 的语法差异还是比较大的。因此直接使用 python3 去执行的话,会出现问题。

        如果需要使用 python3 去执行数据同步的计划,需要修改 bin 目录下的三个 py 文件,将这三个文件中的如下部分修改即可:

  • print xxx 替换为 print(xxx)

  • Exception, e 替换为 Exception as e

# 以 datax.py 为例进行修改
(base) [root@hadoop03 ~]# cd /usr/local/datax/bin/
(base) [root@hadoop03 /usr/local/datax/bin]# ls
datax.py  dxprof.py  perftrace.py
(base) [root@hadoop03 /usr/local/datax/bin]# vim datax.py
    print(readerRef)
    print(writerRef)
    jobGuid = 'Please save the following configuration as a json file and  use\n     python {DATAX_HOME}/bin/datax.py {JSON_FILE_NAME}.json \nto run the job.\n'
    print(jobGuid)

使用 python3 命令执行自检脚本:

(base) [root@hadoop03 /usr/local/datax/bin]# python3 /usr/local/datax/bin/datax.py /usr/local/datax/job/job.json

三、Data X 初体验 

3.1 配置示例

3.1.1. 生成配置模板

        DataX 的数据同步工作,需要使用 json 文件来保存配置信息,配置 writer、reader 等信息。我们可以使用如下的命令来生成一个配置的 json 模板,在这个模板上进行修改,生成最终的 json文件。

python3 /usr/local/datax/bin/datax.py -r {reader} -w {writer}

        将其中的 {reader} 替换成自己想要的 reader 组件名字,将其中的 {writer} 替换成自己想要的 writer 组件名字。

  • 支持的 reader:

所有的 reader 都存储于 DataX 安装目录下的 plugin/reader 目录下,可以在这个目录下查看:

(base) [root@hadoop03 /usr/local/datax]# ls
bin  conf  job  lib  log  log_perf  plugin  script  tmp
(base) [root@hadoop03 /usr/local/datax]# ls plugin/reader/
cassandrareader   ftpreader        hbase11xsqlreader  loghubreader        odpsreader      otsreader         sqlserverreader  tsdbreader
clickhousereader  gdbreader        hbase20xsqlreader  mongodbreader       opentsdbreader  otsstreamreader   starrocksreader  txtfilereader
datahubreader     hbase094xreader  hdfsreader         mysqlreader         oraclereader    postgresqlreader  streamreader
drdsreader        hbase11xreader   kingbaseesreader   oceanbasev10reader  ossreader       rdbmsreader       tdenginereader
  • 支持的 writer:

所有的 writer 都存储于 DataX 安装目录下的 plugin/writer 目录下,可以在这个目录下查看:

(base) [root@hadoop03 /usr/local/datax]# ls plugin/writer/
adbpgwriter       datahubwriter        gdbwriter          hdfswriter          mongodbwriter       odpswriter    postgresqlwriter  streamwriter
adswriter         doriswriter          hbase094xwriter    hologresjdbcwriter  mysqlwriter         oraclewriter  rdbmswriter       tdenginewriter
cassandrawriter   drdswriter           hbase11xsqlwriter  kingbaseeswriter    neo4jwriter         oscarwriter   selectdbwriter    tsdbwriter
clickhousewriter  elasticsearchwriter  hbase11xwriter     kuduwriter          oceanbasev10writer  osswriter     sqlserverwriter   txtfilewriter
databendwriter    ftpwriter            hbase20xsqlwriter  loghubwriter        ocswriter           otswriter     starrockswriter

例如需要查看 streamreaderstreamwriter 的配置,可以使用如下操作:

python3 /usr/local/datax/bin/datax.py -r streamreader -w streamwriter

        这个命令可以将 json 模板直接打印在控制台上,如果想要以文件的形式保存下来,重定向输出到指定文件:

python3 /usr/local/datax/bin/datax.py -r streamreader -w streamwriter > ~/stream2stream.json

3.1.2 创建配置文件

创建 stream2stream.json 文件:

(base) [root@hadoop03 ~]# mkdir jobs
(base) [root@hadoop03 ~]# cd jobs/
(base) [root@hadoop03 ~/jobs]# vim stream2stream.json
{
  "job": {
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "sliceRecordCount": 10,
            "column": [
              {
                "type": "long",
                "value": "10"
              },
              {
                "type": "string",
                "value": "hello,你好,世界-DataX"
              }
            ]
          }
        },
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "encoding": "UTF-8",
            "print": true
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 5
       }
    }
  }
}

3.1.3 运行 DataX

(base) [root@hadoop03 ~/jobs]# python3 /usr/local/datax/bin/datax.py stream2stream.json 

3.1.4 结果显示

3.2 动态传参  

3.2.1. 动态传参的介绍

        DataX 同步数据的时候需要使用到自己设置的配置文件,其中可以定义同步的方案,通常为 json 的格式。在执行同步方案的时候,有些场景下需要有一些动态的数据。例如:

  • 将 MySQL 的数据同步到 HDFS,多次同步的时候只是表的名字和字段不同。

  • 将 MySQL 的数据增量的同步到 HDFS 或者 Hive 中的时候,需要指定每一次同步的时间。

  • ...

        这些时候,如果我们每一次都去写一个新的 json 文件将会非常麻烦,此时我们就可以使用 动态传参

        所谓的动态传参,就是在 json 的同步方案中,使用类似变量的方式来定义一些可以改变的参数。在执行同步方案的时候,可以指定这些参数具体的值。

3.2.2. 动态传参的案例

{
  "job": {
    "content": [
      {
        "reader": {
          "name": "streamreader",
          "parameter": {
            "sliceRecordCount": $TIMES,
            "column": [
              {
                "type": "long",
                "value": "10"
              },
              {
                "type": "string",
                "value": "hello,你好,世界-DataX"
              }
            ]
          }
        },
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "encoding": "UTF-8",
            "print": true
          }
        }
      }
    ],
    "setting": {
      "speed": {
        "channel": 1
       }
    }
  }
}

        在使用到同步方案的时候,可以使用 -D 来指定具体的参数的值。例如在上述的 json 中,我们设置了一个参数 TIMES,在使用的时候,可以指定 TIMES 的值,来动态的设置 sliceRecordCount 的值。  

python3 /usr/local/datax/bin/datax.py -p "-DTIMES=3" stream2stream.json

3.3 迸发设置 

        在 DataX 的处理流程中,Job 会被划分成为若干个 Task 并发执行,被不同的 TaskGroup 管理。在每一个 Task 的内部,都由 reader -> channel -> writer 的结构组成,其中 channel 的数量决定了并发度。那么 channel 的数量是怎么指定的?

  • 直接指定 channel 数量

  • 通过 Bps 计算 channel 数量

  • 通过 tps 计算 channel 数量

3.3.1 直接指定

        在同步方案的 json 文件中,我们可以设置 job.setting.speed.channel 来设置 channel 的数量。这是最直接的方式。在这种配置下,channel 的 Bps 为默认的 1MBps,即每秒传输 1MB 的数据。

3.3.2 Bps

        Bps(Byte per second)是一种非常常见的数据传输速率的表示,在 DataX 中,可以通过参数设置来限制总 Job 的 Bps 以及单个 channel 的Bps,来达到限速和 channel 数量计算的效果。

  • Job Bps:对一个 Job 进行整体的限速,可以通过 job.setting.speed.byte 进行设置。

  • channel Bps:对单个 channel 的限速,可以通过 core.transport.channel.speed.byte 进行设置。

3.3.3 tps

        tps(transcation per second)是一种很常见的数据传输速率的表示,在 DataX 中,可以通过参数设置来限制总 Job 的 tps 以及单个 channel 的 tps,来达到限速和 channel 数量计算的效果。

  • Job tps:对一个 Job 进行整体的限速,可以通过 job.setting.speed.record 进行设置。

  • channel tps:对单个 channel 的限速,可以通过 core.transport.channel.speed.record 进行设置。

3.3.4. 优先级

  • 如果同时配置了 Bps 和 tps 限制,以小的为准。

  • 只有在 Bps 和 tps 都没有配置的时候,才会以 channel 数量配置为准。

上一篇文章:大数据 DataX 数据同步数据分析入门-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098846.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

快速学会Typora和Markdowm常用语法

什么是Markdown? Markdown 是一种轻量标记语言,和 Word、PDF、HMTL 格式一样,可以用作文章或者网页的格式。 和其它的格式相比,Markdown 具备以下优势: 易学易用,逼格满满; 格式简洁&#xff…

常用的原型工具有哪些?推荐这7款

原型图设计工具有很多优点。除了帮助设计师快速与客户达成协议,避免项目前景的冲突外,原型图设计工具还可以让客户看到正在创建的内容。如果需要更改,原型图设计工具也可以轻松完成。本文快速总结了7种原型图设计工具。无论你是专业设计师还是…

行情分析——加密货币市场大盘走势(10.16)

目前大饼再次止稳,并开始向上攀升,目前MACD来看也是进入了多头趋势。重新调整了蓝色上涨趋势线,目前来看这次的低点并没有跌破上一个低点,可以认为是上涨的中继。注意白天的下跌回调。 以太目前也是走了四连阳线,而MAC…

网络安全—小白自学笔记

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

你知道跨境商城源码如何为商家节省成本和时间吗

跨境电商行业迅速发展,商家如何利用跨境商城源码实现成本和时间节省 在全球经济一体化的背景下,跨境电商行业蓬勃发展,为商家提供了全球范围的市场机会。然而,面临的挑战也日益增多,比如高昂的运营成本和繁琐的流程&am…

嵌入式面试经典30问

嵌入式面试经典30问 很多同学说很害怕面试,看见面试官会露怯,怕自己的知识体系不完整,怕面试官考的问题回答不上了,所以今天为大家准备了嵌入式工程师面试经常遇到的30个经典问题,希望可以帮助大家提前准备&#xff0…

weapp-tailwindcss for uni-app 样式条件编译语法插件

weapp-tailwindcss for uni-app 样式条件编译语法插件 版本需求 2.10.0 weapp-tailwindcss for uni-app 样式条件编译语法插件 这是什么玩意?如何使用 tailwind.config.js 注册postcss 插件注册 uni-app vite vue3uni-app vue2 配置完成 配置项 这是什么玩意? 在 uni-app …

GeoServer源码运行(数据目录+数据库)

1、源码下载 下载地址:https://github.com/geoserver/geoserver/tree/2.23.2 图 2选择版本下载 2、启动配置 图 3主程序启动类配置 GeoServer主程序的启动类为web->app[gs-web-app]模块下test目录下“org.geoserve

3个g的文件怎么发送给别人?三种方法自由选择!

发送大文件不仅会耗费较长时间,同时也可能需要消耗更多的流量费用,更容易出现网络中断或其他传输错误。这时候就需要使用文件压缩工具将它们压缩为一个文件,然后将其发送到收件人。下面介绍了三种大体积压缩的方法,一起来看看吧&a…

探索未来:硬件架构之路

文章目录 🌟 硬件架构🍊 基本概念🍊 设计原则🍊 应用场景🍊 结论 📕我是廖志伟,一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作…

微信小程序里配置less

介绍 在微信小程序里,样式文件的后缀名都是wxss,这导致一个问题,就是页面样式过多的时候,要写很多的类名来包裹,加大了工作量,还很有可能会写错样式。这时可以配置一个less,会大大提高代码编辑…

Programming abstractions in C阅读笔记:p179-p180

《Programming Abstractions In C》学习第60天,p179-p180总结。 一、技术总结 1.palindrome(回文) (1)包含单个字符的字符串(如"a"),或者空字符串(如" ")也是回文。 (2)示例:“level”、“noon”。 2.predicate fun…

优维产品使用最佳实践:实例拓扑

背 景 实例拓扑可以帮助我们直观地了解整个系统的架构和组成情况,该拓扑图是通过已有的实例的关联关系自动生成,当实例数据和关系变化时拓扑图也能实时更新,我们可以快速直观的查看当前实例下所有资源的之间的网状关系和资源数量。 实例拓扑…

ChatGPT DALL-E 3的系统提示词大全

每当给出图像的描述时,使用dalle来创建图像,然后用纯文本总结用于生成图像的提示。如果用户没有要求创建特定数量的图像,默认创建四个标题,这些标题应尽可能多样化。发送给Dalle的所有标题都必须遵循以下策略:1.如果描…

探索低代码技术

低/无代码的高速发展,属于软件市场的选择,相较于传统编写代码的开发方式,低/无代码开发效率高、投入成本低、技术门槛也更低,未来更多软件应用将使用低/无代码技术完成,这也是趋势。 身为开发人员经常需要花大量时间在…

2011年408真题复盘

紫色标记是认为有一定的思维难度或重点总结 红色标记是这次刷真题做错的 记录自己对题目的一些想法与联系,可能并不太关注题目本身。 分数用时 选择部分10.14 78/8037min大题部分10.1456/7080min总分134117min 摘自知乎老哥:“我做历年真题时&#xff0c…

VR、AR、MR、XR到底都是什么?有什么区别

目录 VRARMRXRAR、VR、MR、XR的区别 VR 英:Virtual Reality 中文翻译:虚拟现实 又称计算机模拟现实。是指由计算机生成3D内容,为用户提供视觉、听觉等感官来模拟现实,具有很强的“临场感”和“沉浸感”。我们可以使用耳机、控制器…

drawio简介以及下载安装

drawio简介以及下载安装 drawio是一款非常强大的开源在线的流程图编辑器,支持绘制各种形式的图表,提供了 Web端与客户端支持,同时也支持多种资源类型的导出。 访问网址:draw.io或者直接使用app.diagrams.net直接打开可以使用在线版…

前端设计模式应应用场景

前端设计模式应应用场景 创建型模式(Creational Patterns)工厂模式单例模式原型模式 行为型模式(Behavioral Patterns)策略模式观察者模式/发布订阅模式迭代器模式状态模式 结构型模式(Structural Patterns)装饰器模式代理模式 创建型模式(Creational Patterns) 处理对象的创建…