热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

架构升级给DolphScheduler带来2~3倍性能提升

 引言大数据任务调度作为大数据建设中的核心基础设施,在经过社区用户们长期的使用中,不少用户对调度也提出了很多新的要求,为此,ApacheDolphinScheduler(Incub

 引言

大数据任务调度作为大数据建设中的核心基础设施,在经过社区用户们长期的使用中,不少用户对调度也提出了很多新的要求,为此,Apache DolphinScheduler(Incubating)经过长达  5 个多月的辛苦努力, 终于发布了 1.3.2 正式版本。DolphinScheduler-1.3.2 有超过 30 名贡献者参与开发,性能较 1.2 版本有 2 ~ 3 倍的提升,相对 1.2 版本,1.3.x 增加了诸如 K8s支持、多目录管理等重要的新特性和新的任务类型。1.3.x 重要的改动如下:

架构升级:重构 worker server

  • 移除基于 ZooKeeper 的任务队列

  • 引入 Netty 进行 master 和 worker 间的通信

  • 提供了三种 master 分发任务的算法:随机,轮询和资源线性加权

  • Worker 不再操作数据库,减轻数据库压力

 

新增任务类型

  • 数据同步节点:新增了 DataX 和 Sqoop 节点,加强 DolphinScheduler 构建全流程ETL 工作流的能力

  • 条件分支节点:提供了多个上游任务结果的复杂逻辑判断能力,根据用户自定义逻辑进行分支流转

 

易用性提升

  • 资源中心支持目录管理:资源中心支持目录类型,用户可以分项目或模块进行资源文件管理

  • 支持 Ambari 插件:支持使用 Ambari 进行 DolphinScheduler 的集群部署和管理

  • 支持 K8s:DolphinScheduler 支持 K8s 部署。为了支持 k8s,worker 分组数据不再存储在 mysql,而通过配置文件中指定 worker 标签的方式,存储在 ZooKeeper 中

  • 简化配置文件:分离 install.sh 中的参数配置和集群部署配置,install.sh 仅进行集群部署,集群参数配置文件抽取到 conf/config/install_config.conf 中

  • 工作流布局优化:提供一键美化工作流布局功能

  • 其他特性(部分)

  • 增加工作流复制功能

  • 删除任务实例级联删除对应的任务实例日志

1.3.x 新特性解读

1、重构 Worker

DolphinScheduler 1.2 的整体架构

架构升级给DolphScheduler带来 2~3 倍性能提升

DolphinScheduler 1.2 架构

 

在 DolphinScheduler 1.2 中,master 和 worker 的职责分别如下:

Master 

master 采用分布式无中心设计理念,master 主要负责 DAG 任务切分、任务提交监控,并同时监听其它master 和 worker 的健康状态。

master 服务启动时向 Zookeeper 注册临时节点,通过监听 Zookeeper 临时节点变化来进行容错处理。

该服务内主要包含:

  • Distributed Quartz 分布式调度组件,主要负责定时任务的启停操作,当 quartz 调起任务后,Master内部会有线程池具体负责处理任务的后续操作

  • MasterSchedulerThread 是一个扫描线程,定时扫描数据库中的 command 表,根据不同的命令类型进行不同的业务操作

  • MasterExecThread 主要是负责DAG任务切分、任务提交监控、各种不同命令类型的逻辑处理

  • MasterTaskExecThread 主要负责任务的持久化

 

Worker

worker 也采用分布式无中心设计理念,worker 主要负责任务的执行和提供日志服务。worker 服务启动时向 Zookeeper 注册临时节点,并维持心跳。

该服务包含:

  • FetchTaskThread 主要负责不断从 Task Queue 中领取任务,并根据不同任务类型调用TaskScheduleThread 对应执行器。

  • LoggerServer 是一个 RPC 服务,提供日志分片查看、刷新和下载等功能

 

在 1.2 版本实现的架构中,任务队列的实现基于 ZooKeeper。master 将任务数据存放到 ZooKeeper 中,然后 worker 节点通过分布式锁的方式去消费任务队列,延迟了任务开始执行的时间。为保证任务队列的性能,ZooKeeper 的节点中并未存储执行任务所需的全部数据。许多任务的元数据如租户,队列和任务实例信息等都需要由 worker 操作数据库进行获取,增加了数据库的负担。所以在 1.3 的架构设计中,我们着重考虑到减少 worker 的压力,设计了如下新架构

 

DolphinScheduler 1.3 新架构

架构升级给DolphScheduler带来 2~3 倍性能提升

DolphinScheduler 1.3 新架构

 

在 DolphinScheduler 1.3 中,任务队列基于 Netty 实现,master 保留了原有的逻辑,当 master 节点切分出任务节点后,使用配置的任务分发策略直接发送目标 worker 节点进行执行。worker 节点在启动的时候将节点信息和分组信息注册到 ZooKeeper 中,供 master 节点进行调用。性能优化的核心是去除了 worker节点的 ZooKeeper 操作和数据库操作。1.3 的架构分层详细图如下:

架构升级给DolphScheduler带来 2~3 倍性能提升

 

1.3 整个系统运作过程的活动图如下:

架构升级给DolphScheduler带来 2~3 倍性能提升

更多详细信息参见 issue:https://github.com/apache/incubator-dolphinscheduler/issues/1658

2、新增任务类型

数据同步节点

DolphinScheduler 作为一个数据处理调度系统支持了多种 ETL 功能节点,如 SQL 节点,存储过程节点和 Spark 节点等。在整个 ETL 流程中,多源异构数据的集成是基础。因此,在1.3.1版本中DolphinScheduler 集成了成熟的数据交换引擎 DataX 和 Sqoop 以支持多源异构数据源间的传输交换。目前,DolphinScheduler 已打通整个数据摄取-数据处理-数据结果同步的 ETL 流程。使用数据同步节点,可以避免在shell脚本中直接配置数据源的连接信息,所有的数据源权限均受 DolphinScheduler 管控。

DataX 节点

 

架构升级给DolphScheduler带来 2~3 倍性能提升

Sqoop节点

 

架构升级给DolphScheduler带来 2~3 倍性能提升

条件分支节点

Dolphin Scheduler 1.3.1 支持条件分支节点,用户可以在自定义参数中定义分支流转的判断逻辑,根据上游任务的执行情况,决定后续执行的分支。

架构升级给DolphScheduler带来 2~3 倍性能提升

 

注意,条件节点是一种逻辑判断任务,不会分发到 worker 去执行,是在 master 上执行的一个逻辑节点。

3、资源中心支持目录结构

DolphinScheduler 1.3.1 支持了资源中心目录化和授权资源使用目录树的功能,极大的改善了资源文件的使用体验。资源中心目录化使得分项目管理资源文件成为可能而不是将租户的所有资源文件都放在一个目录下。资源中心支持授权整个目录给用户,提高了多文件授权的操作效率。使用目录树的方式进行资源文件授权,可以避免 1.2 版本一个一个寻找资源文件的耗时操作。

架构升级给DolphScheduler带来 2~3 倍性能提升

 

架构升级给DolphScheduler带来 2~3 倍性能提升

4、支持 Ambari 插件

Ambari 插件可以让 DolphinScheduler 和 Ambari 轻松集成,利用 Ambari 的能力可以使部署和管理 DolphinScheduler 更加简单,也更容易扩/缩容,

架构升级给DolphScheduler带来 2~3 倍性能提升

 

架构升级给DolphScheduler带来 2~3 倍性能提升

5、支持 K8s

1.3.x 也提供了对 K8s 的支持,后续也会推出 DolphinScheduler 的 Docker 官方镜像,更方便大家部署 DolphinScheduler,这块的详细文档请参考:[ K8s Readme ](https://github.com/apache/incubator-dolphinscheduler/blob/1.3.1-release/docker/kubernetes/dolphinscheduler/README.md)

架构升级给DolphScheduler带来 2~3 倍性能提升

6、其他一些重要的特性:

  • 批量导出和导入工作流

  • 流程定义复制

  • 删除流程实例级联删除任务日志

  • DAG 图一键格式化,非常适合通过 open API 调用的场景

  • 流程图美化

  • 简化配置,优化部署体验

  • 完善自动化 CI、CD

 

1.3.2 版本带来的新特性

新特性:

  • Worker Server 可以设置多个 worker groups

  • JVM 参数优化

  • 给流程图连线添加标签

 

值得注意的是 1.3.2 版本修复了 1.3.1 的 20 多个 bug ,其中需要关注的是

  • [#3058] The task running order in the process instance does not follow the topological order in the process definition

该 bug 是在打开任务节点,没有正常关闭窗口,然后又新建一个流程定义导致新建的流程定义的前置节点的信息丢失。这可能造成 1.3.1 版本的流程图运行错乱的问题

此外,1.3.2 也带来了 4 项功能改进和增强,具体变化请参考:

https://github.com/apache/incubator-dolphinscheduler/releases/tag/1.3

Apache DolphinScheduler 社区介绍

Apache DolphinScheduler 是一个非常多样化的社区,至今贡献者已100多名, 他们分别来自 30 多家不同的公司。 微信群用户3000人。

架构升级给DolphScheduler带来 2~3 倍性能提升

 

部分用户案例(排名部分先后)

已经有近 400 多家企业和科研机构在使用 DolphinScheduler,来处理各类调度和定时任务,另有 800 多家公司开通了海豚调度的试用:

架构升级给DolphScheduler带来 2~3 倍性能提升

 

Apache DolphinScheduler 能力

  • 以DAG图的方式将Task按照任务的依赖关系关联起来,可实时可视化监控任务的运行状态

  • 支持丰富的任务类型:Shell、MR、Spark、Flink、SQL(mysql、postgresql、hive、sparksql)、Python、Http、Sub_Process、Procedure等

  • 支持工作流定时调度、依赖调度、手动调度、手动暂停/停止/恢复,同时支持失败重试/告警、从指定节点恢复失败、Kill任务等操作

  • 支持工作流优先级、任务优先级及任务的故障转移及任务超时告警/失败

  • 支持工作流全局参数及节点自定义参数设置

  • 支持资源文件的在线上传/下载,管理等,支持在线文件创建、编辑

  • 支持任务日志在线查看及滚动、在线下载日志等

  • 实现集群HA,通过Zookeeper实现Master集群和Worker集群去中心化

  • 支持对Master/Worker cpu load,memory,cpu在线查看

  • 支持工作流运行历史树形/甘特图展示、支持任务状态统计、流程状态统计

  • 支持补数

  • 支持多租户

  • 支持国际化

加入 Apache DolphinScheduler

在使用 DolphinScheduler 的过程中,如果您有任何问题或者想法、建议,都可以通过Apache 邮件列表或者github issue参与到 DolphinScheduler 的社区建设中来。

架构升级给DolphScheduler带来 2~3 倍性能提升

 

欢迎加入贡献的队伍,加入开源社区从提交第一个 PR开始,

  - 找到带有”easy to fix”标记或者一些非常简单的issue(比如拼写错误等),先通过第一个PR熟悉提交流程,如果有任何疑问,欢迎联系

 

邮件订阅方式:

https://dolphinscheduler.apache.org/zh-cn/docs/development/subscribe.html

github:

https://github.com/apache/incubator-dolphinscheduler

官方网站

https://dolphinscheduler.apache.org/en-us/

 

欢迎下载试用,在试用过程中发现任何问题,可以通过邮件列表或 github 上新建 issue 进行反馈!

 

架构升级给DolphScheduler带来 2~3 倍性能提升

关注小晨说数据,获取更多大厂技术干货分享

回复“spark”,“flink”,中台”,机器学习”,“用户画像”获取海量学习资料~~~


你也「在看」吗?


推荐阅读
  • 初探性能优化:入门指南与实践技巧
    在编程领域,常有“尚未精通编码便急于优化”的声音。为了从性能优化的角度提升代码质量,本文将带领读者初步探索性能优化的基本概念与实践技巧。即使程序看似运行良好,数据处理效率仍有待提高,通过系统学习性能优化,能够帮助开发者编写更加高效、稳定的代码。文章不仅介绍了性能优化的基础知识,还提供了实用的调优方法和工具,帮助读者在实际项目中应用这些技术。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • 【数据结构与算法】——快速排序
    Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql)间进行数据的传递,可以将一个关系型数据库(例如:MySQL,O ... [详细]
  • 前言本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出, ... [详细]
  • 从接触DataX起就有一个疑问,它和Sqoop到底有什么区别,昨天部署好了DataX和Sqoop,就可以对两者进行更深入的了解了。两者从原理上看有点相似,都是解决异构环境的数据交换 ... [详细]
  • PHP自学必备:从零开始的准备工作与工具选择 ... [详细]
  • 如何安全有效地强制移除Kubernetes Pod
    在Kubernetes集群管理中,有时需要安全且高效地强制移除Pod以解决故障或进行维护。本文介绍了在遇到难以终止的Pod时,如何通过正确的方法进行强制删除,同时确保不影响集群的稳定性和其他服务的正常运行。通过具体的操作步骤和最佳实践,帮助读者掌握处理此类问题的有效方法。 ... [详细]
  • 工作原理_一文理解 Spark 基础概念及工作原理
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了一文理解Spark基础概念及工作原理相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 马蜂窝数据总监分享:从数仓到数据中台,大数据演进技术选型最优解
    大家好,今天分享的议题主要包括几大内容:带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程;我个人认为数 ... [详细]
  • 数据仓库中基本概念
    一、数据仓库数据仓库(DataWarehouse)是一个面向主题的、集成的、稳定的且随时间变化的数据集合,用于支持管理人员的决策面向主题主题就是类型的意思。传统数 ... [详细]
  • MySQL数据 实时同步到KafkaBinlog canal、Maxwell、Kafka Connect 实现MySQL增量同步
    一、需求分析早期业务借助Sqoop将Mysql中的数据同步到Hive、hdfs来进行数据分析,使用过程中也带来了一些问题:虽然Sqoop支持增量同步但还属于粗粒度的离线同步,无法满 ... [详细]
  • Oozie任务调度框架详解及使用简介(一)
    摘要:个人最近一段时间一直在使用oozie,从刚开始的各种别扭到现在越来越觉得有意思的情况下,想整理一下关于oozie的认知,整理出来一个oozie系列,本来市面上关于oozie的 ... [详细]
  • hadoop 2.6.0上安装sqoop1.99.6binhadoop200
    第一步:下载sqoop-1.99.6-bin-hadoop200.tar.gz地址:http:www.eu.apache.orgdistsqoop1.99.6第二步& ... [详细]
  • 数据仓库分层设计(基于Hive)
    1、数据仓库逻辑分层架构先来看数据仓库的逻辑分层架构:分层名称可能不一样,但基本是都是这样想要看懂数据仓库的逻辑分层架构,先要弄懂以下概念 ... [详细]
  • Sqoop 安装配置
    简介Sqoop是一款开源的工具,主要用于在Hadoop(Hive)与传统的数据库(mysql、postgresql…)间进行数据的传递。利用Sqoop可以将一个关系 ... [详细]
author-avatar
sddfdffwfefe_863
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有