大数据任务调度和数据同步组件初探

news2024/9/25 21:29:55

本文个人博客地址

背景

数据从最原始的状态,可能是一个 excel,一个文本,或者是来自业务数据库的数据,格式各种各样,落地到数据仓库、数据湖中,数据的同步过程 是必不可少的

在这里插入图片描述

图片来源

传统的数据同步方式主要是基于定时任务的模式,通过任务调度服务,每天定时将原始数据提取(extract),进行清洗处理,比如过滤掉重复数据(transform),最后存入数仓(load),即 ETL 任务模式。这种模式对数据的实时性要求不高,常见的同步工具有 datax、sqoop

在这里插入图片描述

实时同步,则需要让同步任务一直处于运行状态,有新数据进来需要在秒级别内更新。这种情况下传统的调度模式就不能满足了,需要能时刻监测数据同步状态、管理和启停任务、甚至动态分配任务资源。一种常见的模式是 任务通过 spark / flink 等流式任务引擎去执行,然后在上层通过 k8s 或其他任务管理平台 进行调度

本质上实时同步数据的模式和 ETL 是一样的,对数据依然有 抽取、清洗和写入的操作。只是时效性、任务管理复杂度、资源动态分配能力上,要求会更高

在这里插入图片描述

图片来源-DataFunTalk:阿里建设一站式实时数仓的经验分享

搭建可以在公司内通用的 EMR 平台,除了满足数据同步的功能,还需要提供任务调度的功能,因为用户的任务各种各样,可能是自定义的 spark / flink 任务,python 脚本 对数据自行处理的任务 等等,所以需要提供能让用户自行上传任务、执行任务的平台

在这里插入图片描述

图片来源-xxl-job工作原理解析

不过相比数据同步 离线和实时同步架构相差较大,任务调度平台架构的发展则不离其宗,基本变化不大

本文将会对业界主流的任务调度服务 和 数据同步服务 做一些介绍,大家可以参考,择优选择更适合自己业务需求的服务 进行尝试

云原生背景下的任务调度组件

这里列举三个主流的任务调度服务: azkaban、airflow 和 dolphinscheduler。我们先分别看基于这三个组件 数仓的架构可能是什么样的,然后系统对比,最后大致看下使用页面

传统离线数仓: azkaban

在这里插入图片描述

大数据开发之路-离线数仓

实时离线融合: airflow

在这里插入图片描述

Data Warehouse

实时离线融合: dolphinscheduler

在这里插入图片描述

基于DolphinScheduler的使用浅谈数仓分层及模型设计

对比

大数据调度平台分类大对比(Oozie/Azkaban/AirFlow/XXL-Job/DolphinScheduler)

【大数据】【调度】Airflow 和 Azkaban的选型

特性\组件airflowdolphinschedulerazkaban
web界面有,功能比较多有,且支持中文有,比较简单
工作流语法python代码内定义,可通过界面查看但不能编辑可视化编辑,对小白很友好,但不适合通过代码编排配置文件
跨dag/project依赖支持,可通过 ExternalTaskSensor 配置不支持不支持
易用程度安装和维护上手难度高,组件包括 WebServer、Scheduler、Worker安装维护上手难度高,组件包括 master、api、alert、worker 等,不过界面支持中文,可视化编辑任务比较友好上手难度低,只有 webserver、executor 两个组件
变量定义支持全局参数,和一些内置模板变量,如 {{ ds }}不支持全局变量不支持全局变量
调度中心HA支持 ,对 db 版本有要求(mysql >= 8)支持不支持
执行器HA支持支持支持
权限管控支持用户、任务级别配置用户角色支持管理员、普通用户两种,不支持项目层级配置支持用户、任务级别配置
任务监控可通过定义 on_failure_callback 在任务结束后触发提醒,示例,支持metrics支持任务告警,支持通过企业微信、飞书等方式发送可配置 job 的 failure.emails 让任务失败后发送邮件提醒

总结: ds 对各种 ETL 任务类型的界面化配置支持更好,airflow 更适合 python 基础较好的团队使用,编排任务代码化 笔者认为也是一种趋势。azkaban 较为传统,使用起来更简单,也更适合定义流程简单的 ETL 任务,但是相比前两个组件,更新不是特别活跃

airflow 架构和界面

在这里插入图片描述

在这里插入图片描述

Architecture Overview

dolphinscheduler 界面

在这里插入图片描述

azkaban 架构和界面

在这里插入图片描述

在这里插入图片描述

1. Azkaban 介绍

数据同步组件

对数据同步而言,支持更多的数据源是更重要的,传统数据同步工具,如 sqoop、datax ,都是对基于hadoop的传统数仓、基于关系型数据库 支持更好,不过对更现代的 OLAP、甚至湖仓一体的架构支持并不够好

随着发展,功能更强大的同步组件 如 seatunnel、chunjun 也逐渐占有了一席之地,在业务使用实际场景中可以优先选择它们

sqoop

在这里插入图片描述

Sqoop原理和架构

【知识】ETL大数据集成工具Sqoop、dataX、Kettle、Canal、StreamSets大比拼

特点:

  • 离线全量同步,不支持增量导入
  • 仅支持关系型数据库,比如从 mysql 同步到 hive
  • 任务运行方式: mapreduce

datax

在这里插入图片描述

阿里云开源离线同步工具DataX3.0介绍

在这里插入图片描述

数据同步 DATAX 工作原理及源码解读

特点:

  • 相比 sqoop 支持的数据源更丰富,支持非关系型数据库(如从 mysql 写到 hdfs、mongodb、es 等)
  • 表字段的映射,必须提前写成json配置
  • 同步任务在单节点运行(在执行 datax 的节点运行)

canal

在这里插入图片描述

Canal——原理架构及应用场景

特点:

  • 只能同步增量数据(本质:模拟 mysql slave 进行数据同步)
  • 支持数据源: kafka、rocketmq、hbase、elasticsearch
  • 实时任务管理:需要单独部署管理服务,如 cloudin-datax、Canal Admin

datalink

在这里插入图片描述

git-ucarGroup/DataLink

特点:

  • 支持增量数据同步任务的管理,基本任务启停、同步状态检查等
  • 对 canal 、datax 等同步工具进行了封装,支持数据源: mysql、hbase、elasticsearch、kafka、kudu
  • 神州租车开源,现在不再维护,不过基本功能比较完善

神州优车数据交换平台的架构、建设与痛点难点详解

seatunnel

在这里插入图片描述

【大数据】什么是数据集成?(SeaTunnel 集成工具介绍)

特点:

  • 通过spark / flink 方式同步数据,支持更多现代数据源(clickhouse、doris、iceberg 等)
  • 任务管理
  • 笔者后续会更详细地体验这个工具,补充和更多实时同步组件的使用对比

airbyte

在这里插入图片描述

Architecture overview

特点:

  • 完全云原生化的数据同步服务,一个同步任务对应一个容器
  • 适用ETL 场景(配置定时任务,最小周期5分钟,并不是完全实时)
  • 上手难度高,学有余力可以尝试

展望

对于任务调度平台来说,本质上都是 定时 + 触发任务 + 管理任务 的使用机制,基本架构都离不开 scheduler + task worker,相差不大

但对于数据同步组件来说,现在有一种离线往实时迁移的趋势。所以 诸如 sqoop、datax 这种传统离线数据同步方式应该会逐渐淡出,相比较,seatunnel 、 airbyte 这种后起之秀 一定会越来越强大。不过,实时也意味着需要更灵活的资源分配方式,需要掌握更深的技术栈,对开发人员要求也会更高

Anyway,所有大数据架构的底层都是存储。数据如果是存放在 hdfs + hive 这种架构,对实时性要求不高,那么 sqoop + azkaban / airflow 模式就完全足够了。数据需要存放在 clickhouse / kudu 这种 OLAP 存储,业务需要获取实时数据进行分析,那么就需要 seatunnel 这种实时同步的服务。没有绝对的哪个更好,只有更合适

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/504849.html

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

相关文章

如何解决IP能ping通但无法上网的问题?

当我们在网络环境中遇到无法上网的问题时,可能会尝试使用ping命令来测试网络连接是否正常。如果ping测试成功,说明我们的IP地址能够和网络中其他设备进行通信,但是无法上网。这种情况下,我们需要采取一些措施来解决这个问题。本文…

软考A计划-重点考点-专题三(操作系统知识)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

springboot 多模块项目

比起传统复杂的单体工程,使用Maven的多模块配置,可以帮助项目划分模块,鼓励重用,防止POM变得过于庞大,方便某个模块的构建,而不用每次都构建整个项目,并且使得针对某个模块的特殊控制更为方便。…

【前端知识】Cookie, Session,Token和JWT的发展及区别(三)

【前端知识】Cookie, Session,Token和JWT的发展及区别(三) 7. Token7.1 Token的背景及定义7.1.1 背景7.1.2 定义7.1.3 基于定义的N个思考(1)关于无状态的相关思考(2) 避免查库的思考 7.2 Token的特点&#…

记一次perf实验,检验CPU的分支预测功能

实验介绍 在上一篇文章中,作者通过给Alder Lake(12th gen i5 1240p)安装Ubuntu22.04,终于把PMU用起来了 $ dmesg | grep PMU [ 0.127326] Performance Events: XSAVE Architectural LBR, PEBS fmt4-baseline, AnyThread dep…

明文传输的FTP 是否已慢慢被时代所抛弃?

什么是FTP?FTP即File Transfer Protocol,含FTPS/SFTP,诞生于1971年,是最为古老的网络协议和工具之一,是一种在网络进行文件传输的标准应用层协议,也泛指基于FTP协议实现文件传输的服务端软件和客户端软件&a…

《双向队列》

介绍 双向队列(deque,全名double-ended queue)是一种具有队列和栈性质的数据结构。 对于队列,我们只能在头部删除或在尾部添加元素, 而「双向队列 Deque」更加灵活,在其两端都能执行元素添加或删除操作。…

【笔记】【HTTP】《图解HTTP》第3章 HTTP报文内的HTTP信息

前言 有输入就要有产出,该笔记是本人看完《图解HTTP》后对每章涉及到的知识进行汇总博客将会已书的每章为一篇发布,下一篇博客发布时间不确定笔记中有些个人理解后整理的笔记,可能有所偏差,也恳请读者帮忙指出,谢谢。…

TCP网络编程-python

OSI七层模型和TCP/IP四层模型 通信时需要用到网络模型来进行数据封装。一层一层封装和拆包。 OSI 模型把网络通信的工作分为 7 层,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。 分层太多,增加了网络工作的复杂性。 简…

锐捷网络,无边光景一时新

绍熙五年,朱熹在除知潭州、荆湖南路安抚,在长沙岳麓山扩建了闻名天下的岳麓书院。他写过这样一句赞美春日的诗:胜日寻芳泗水滨,无边光景一时新。 近一千年后,我们依旧能在长沙感受到“无边光景一时新”魄力雄浑。这次&…

Python自动化测试实战篇(8),pytest 测试用例初始化的五种方法与清洗方法

这些是之前的文章,里面有一些基础的知识点在前面由于前面已经有写过,所以这一篇就不再详细对之前的内容进行描述 1.什么是是自动化测试环境初始化与清除2.自动化测试环境初始化与清除有哪些步骤?3.pytest中如何进行用例初始化与清洗方法1.类…

【JMeter】前端使用JMeter测试JSEncrypt加密登录

前端使用JMeter测试JSEncrypt加密登录 简介:前端开发时会接触到用户登录,登录时为了数据的安全会使用到jsencrypt加密工具,同时我们需要使用jmeter来进行压测,帮助我们了解Web应用程序在高负载情况下的性能表现,从而为…

工业物联网是什么?工业物联网发展前景如何?

工业物联网 (IIoT) 是在工业环境中使用互连的智能设备、传感器和软件来提高运营效率、生产力和安全性。IIoT 系统通常涉及机器、设备和传感器,这些机器、设备和传感器嵌入了相互通信以及与中央系统通信的技术。这允许对工业过程进行实时监控和分析,并能够…

jenkins配置springcloudalibaba流水线加服务器自动构建

参数化构建过程 Extended Choice Parameter Name:project_name Description:请选择需要构建的项目名称 Basic Parameter Types Parameter Type: Hidden Number of Visible Items: 20 Delimiter: , Choose Source for Value value: deerchain-gateway-95…

Linux权限划分的原则

考察的不仅是一个具体的指令,还考察对技术层面的认知。 如果对 Linux 权限有较深的认知和理解,那么完全可以通过查资料去完成具体指令的执行。更重要的是,认知清晰的程序员可以把 Linux 权限管理的知识迁移到其他的系统设计中。 权限抽象 一…

MyBatisPlus学习笔记(SpringBoot版)

MyBatisPlus学习笔记(SpringBoot版) 一、MyBatis-Plus简介1、简介2、特性3、支持数据库4、框架结构5、代码及文档地址 二、入门案例1、开发环境2、创建数据库及表2.1 创建表2.2 添加数据 3、创建Spring Boot工程3.1 初始化工程3.2 引入依赖3.3 idea中安装…

【MySQL】绪论 MySQL工作环境

文章目录 实验内容实验步骤实验内容 MySQL命令MySQL 的启动与关闭MySQL 管理备份和还原数据库navicat工具使用实验步骤 1. MySQL命令 (1)查看MySQL基本命令 (2)查看MySQL版本信息 2. MySQL的启动与关闭 (1)启动MySQL服务器 (2)测试服务器启动成功 (3)合法用

MATLAB绘图函数的相关介绍——海底测量、二维与三维图形绘制

系列文章目录 MATLAB求函数极限的简单介绍 文章目录 一、问题引导 1.1、海底曲线绘制问题 1.2、绘制二维与三维图形 二、代码演示 2.2、二维与三维绘图案例 2.2.1、官方对plot函数的解释 总结 一、问题引导 1.1、海底曲线绘制问题 海底测量,低潮时海平面上…

案例研究|萤石网络通过JumpServer解决安全运维难题

杭州萤石网络股份有限公司(以下简称为萤石网络)于2015年在杭州成立,是安全智能生活主流品牌,核心产品包括智能家居摄像头、智能门锁、智能服务机器人等。2021年,萤石网络家用摄像头占国内出货量市场份额的25%&#xff…

代码随想录算法训练营day32 | 贪心算法:122.买卖股票的最佳时机II ,55. 跳跃游戏,45.跳跃游戏II

代码随想录算法训练营day32 | 贪心算法:122.买卖股票的最佳时机II ,55. 跳跃游戏,45.跳跃游戏II 122.买卖股票的最佳时机II55. 跳跃游戏45.跳跃游戏II 122.买卖股票的最佳时机II 教程视频:https://www.bilibili.com/video/BV1ev4…