DataX在有赞大数据平台的实践

news/2024/11/25 16:27:23/

文章目录

    • 一、需求
    • 二、选型
    • 三、前期设计
      • 3.1 运行形态
      • 3.2 执行器设计
      • 3.3 开发策略
    • 四、Datax-Web
    • 五、总结


大家好,我是脚丫先生 (o^^o)

在看技术文章的时候,发现有赞平台采用过Datax。想到指北数据中台,数据汇聚采用的是Datax-web二次开发,借鉴经验设计思路,丰富自己方案。

有大平台做基础,优化指北数据中台就会更有思路。

路漫漫其修远兮~~~

一、需求

有赞大数据技术应用的早期,我们使用 Sqoop 作为数据同步工具,满足了 MySQL 与 Hive 之间数据同步的日常开发需求。
随着公司业务发展,数据同步的场景越来越多,主要是 MySQL、Hive 与文本文件之间的数据同步,Sqoop 已经不能完全满足我们的需求。在2017年初,我们已经无法忍受 Sqoop 给我们带来的折磨,准备改造我们的数据同步工具。当时有这么些很最痛的需求:

  • 多次因 MySQL 变更引起的数据同步异常。MySQL 需要支持读写分离与分表分库模式,而且要兼容可能的数据库迁移、节点宕机以及主从切换。

  • 有不少异常是由表结构变更导致。MySQL 或 Hive 的表结构都可能发生变更,需要兼容多数的表结构不一致情况。

  • MySQL 读写操作不要影响线上业务,不要触发 MySQL 的运维告警,不想天天被 DBA 喷。

  • 希望支持更多的数据源,如 HBase、ES、文本文件。

作为数据平台管理员,还希望收集到更多运行细节,方便日常维护:

  • 统计信息采集,例如运行时间、数据量、消耗资源
  • 脏数据校验和上报
  • 希望运行日志能接入公司的日志平台,方便监控

二、选型

基于上述的数据同步需求,我们计划基于开源做改造,考察的对象主要是 DataX 和 Sqoop,它们之间的功能对比如下:

DataX 主要的缺点在于单机运行,而这个可以通过调度系统规避,其他方面的功能均优于 Sqoop,最终我们选择了基于 DataX 开发。

三、前期设计

3.1 运行形态

使用 DataX 最重要的是解决分布式部署和运行问题,DataX 本身是单进程的客户端运行模式,需要考虑如何触发运行 DataX。
我们决定复用已有的离线任务调度系统,任务触发由调度系统负责,DataX 只负责数据同步。这样就复用了系统能力,避免重复开发。

在每个数据平台的 worker 服务器,都会部署一个 DataX 客户端,运行时可同时启动多个进程,这些都由调度系统控制。

3.2 执行器设计

为了与已有的数据平台交互,需要做一些定制修改:

  • 符合平台规则的状态上报,如启动/运行中/结束,运行时需上报进度,结束需上报成功失败
  • 符合平台规则的运行日志实时上报,用于展示
  • 统计、校验、流控等子模块的参数可从平台传入,并需要对结果做持久化
  • 需要对异常输入做好兼容,例如 MySQL 主从切换、表结构变更

3.3 开发策略

大致的运行流程是:前置配置文件转换、表结构校验 -> (输入 -> DataX 核心+业务无关的校验 -> 输出) -> 后置统计/持久化。

尽量保证 DataX 专注于数据同步,尽量不隐含业务逻辑,把有赞特有的业务逻辑放到 DataX 之外,数据同步过程无法满足的需求,才去修改源码。
表结构、表命名规则、地址转换这些运行时前置校验逻辑,以及运行结果的持久化,放在元数据系统,而运行状态的监控放在调度系统。

四、Datax-Web

datax是基于脚本化的采集工具,因此小伙伴会问:有可视化界面进行采集任务执行吗?

这必须有。

DataX Web是在DataX之上开发的分布式数据同步工具,提供简单易用的 操作界面,降低用户使用DataX的学习成本,缩短任务配置时间。

  • 用户可通过页面选择数据源即可创建数据同步任务。
  • 支持RDBMS、Hive、HBase、ClickHouse、MongoDB等数据源,RDBMS数据源可批量创建数据同步任务,支持实时查看数据同步进度及日志并提供终止同步功能,集成并二次开发xxl-job可根据时间、自增主键增量同步数据。

并且提供可视化界面,以菜单的方式进行数据汇聚。

而我们在做大数据汇聚模块过程,是基于datax-web的源码成为一个单独的微服务,以此进行二次开发,最后以容器化的形式部署。

五、总结

有赞平台使用的Datax进行数据的汇聚,采取了多个措施进行了很多的优化。但是现如今而言,我们更多的采用的是集成Datax-Web进行二次开发,可以进行分布式部署。

指北数据中台,是完全源码的方式进行了Datax-Web的集成,包括前端和后端。

在之后,将会对其进行二次开发,包括插件新增,爬虫定制等。


http://www.ppmy.cn/news/415840.html

相关文章

2020-09-16

宝可梦数据分析-平民最强宝可梦选择方案 数据时代的到来刷新了人们探索未知的方式,从基础能源建设到航天航空工程。在关都地区真新镇大木研究所一直孜孜不倦对精灵宝可梦进行研究的大木博士也不例外,在剧中我们就常常可以看到大木博士制作的精灵图鉴一直…

宝可梦数据分析-平民最强宝可梦选择方案

宝可梦数据分析-平民最强宝可梦选择方案 数据集下载 数据时代的到来刷新了人们探索未知的方式,从基础能源建设到航天航空工程。在关都地区真新镇大木研究所一直孜孜不倦对精灵宝可梦进行研究的大木博士也不例外,在剧中我们就常常可以看到大木博士制作的精…

Python训练营——阿里云天池 Day10

数据分析实战--宝可梦数据分析 介绍探索过程其他分析 介绍 数据时代的到来刷新了人们探索未知的方式,从基础能源建设到航天航空工程。在关都地区真新镇大木研究所一直孜孜不倦对精灵宝可梦进行研究的大木博士也不例外,在剧中我们就常常可以看到大木博士…

Python基础入门:从0完成一个宝可梦数据分析实战-Task4-阿里云天池

Python基础入门:从0完成一个宝可梦数据分析实战-Task4-阿里云天池 〇、整体的学习感受 本篇数据分析实战的文案写得十分接地气,以一个大家都耳熟能详的卡通游戏ID作为范本素材,并且将数据分析的流程、目的和方法都巧妙地和游戏背景结合&…

pathon实战

宝可梦数据分析-平民最强宝可梦选择方案 目录 前言一、数据集下载二、找到非传说宝可梦但是种族值达到了的传说宝可梦级别的 前言 数据时代的到来刷新了人们探索未知的方式,从基础能源建设到航天航空工程。在关都地区真新镇大木研究所一直孜孜不倦对精灵宝可梦进行…

阿里天池:Task 04:Python数据分析:从0完成一个数据分析实战(第4部分)

阿里天池:Task 04:Python数据分析:从0完成一个数据分析实战(第4部分) 学习内容:Python数据分析 Python训练营内容: 题目及内容介绍部分 宝可梦数据分析-平民最强宝可梦选择方案 数据时代的到来…

阿里云天池Python训练营(day10打卡)

【ML&Py】阿里云天池Python训练营(day10打卡)——Python数据分析:从0完成一个宝可梦数据分析实战 一、学习内容概览1.1 学习地址:[阿里云天池python训练营](https://tianchi.aliyun.com/specials/promotion/aicamppython)1.2 …

Python4学习笔记--宝可梦数据分析

运用数据分析的方式来了解宝可梦这种神奇的生物 首先进行数据集下载 # 数据集下载 !wget -O pokemon_data.csv https://pai-public-data.oss-cn-beijing.aliyuncs.com/pokemon/pokemon.csv数据集下载完成后我们就要import我们最常用的三大件:Pandas, Seaborn, Mat…