当前位置: 首页 > article >正文

大数据学习(57)-DataX基础

&&大数据学习&&
🔥系列专栏: 👑哲学语录: 承认自己的无知,乃是开启智慧的大门
💖如果觉得博主的文章还不错的话,请点赞👍+收藏⭐️+留言📝支持一下博主哦🤞

一、简介

DataX是一个开源的数据同步工具,主要用于在不同数据存储之间高效迁移数据。

DataX架构原理:为了解决异构数据源同步问题,DataX 将复杂的网状的同步链路变成了星型数据链路,DataX 作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

二、DataX 的核心概念

  1. 数据同步模型

    • DataX 采用 Reader -> Channel -> Writer 的模型:

      • Reader:从源数据源读取数据。

      • Channel:数据传输通道,负责数据的缓冲和传输。

      • Writer:将数据写入目标数据源。

  2. 插件化架构

    • DataX 的核心是插件化设计,支持多种数据源的读写插件(如 MySQL、Oracle、HDFS、Hive 等)。

    • 用户可以根据需求扩展自定义插件。

  3. 任务配置

    • 通过 JSON 配置文件定义数据同步任务,包括 Reader、Writer 和 Channel 的配置。

二、DataX 的重点

  1. 配置文件编写

    • 理解 JSON 配置文件的结构,包括 jobcontentreader 和 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 配置文件是定义数据同步任务的核心部分。配置文件通常包括 jobcontentreader 和 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 插件的名称(如 mysqlreaderoraclereader 等)。

    • parameter:配置 Reader 插件的具体参数,如连接信息、表名、字段等。

4. writer

定义数据目标写入插件及其配置。

  • 配置内容

    • name:指定 Writer 插件的名称(如 hdfswritermysqlwriter 等)。

    • parameter:配置 Writer 插件的具体参数,如连接信息、文件路径、字段等。

二、channel(并发通道数)

  1. 作用

    • channel 控制任务的并发度,即同时执行的数据同步任务数。

    • 增加 channel 可以提高数据同步的速度,但也会增加对数据源和目标系统的压力。

  2. 配置依据

    • 数据源性能:如果数据源(如 MySQL、Oracle)的读写性能较高,可以增加 channel

    • 目标系统性能:如果目标系统(如 HDFS、Hive)的写入性能较高,可以增加 channel

    • 网络带宽:如果网络带宽充足,可以增加 channel

    • 硬件资源:如果运行 DataX 的机器 CPU 和内存资源充足,可以增加 channel

  3. 推荐配置

    • 初始值可以设置为 3-5,然后根据任务执行情况逐步调整。

    • 如果数据量较大,可以设置为 10-20,但需要监控系统负载。

  4. 示例

    "setting": {
      "speed": {
        "channel": 5
      }
    }

三、errorLimit(错误限制)

  1. 作用

    • errorLimit 控制任务对错误的容忍度,包括记录数错误和百分比错误。

    • 当错误超过限制时,任务会失败。

  2. 配置依据

    • 数据质量:如果数据质量较高,可以设置较低的错误容忍度。

    • 业务需求:如果任务对数据准确性要求较高,可以设置较低的错误容忍度。

  3. 推荐配置

    • record:允许的最大错误记录数,默认值为 0。可以设置为 10 或更高。

    • percentage:允许的最大错误百分比,默认值为 0.02(即 2%)。可以设置为 0.05(即 5%)。

  4. 示例

    "setting": {
      "errorLimit": {
        "record": 10,
        "percentage": 0.05
      }
    }

四、综合配置示例

以下是一个综合考虑 channelbyte 和 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
      }
    }
  }
}

http://www.kler.cn/a/575844.html

相关文章:

  • 开发vue小游戏:数字华龙道
  • java中有了ArrayList为什么还有LinkedList
  • io学习------>进程
  • LeetCode 栈章节
  • centos中使用svn整理
  • 3.1ACM定级赛复盘
  • 文本处理Bert面试内容整理-BERT的变种有哪些?
  • k8s面试题总结(十)
  • 分布式锁—6.Redisson的同步器组件
  • CS144 Lab Checkpoint 3: the TCP sender
  • Virtual Machine Platform windows功能启用报错
  • 【Leetcode 每日一题】2597. 美丽子集的数目
  • Spring (六)容器-生命周期
  • DeepSeek V3 源码:从入门到放弃!
  • Python Pandas实现导出两个Excel数据集的对应值的差异值分析
  • 网络安全中蓝牙攻击有哪些?
  • 期权帮|中证1000股指期权交割结算价怎么算?
  • SVG 参考手册
  • AI预测体彩排3新模型百十个定位预测+胆码预测+杀和尾+杀和值2025年3月7日第12弹
  • ①Modbus TCP转Modbus RTU/ASCII网关同步采集无需编程高速轻松组网