数据同步Datax与Datax_web的部署以及使⽤说明
⼀、DataX3.0概述
DataX 是⼀个异构数据源离线同步⼯具,致⼒于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定⾼效的数据同步功能。
请看下图:
设计理念:
为了解决异构数据源同步问题,DataX将复杂的⽹状的同步链路变成了星型数据链路,DataX作为中间传
输载体负责连接各种数据源。当需要接⼊⼀个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到⽆缝数据同步。
当前使⽤状况:
DataX在阿⾥巴巴集团内被⼴泛使⽤,承担了所有⼤数据的离线同步业务,并已持续稳定运⾏了6年之久。⽬前每天完成同步8w多道作业,每⽇传输数据量超过300TB。
⼆、DataX3.0框架设计
DataX本⾝作为离线数据同步框架,采⽤Framework + plugin架构构建。将数据源读取和写⼊抽象成为Reader/Writer插件,纳⼊到整个同步框架中。
1、Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。
2、Writer: Writer为数据写⼊模块,负责不断向Framework取数据,并将数据写⼊到⽬的端。
3、Framework:Framework⽤于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核⼼技术问题。
三、插件体系
DataX⽬前已经有了⽐较全⾯的插件体系,主流的RDBMS数据库、NOSQL、⼤数据计算系统都已经接⼊。
DataX⽬前⽀持数据如下:
四、DataX3.0核⼼架构
DataX 3.0 开源版本⽀持单机多线程模式完成同步作业运⾏,按⼀个DataX作业⽣命周期的时序图,从整体架构设计⾮常简要说明DataX各个模块相互关系。
1、DataX完成单个数据同步的作业,我们称之为Job,DataX接受到⼀个Job之后,将启动⼀个进程来完成整个作业同步过程。
DataX Job模块是单个作业的中枢管理节点,承担了数据清理、⼦任务切分(将单⼀作业计算转化为多个⼦Task)、TaskGroup管理等功能。
2、DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个⼩的Task(⼦任务),以便于并发执⾏。Task便是DataX作业的最⼩单元,每⼀个Task都会负责⼀部分数据
的同步⼯作。
3、切分多个Task之后,DataX Job会调⽤Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每⼀个TaskGroup负责以⼀定的并
发运⾏完毕分配好的所有Task,默认单个任务组的并发数量为5。
4、每⼀个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步⼯作。
5、DataX作业运⾏起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值⾮0。
五、DataX调度流程:
⼀个DataX Job会切分成多个Task,每个Task会按TaskGroup进⾏分组,⼀个Task内部会有⼀组Reader->Channel->Writer。Channel是连接Reader和Writer的数据交换通
道,所有的数据都会经由Channel进⾏传输
六、Datax3.0安装部署
1、环境准备
Linux
jdk 1.8
python 2.7.5(datax是由python2开发的)
2、datax下载地址银行几点钟上下班
github/alibaba/DataX?spm=a2c4e.11153940.blogcont59373.11.7a684c4fvubOe1
查看安装成功:在bin⽬录下执⾏ python datax.py ../job/job.json
3、查看配置⽂件
在bin⽬录下已经给出了样例配置,但不同的数据源配置⽂件不⼀样。通过命令查看配置模板
# python datax.py -r {YOUR_READER} -w {YOUR_WRITER}
⽰例:[xxx@xxxbin]$ python datax.py -r mysqlreader -w hdfswriter
七、json配置⽂件模板说明
{
"job": {
许文赫个人资料
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"querySql": "", #⾃定义sql,⽀持多表关联,当⽤户配置querySql时,直接忽略table、column、where条件的配置。
"fetchSize": "", #默认1024,该配置项定义了插件和数据库服务器端每次批量数据获取条数,该值决定了DataX和服务器端的⽹络交互次数,能够较⼤的提升数据抽取性能,注意,该值过⼤(>2048)可能造成DataX进程OOM "splitPk": "db_id", #仅⽀持整形型数据切分;如果指定splitPk,表⽰⽤户希望使⽤splitPk代表的字段进⾏数据分⽚,如果该值为空,代表不切分,使⽤单通道进⾏抽取
"column": [], #"*"默认所有列,⽀持列裁剪,列换序
"connection": [
{
"jdbcUrl": ["jdbc:mysql://IP:3306/database?useUnicode=true&characterEncoding=utf8"],
"table": [] #⽀持多张表同时抽取
}
],
"password": "",
"username": "",
"where": "" #指定的column、table、where条件拼接SQL,可以指定limit 10,也可以增量数据同步,如果该值为空,代表同步全表所有的信息
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"column": [], #必须指定字段名,字段类型,{"name":"","tpye":""}
"compress": "", #hdfs⽂件压缩类型,默认不填写意味着没有压缩。其中:text类型⽂件⽀持压缩类型有gzip、bzip2;orc类型⽂件⽀持的压缩类型有NONE、SNAPPY(需要⽤户安装SnappyCodec)。
"defaultFS": "", #Hadoop hdfs⽂件系统namenode节点地址。
"fieldDelimiter": "", #需要⽤户保证与创建的Hive表的字段分隔符⼀致
"fileName": "", #HdfsWriter写⼊时的⽂件名,需要指定表中所有字段名和字段类型,其中:name指定字段名,type指定字段类型。
"fileType": "", #⽬前只⽀持⽤户配置为”text”或”orc”
"path": "", #存储到Hadoop hdfs⽂件系统的路径信息,hive表在hdfs上的存储路径
"hadoopConfig": {} #hadoopConfig⾥可以配置与Hadoop相关的⼀些⾼级参数,⽐如HA的配置。
"writeMode": "" #append,写⼊前不做任何处理,⽂件名不冲突;nonConflict,如果⽬录下有fileName前缀的⽂件,直接报错。
}
}
}
],
"setting": {
"speed": { #流量控制
"byte": 1048576, #控制传输速度,单位为byte/s,DataX运⾏会尽可能达到该速度但是不超过它
"channel": "" #控制同步时的并发数
}
"errorLimit": { #脏数据控制
"record": 0 #对脏数据最⼤记录数阈值(record值)或者脏数据占⽐阈值(percentage值,当数量或百分⽐,DataX Job报错退出
}
}
}
}
{
"job":{
"setting":{
"speed":{
"channel":1
}
},
"content":[
{
"reader":{
"name":"sqlserverreader",
"parameter":{
"username":"xxxx",
"password":"xxxx",
"column":[
"UserGroupId",
"Name"
]
,
"connection":[
{
"table": [
"UserGroups"
],
"jdbcUrl":[
"jdbc:sqlserver://xxxx:1433;DatabaseName=TEST"
]
茯神的功效与作用及食用方法}
]
}
},
"writer":{
"name":"mysqlwriter",
十月再见十一月你好图片"parameter":{
"username":"xxxx",
"password":"xxxx",
"column":[
"user_group_id",
"user_group_name"
],
"connection":[
{
"jdbcUrl": "jdbc:mysql://xxxx:3306/test_recruit",
"table": ["gcp_user_groups"]
}
],
"visible":false,
"encoding":"UTF-8"
}
}
}
]
}
}
⼋、datax-web安装
1、参考官⽅的安装,包可以这⾥下载
一丘之貉github/WeiYe-Jing/datax-web/blob/master/doc/datax-web/datax-web-deploy.md
2、在选定的安装⽬录,解压安装包
tar -zxvf datax-web-{VERSION}.
3、执⾏安装脚本(需要安装数据库mysql)
[root@roobbin datax-web-2.1.2]# ./bin/install.sh
2020-10-17 10:00:09.430 [INFO] (22745) Creating directory: [/usr/local/datax-web-2.1.2/bin/../modules].
2020-10-17 10:00:09.459 [INFO] (22745) >## Start To Uncompress Packages >#
2020-10-17 10:00:09.462 [INFO] (22745)
Do you want to decompress this package: [datax-admin_2.1.2_]? (Y/N)y
2020-10-17 10:00:17.298 [INFO] (22745) Uncompress package: [datax-admin_2.1.2_] to modules directory
Do you want to decompress this package: [datax-executor_2.1.2_]? (Y/N)
按照提⽰输⼊数据库地址,端⼝号,⽤户名,密码以及数据库名称,⼤部分情况下即可快速完成初始化。如果服务上并没有安装mysql命令,则可以取⽤⽬录下/bin/db/datax-web.sql脚本去⼿动执⾏,完成后修改相关配置⽂件
vi ./modules/datax-admin/conf/bootstrap.properties
#Database
#DB_HOST=
#DB_PORT=
#DB_USERNAME=
#DB_PASSWORD=
#DB_DATABASE=
在项⽬⽬录下/modules/datax-execute/bin/env.properties 指定PYTHON_PATH的路径
vi ./modules/{module_name}/bin/env.properties
### 执⾏datax的python脚本地址
榴莲的功效和营养价值PYTHON_PATH=
### 保持和datax-admin服务的端⼝⼀致;默认是9527,如果没改datax-admin的端⼝,可以忽略
DATAX_ADMIN_PORT=
4、启动DataX_web
.
/bin/start-all.sh
进⼊可视化界⾯
ip:9527/index.html
登陆⽤户名admin 密码123456
over!
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
大数据量下OGG快速同步方式实践NEW
« 上一篇
五大常见的MySQL高可用方案
下一篇 »
发表评论