DataX 自学使用

本文详细介绍了DataX,阿里巴巴开源的异构数据源离线同步工具,支持多种数据源。DataX包含Reader、Writer和Framework组件,实现数据采集和写入。通过案例展示了如何从stream流读取数据并打印,以及如何将MySQL数据同步到HDFS。提供了安装步骤和配置文件示例。


前言

数据采集在数仓中是指将数据从源数据端采集到目标端的过程。涉及到数据库到数据库的数据同步问题,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流读取数据并打印到控制台

  1. 查看配置模板
cd /opt/module/datax/bin
python datax.py -r streamreader -w streamwriter
  1. 编辑模板
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是阿里巴巴开源的一个异构数据源离线同步工具。

本文学习参考尚硅谷Datax课程

### 安装步骤 1. **下载DataX源码** DataX的源码可以从GitHub上下载,通常会使用`git clone`命令来获取。 2. **解压安装包** 如果你已经下载了DataX的tar.gz包,可以使用以下命令解压安装包到指定目录,例如`/usr/local/`: ```bash tar -zxvf datax.tar.gz -C /usr/local/ ``` 3. **验证安装** 解压完成后,可以通过运行自检脚本来验证安装是否成功。确保Python环境已正确配置,然后执行如下命令: ```bash python /usr/local/datax/bin/datax.py /usr/local/datax/job/job.json ``` 4. **配置环境变量** 为了方便后续使用,建议将DataX的bin目录添加到系统的PATH环境变量中。编辑`~/.bashrc`文件,添加以下行: ```bash export PATH=$PATH:/usr/local/datax/bin ``` 然后运行`source ~/.bashrc`使更改生效。 5. **创建和配置任务** DataX的任务配置文件通常位于`job`目录下。你可以根据需要创建自己的任务配置文件,例如`my_job.json`,并根据实际情况修改配置。 6. **运行任务** 使用DataX命令行工具运行任务,命令格式如下: ```bash python /usr/local/datax/bin/datax.py /usr/local/datax/job/my_job.json ``` ### 使用指南 - **任务配置** DataX的任务配置文件是一个JSON文件,包含了数据源、目标、读取和写入插件等信息。例如,一个简单的任务配置可能如下所示: ```json { "job": { "content": [ { "reader": { "name": "mysqlreader", "parameter": { "connection": [ { "jdbcUrl": "jdbc:mysql://localhost:3306/test", "table": ["test_table"], "username": "root", "password": "password" } ], "column": ["*"] } }, "writer": { "name": "mysqlwriter", "parameter": { "defaultFS": "hdfs://localhost:9000", "fileType": "text", "path": "/user/hive/warehouse/test_table", "fileName": "test", "column": [ {"name": "id", "type": "INT"}, {"name": "name", "type": "STRING"} ], "writeMode": "append", "fieldDelimiter": "\t" } } } ], "setting": { "speed": { "channel": "1" } } } } ``` - **插件管理** DataX支持多种数据源的读取和写入插件。如果需要自定义插件,可以在`plugin`目录下进行开发和测试。每个插件都有其特定的配置参数,需要按照官方文档或示例进行设置。 - **性能调优** DataX提供了性能监控和调优的功能,可以通过日志文件和性能报告来分析任务执行情况。日志文件通常位于`log`目录下,而性能报告则可以在`log_perf`目录中找到。 - **常见问题排查** 如果在安装或使用过程中遇到问题,可以查看DataX的日志文件来获取更多信息。此外,还可以参考官方文档或社区资源来寻求帮助。 ### 注意事项 - **系统要求** DataX要求Linux系统上安装有JDK 1.8以上版本、Python 2.6.X或更高版本,以及Apache Maven 3.x用于编译源码。 - **Python版本** 虽然DataX支持Python 2和3,但推荐使用Python 2.6.X以确保兼容性。 - **Maven版本** 推荐使用Apache Maven 3.x版本来编译DataX源码。 - **IDE支持** 如果你需要开发自定义插件,推荐使用IntelliJ IDEA或其他支持Maven项目的IDE。 通过以上步骤,你应该能够在Linux系统上成功安装并使用DataX来进行数据同步工作。如果有任何疑问或遇到问题,可以参考官方文档或社区资源获取更多帮助。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值