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

news2024/12/25 0:26:40

文章目录

    • 一、需求
    • 二、选型
    • 三、前期设计
      • 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.coloradmin.cn/o/652556.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python的字符串索引操作技巧

Python的字符串索引操作技巧 Python是一个强大而灵活的编程语言,被广泛用于各种领域。在Python中,字符串是一个非常重要的数据类型,它可以包含文本、数字、符号和其他任何字符。在处理字符串时,索引操作是常见的操作之一。本文将…

计算机网络之网络层:数据平面

四.网络层:数据平面 4.1 网络层概述 网络层被分解为两个相互作用的部分,即数据平面和控制平面。 数据平面决定到达路由器输入链路之一的数据报如何转发到该路由器的输出链路之一,转发方式有: 传统的IP转发:转发基于…

【算法与数据结构】707、LeetCode设计链表

文章目录 一、题目二、设计链表三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、设计链表 思路分析:这里我将的成员函数放在类外实现了,这样链表类看起来更加简洁,方便大家…

jenkins用户权限管理

环境准备: 登录jenkins: http://192.168.9.190:8091/ admin asdwhl@0 一、用户权限插件安装 1、Dashboard > Manage Jenkins > Manage Plugins > Available(可选插件) 依次安装: Role-based Authorization Strategy Authorize Project

校园二手交易平台实训报告

目 录 一、设计背景 1. 需求分析 2. 课题研究的目的和意义 二、系统需求分析与开发环境 1. 系统功能需求 2. 系统界面需求 3. 开发环境 三、系统设计 四、系统测试 1. 脑模拟器测试 五、总结与展望 六、重要程序 1. LoginActivity 2. RegisterActiv…

51Proteus仿真数控0~20mA恒流源串口DAC0832数码管显示-0036

51Proteus仿真数控0~20mA恒流源串口DAC0832数码管显示-0036 Proteus仿真小实验: 51Proteus仿真数控0~20mA恒流源串口DAC0832数码管显示-0036 功能: 硬件组成:AT89C51单片机 6位数码管DAC0832电压输出多个按键(设置、移动、加、…

INTERSPEECH 2023论文|基于多频带时频注意力的复调音乐旋律提取

论文题目: MTANet: Multi-band Time-frequency Attention Network for Singing Melody Extraction from Polyphonic Music 作者列表: 高虞安,胡英,王柳淞,黄浩,何亮 研究背景 复调音乐是一种具有多个声…

[PyTorch][chapter 41][卷积网络实战-LeNet5]

前言 这里结合前面学过的LeNet5 模型,总结一下卷积网络搭建,训练的整个流程 目录: 1: LeNet-5 2: 卷积网络总体流程 3: 代码 一 LeNet-5 LeNet-5是一个经典的深度卷积神经网络,由Yann LeCun在1998年提…

zabbix-agent安装

1.CentOS release 5 1-1.centos5 32位 [rootLV zabbix]# cat /etc/redhat-release CentOS release 5 (Final) [rootLV zabbix]# uname -a Linux LV 2.6.18-53.el5xen #1 SMP Mon Nov 12 03:26:12 EST 2007 i686 i686 i386 GNU/Linux确定了系统centos5 32位rpm方式安装&#…

Ubuntu18.04离线安装redis

因需要安装redis的服务器无法连接互联网,所以需要离线安装。首先需要下载redis的安装包,之后进行安装,在安装之前需要保证gcc,g,make等依赖包已经安装。 1. 安装gcc等依赖包 依赖包安装请参考: Ubuntu18…

CI570 3BSE001440R1需要电流显示和就地/远传控制

​ CI570 3BSE001440R1需要电流显示和就地/远传控制 CI570 3BSE001440R1需要电流显示和就地/远传控制 如果变频器与通讯方式与DCS系统连接,则只需要计算1个通讯点,不需要计算其他点数。 (6)如DCS系统外接电磁阀、指示灯、接触器等…

物联网云平台数据存储方案,这次我终于找对了

《高并发系统实战派》-- 你值得拥有 文章目录 物联网云平台存储概述为什么要做存储?存储的意义在哪里?数据存储方案设计存储数据库选型需要考虑的因素数据库选型结构化数据半结构化数据非结构化数据 案例分析第一颗栗子第二颗栗子第三颗栗子第四颗栗子 …

Web安全:vulhub 靶场搭建.(各种漏洞环境集合,一键搭建漏洞测试靶场)

Web安全:vulhub 靶场搭建. Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。让漏洞复现变得更加简单,让安全研究者更加专注于漏洞原理本身. 目录: Web安…

DLL修复工具下载,解决DLL文件问题的方法

在计算机应用程序中,我们经常会遇到一些错误提示,如“找不到.dll文件”或“无法加载.dll文件”。这些问题通常是由于缺少或损坏的DLL文件造成的。为了解决这些问题,我们可以借助DLL修复工具来修复和恢复DLL文件。本文将介绍什么是DLL文件&…

C# 自动更新(基于FTP)

效果 启动软件后,会自动读取所有的 FTP 服务器文件,然后读取本地需要更新的目录,进行匹配,将 FTP 服务器的文件同步到本地 Winform 界面 一、前言 在去年,我写了一个 C# 版本的自动更新,这个是根据配置文…

黑盒、白盒、灰盒,如何选择合适的模糊测试工具?

在软件开发和安全领域,模糊测试是一种常用技术,用于发现应用程序或系统中的潜在漏洞和安全弱点。选择不同的模糊测试方法将极大地影响测试的有效性和效率。本文将比较对比黑盒、白盒和灰盒模糊测试的特点和优势并提供选型指导。 模糊测试的分类 黑盒模糊…

人工智能带来的利好将继续推动Palantir股价反弹

来源:猛兽财经 作者:猛兽财经 Palantir的人工智能产品已经获得行业认可 Palantir(PLTR)成立于2003年,是一家专注于数据分析和人工智能的知名软件公司。其尖端产品已应用到了政府机构、企业和非营利组织等各个行业&…

华为OD机试 Java 实现【输出单向链表中倒数第k个结点】【LeetCode练习题】,附详细解题思路

一、题目描述 输入一个单向链表,输出该链表中倒数第k个结点,链表的倒数第1个结点为链表的尾指针。 链表结点定义如下: class ListNode{int value;ListNode next;public ListNode(){}public ListNode(

解决H5在native中键盘弹起影响页面交互

您好,如果喜欢我的文章,可以关注我的公众号「量子前端」,将不定期关注推送前端好文~ 问题描述 在native中拉起键盘再收回,滚动列表实际距离发生变化,被键盘一起弹上去了(我这里大约是400px的样子&#xf…

使用yolox训练自己的数据集并测试

1.首先给出yolox原模型的下载地址: ​​​​​​https://github.com/bubbliiiing/yolox-pytorch 百度网盘链接给出自己完整的模型(包括数据集以及权重文件): 链接:https://pan.baidu.com/s/1JNjB42u9eGNhRjr1SfD_Tw 提取码&am…