&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞
一、简介
DataX是一个开源的数据同步工具,主要用于在不同数据存储之间高效迁移数据。
DataX架构原理:为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。
二、DataX 的核心概念
-
数据同步模型:
-
DataX 采用 Reader -> Channel -> Writer 的模型:
-
Reader:从源数据源读取数据。
-
Channel:数据传输通道,负责数据的缓冲和传输。
-
Writer:将数据写入目标数据源。
-
-
-
插件化架构:
-
DataX 的核心是插件化设计,支持多种数据源的读写插件(如 MySQL、Oracle、HDFS、Hive 等)。
-
用户可以根据需求扩展自定义插件。
-
-
任务配置:
-
通过 JSON 配置文件定义数据同步任务,包括 Reader、Writer 和 Channel 的配置。
-
二、DataX 的重点
-
配置文件编写:
-
理解 JSON 配置文件的结构,包括
job
、content
、reader
和writer
等部分。 -
示例:
{ "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "123456", "column": ["id", "name"], "connection": [ { "table": ["user"], "jdbcUrl": ["jdbc:mysql://localhost:3306/test"] } ] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://localhost:9000", "fileType": "text", "path": "/user/hive/warehouse/user", "fileName": "user.txt" } } } ], "setting": { "speed": { "channel": 3 } } } }
在 DataX 中,JSON 配置文件是定义数据同步任务的核心部分。配置文件通常包括
job
、content
、reader
和writer
等部分,每个部分都有其特定的作用。
-
一、各部分的作用与配置
1. job
-
作用:定义整个数据同步任务的全局配置。
-
配置内容主要包括:
-
content
:定义数据同步的具体内容,包括reader
和writer
。 -
setting
:定义任务的全局设置,如并发度、速度限制等。
-
-
示例:
"job": { "content": [ { "reader": { ... }, "writer": { ... } } ], "setting": { "speed": { "channel": 3 } } }
2. content
-
作用:定义数据同步的具体内容,包括数据读取(
reader
)和数据写入(writer
)。 -
配置内容:
-
reader
:配置数据源读取插件。 -
writer
:配置数据目标写入插件。
-
-
示例:
"content": [ { "reader": { "name": "mysqlreader", "parameter": { "username": "root", "password": "123456", "column": ["id", "name"], "connection": [ { "table": ["user"], "jdbcUrl": ["jdbc:mysql://localhost:3306/test"] } ] } }, "writer": { "name": "hdfswriter", "parameter": { "defaultFS": "hdfs://localhost:9000", "fileType": "text", "path": "/user/hive/warehouse/user", "fileName": "user.txt" } } } ]
3. reader
定义数据源读取插件及其配置。
-
配置内容:
-
name
:指定 Reader 插件的名称(如mysqlreader
、oraclereader
等)。 -
parameter
:配置 Reader 插件的具体参数,如连接信息、表名、字段等。
-
4. writer
定义数据目标写入插件及其配置。
-
配置内容:
-
name
:指定 Writer 插件的名称(如hdfswriter
、mysqlwriter
等)。 -
parameter
:配置 Writer 插件的具体参数,如连接信息、文件路径、字段等。
-
二、channel
(并发通道数)
-
作用:
-
channel
控制任务的并发度,即同时执行的数据同步任务数。 -
增加
channel
可以提高数据同步的速度,但也会增加对数据源和目标系统的压力。
-
-
配置依据:
-
数据源性能:如果数据源(如 MySQL、Oracle)的读写性能较高,可以增加
channel
。 -
目标系统性能:如果目标系统(如 HDFS、Hive)的写入性能较高,可以增加
channel
。 -
网络带宽:如果网络带宽充足,可以增加
channel
。 -
硬件资源:如果运行 DataX 的机器 CPU 和内存资源充足,可以增加
channel
。
-
-
推荐配置:
-
初始值可以设置为 3-5,然后根据任务执行情况逐步调整。
-
如果数据量较大,可以设置为 10-20,但需要监控系统负载。
-
-
示例:
"setting": { "speed": { "channel": 5 } }
三、errorLimit
(错误限制)
-
作用:
-
errorLimit
控制任务对错误的容忍度,包括记录数错误和百分比错误。 -
当错误超过限制时,任务会失败。
-
-
配置依据:
-
数据质量:如果数据质量较高,可以设置较低的错误容忍度。
-
业务需求:如果任务对数据准确性要求较高,可以设置较低的错误容忍度。
-
-
推荐配置:
-
record
:允许的最大错误记录数,默认值为 0。可以设置为 10 或更高。 -
percentage
:允许的最大错误百分比,默认值为 0.02(即 2%)。可以设置为 0.05(即 5%)。
-
-
示例:
"setting": { "errorLimit": { "record": 10, "percentage": 0.05 } }
四、综合配置示例
以下是一个综合考虑 channel
、byte
和 errorLimit
的配置示例:
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"username": "root",
"password": "123456",
"column": ["id", "name"],
"connection": [
{
"table": ["user"],
"jdbcUrl": ["jdbc:mysql://localhost:3306/test"]
}
]
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"defaultFS": "hdfs://localhost:9000",
"fileType": "text",
"path": "/user/hive/warehouse/user",
"fileName": "user.txt"
}
}
}
],
"setting": {
"speed": {
"channel": 5,
"byte": 10485760
},
"errorLimit": {
"record": 10,
"percentage": 0.05
}
}
}
}