大数据 DataX 详细安装教程

目录

一、环境准备

二、安装部署 

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.pyprint(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.hqwc.cn/news/138643.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【传输层协议】UDP/TCP结构特点与原理(详解)

文章目录 1. UDP1.1 UDP结构1.2 UDP特点1. 无连接2. 不可靠3. 面向数据报4. 缓冲区5. 大小受限6. 无序性 2. TCP2.1 TCP结构2.2 TCP特点1. 有连接2. 可靠性3. 面向字节流4. 拥塞控制5. 头部开销 2.3 TCP原理1. 确认应答(安全机制)2. 超时重传&#xff08…

基于springboot实现家具网站设计与实现平台项目【项目源码+论文说明】

摘要 随着移动互联网技术的深入发展,电子商务也不断的完善,线上销售额不断提高,网络消费成为人民日常生活的一部分。并且随着电子商务的发展,也呈现出多元化方向,各种农村电商、生鲜电商、家具电商等,带动…

java SpringBoot基础

目录 SpringBootWeb快速入门前言需求开发步骤创建SpringBoot工程(需要联网)定义请求处理类运行测试 HTTP协议HTTP概述HTTP-请求协议格式GET方式的请求协议POST方式的请求协议 HTTP-响应协议格式HTTP-协议解析 WEB服务器-Tomcat简介基本使用注意事项 Spri…

新增Node.js运行环境、新增系统缓存清理功能,1Panel开源面板v1.7.0发布

2023年10月16日,现代化、开源的Linux服务器运维管理面板1Panel正式发布v1.7.0版本。 在这个版本中,1Panel新增Node.js运行环境;新增系统缓存清理功能;应用安装时支持选择远程数据库。此外,我们进行了40多项功能更新和…

apk和小程序渗透

apk和小程序域服务器通信使用的还是http协议,只是使用了加密。只要可以获取到http的请求报文,就可以回归到web渗透的层面。apk和小程序的渗透很复杂,涉及逆向时要进行脱壳,脱壳后反编译了,源代码没做加密就能直接逆向出…

阵列信号处理_对比常规波束形成法(CBF)和Capon算法

空间谱估计 利用电磁波信号来获取目标或信源相对天线阵列的角度信息的方式,也称测向、波达方向估计(DOA)。主要应用于雷达、通信、电子对抗和侦察等领域。 发展 常规波束形成(CBF)。本质是时域傅里叶变换在空域直接…

排序算法-基数排序法(RadixSort)

排序算法-基数排序法(RadixSort) 1、说明 基数排序法与我们之前讨论的排序法不太一样,并不需要进行元素之间的比较操作,而是属于一种分配模式排序方式。 基数排序法比较的方向可分为最高位优先(Most Significant Di…

centos 里面的service自启动app.jar,出现两个java进程,app是同一个端口

当使用jps -lv查看java虚拟机进程 app.jar启动后,居然出现两个启动进程,而且他们的端口都一样,同一端口,是不允许启动两个相同app的。 使用进程ps查看进程工具 #ps -aux 参数说明: a: 显示跟当前终端关联的所有进…

做web自动化测试遇到Chrome浏览器老是自动更新,怎么办 ? 这里提供两个解决办法 。

web自动化安装驱动安装 进行web自动化时 ,需要提前安装浏览器的驱动 ,尤其是chrome浏览器 。它的更新速度很快 ,是不是更新了新版本 。这就导致我们的驱动也要跟着变化。 1.停止自动更新 那么 ,如何关闭chrome浏览器的自动更新…

6.6 图的应用

思维导图: 6.6.1 最小生成树 ### 6.6 图的应用 #### 主旨:图的概念可应用于现实生活中的许多问题,如网络构建、路径查询、任务排序等。 --- #### 6.6.1 最小生成树 **概念**:要在n个城市中建立通信联络网,则最少需…

项目经理每天,每周,每月的工作清单

很多不懂项目管理的伙伴问,项目经理每天每周每个月的工作是什么呢? 仿佛他们什么都管,但是又没有具体的产出,但是每天看他们比谁都忙,其实很简单,项目中的每个环节负责具体的事情,但是每个环节…

Python文件共享+cpolar内网穿透:轻松实现公网访问

文章目录 1.前言2.本地文件服务器搭建2.1.Python的安装和设置2.2.cpolar的安装和注册 3.本地文件服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据共享作为和连接作为互联网的基础应用,不仅在商业和办公场景有广泛的应用&#…