文章目录
- 前言
- 第1章、概述
- 1.1 DataX是什么?
- 1.2 DataX的设计
- 1.3 支持的数据源
- 1.4 框架设计
- 1.5 运行原理
- 第2章 快速入门
- 2.1 官方地址
- 2.3 安装
- 第3章 使用案例
- 3.1 从stream流读取数据并打印到控制台
- 3.2 读取Mysql中的数据存放到Hdfs
- 3.2.1 参数解析
- 3.2.2 准备数据
- 3.2.3 编写配置文件
- 总结
前言
数据采集在数仓中是指将数据从源数据端采集到目标端的过程。涉及到数据库到数据库的数据同步问题,DataX是其中的一种工具,DataX是一个异构数据源离线同步工具。
第1章、概述
1.1 DataX是什么?
- DataX是阿里巴巴开源的一个异构数据源离线同步工具。
- 开源地址:https://github.com/alibaba/DataX
1.2 DataX的设计
为解决异构数据源同步问题,DataX将复杂的网状同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。
1.3 支持的数据源
DataX目前已经有较全面的插件体系,主流的RDBMS数据库,NOSQL,大数据计算系统都已经接入。
1.4 框架设计
- Reader:数据采集模块,负责采集数据源的数据,将数据发送给Framework。
- Writer:数据写入模块,负责不断向Framework取数据,将数据写入到目的端。
- Framework:用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。
1.5 运行原理
- Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理。
- Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
- Schedule:将Task组成TaskGroup,单个TaskGroup的并发数量是5.
- TaskGroup:负责启动Task。
举例来说,用户提交了一个 DataX 作业,并且配置了 20 个并发,目的是将一个 100 张
分表的 mysql 数据同步到 odps 里面。 DataX 的调度决策思路是:
1)DataXJob 根据分库分表切分成了 100 个 Task。
2)根据 20 个并发,DataX 计算共需要分配 4 个 TaskGroup。
3)4 个 TaskGroup 平分切分好的 100 个 Task,每一个 TaskGroup 负责以 5 个并发共计运
行 25 个 Task。
第2章 快速入门
2.1 官方地址
下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
源码地址:https://github.com/alibaba/DataX
2.3 安装
将下载好的 datax.tar.gz 上传到 hadoop102 的/opt/software
2)解压 datax.tar.gz 到/opt/module
tar -zxvf datax.tar.gz -C /opt/module/
3)运行自检脚本
cd /opt/module/datax/bin/
python datax.py /opt/module/datax/job/job.json
第3章 使用案例
3.1 从stream流读取数据并打印到控制台
- 查看配置模板
cd /opt/module/datax/bin
python datax.py -r streamreader -w streamwriter
- 编辑模板
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": 1
}
}
}
}
3)运行
/opt/module/datax/bin/datax.py /opt/module/datax/job/stream2stream.json
3.2 读取Mysql中的数据存放到Hdfs
3.2.1 参数解析
- mysqlreader 参数解析:
- hdfswriter 参数解析:
3.2.2 准备数据
创建student表并插入数据
create database datax;
use database;
create table student(id int,name varchar(20));
insert into student values(1001,'zhangsan'),(1002,'lisi'),(1003,'wangwu');
3.2.3 编写配置文件
vim /opt/module/datax/job/mysql2hdfs.json
{
"job": {
"content": [
{
"reader": {
"name": "mysqlreader",
"parameter": {
"column": [
"id",
"name"
],
"connection": [
{
"jdbcUrl": [
"jdbc:mysql://hadoop102:3306/datax"
],
"table": [
"student"
]
}
],
"username": "root",
"password": "000000"
}
},
"writer": {
"name": "hdfswriter",
"parameter": {
"column": [
{
"name": "id",
"type": "int"
},
{
"name": "name",
"type": "string"
}
],
"defaultFS": "hdfs://hadoop102:9000",
"fieldDelimiter": "\t",
"fileName": "student.txt",
"fileType": "text",
"path": "/",
"writeMode": "append"
}
}
}
],
"setting": {
"speed": {
"channel": "1"
}
}
}
}
总结
DataX是阿里巴巴开源的一个异构数据源离线同步工具。