暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

实战指南:Apache DolphinScheduler优化Flink任务调度的技术细节

海豚调度 2024-09-03
624

点击蓝字,关注我们

转载自神龙大侠


我是用Apache DolphinScheduler 3.2.1版本做源代码编译部署(部署方式参考我的另外一篇文档《源代码编译,Apache DolphinScheduler前后端分离部署解决方案》)
二进制文件部署本文也适用,只需要修改相对应的配置即可。



01


资源管理底层基座替换成HDSF



Flink程序jar包是在资源中心进行管理的,对于DolphinScheduler系统来说,资源主要包括3类:

文件管理

当在调度过程中需要使用到第三方的 jar 或者用户需要自定义脚本的情况,可以通过在该页面完成相关操作。可创建的文件类型包括:txt/log/sh/conf/py/java 等。并且可以对文件进行编辑、重命名、下载和删除等操作。

UDF管理

资源管理和文件管理功能类似,不同之处是资源管理是上传的 UDF 函数,文件管理上传的是用户程序,脚本及配置文件。

任务组管理

任务组主要用于控制任务实例并发,旨在控制其他资源的压力(也可以控制 Hadoop 集群压力,不过集群会有队列管控)。您可在新建任务定义时,可配置对应的任务组,并配置任务在任务组内运行的优先级。用户仅能查看有权限的项目对应的任务组,且仅能创建或修改具有写权限的项目对应的任务组。
DolphinScheduler支持将资源存储在api-server本地文件系统或者hadoop分布式文件系统hdfs上面(也可以支持s3,我用的hdfs),生产环境把资源存在本地文件系统是不可靠的,所以需要将底层介质存储平台改成hdfs。
对于DolphinScheduler的核心组件,
  • 资源的管理是在api-server
  • 资源的使用是work-server
所以如果支持hdfs的配置修改需要对api-server和worker-server重新部署。
如果要支持hdfs需要修改(dolphinscheduler-common中的common.properties)如下配置:
resource.storage.upload.base.path=/dolphinscheduler 也可不修改
resource.hdfs.root.user=
resource.hdfs.fs.defaultFS=
hadoop.security.authentication.startup.state=true

java.security.krb5.conf.path= krb5.conf配置文件
login.user.keytab.username=
login.user.keytab.path=

修改完之后,重新编译api-server, work-server部署,就可以修改资源管理文件系统的底座了。
目前DolphinScheduler支持创建文件夹和上传文件的功能,实际使用如下图所示:

备注:
  • 目前admin用户可以看到所有的文件;
  • 如果新建一个用户的话,是看不到其他用户创建的文件


02


Worker支持Flink local模式执行任务


我以WordCount.jar包作为例子,具体可以替换成特定任务的jar包。
WordCount任务是flink的example代码,类似第一个hello world程序,在二进制包examples目录下。有batch和streaming两种任务类型的jar包

在worker机器上部署flink环境(使用1.19版本)

我用的bin二进制部署文件,下载地址为
https://flink.apache.org/2024/06/14/apache-flink-1.19.1-relea...
配置Flink path可以修改机器的bash_profile
文件,也可以修改DolphinScheduler的dolphinscheduler_env.sh
配置文件。
  • bash_profile

  • dolphinscheduler_env.sh

租户的概念

DolphinScheduler支持多个租户,不同的租户之间资源是隔离,租户的实现机制是根据linux上用户来做资源隔离,如下图所示:

所以Flink的环境配置在具体的实施情况可以支持一些非常灵活的特性支持,比如可以在worker机器上创建不同的user:
  • flink119
  • flink108
  • flink112
不同user配置不同的Flink版本环境信息,这样Flink任务可以根据选择租户的不同来支持Flink多版本特性的支持。

上传Flink任务jar包

我这直接使用Flink的example jar
包了,/batch/
目录下的WrodCount.jar

注意,非常重要,执行的时候,需要选择正确的租户。
否则,要不找不到Flink,要不对于版本差异的代码 会有不符合预期的执行情况噢。

Flink任务运行对于batch和streaming任务有不同的效果,streaming任务会一直执行,batch任务执行完之后就退出了。
可以在任务实例查看flink任务的执行日志,如下图所示:

也可以将任务的执行情况,发送到钉钉:



03


Flink on yarn支持


Flink on yarn和Flink local对于hello world程序来说没有什么特别的不同,只是需要worker机器本身的部署用户(我的是deploy用户)配置好hadoop环境。
配置好 $HADOOP_HOME
$HADOOP_CLASSPATH
即可。
Flink on yarn运行效果看图:

Yarn中application运行日志:

原文链接:https://segmentfault.com/a/1190000045101168

< 🐬🐬 >
精彩推荐


用户实践案例
奇富科技  蜀海供应链 联通数科 拈花云科
蔚来汽车 长城汽车 集度 长安汽车
思科网讯 生鲜电商 联通医疗 联想
新网银行 消费金融  腾讯音乐 自如
有赞 伊利 当贝大数据
联想 传智教育 Bigo
通信行业  作业帮


迁移实践
Azkaban   Ooize   
Airflow (有赞案例) Air2phin(迁移工具)
Airflow迁移实践
Apache DolphinScheduler 3.0.0 升级到 3.1.8 教程


新手入门
选择Apache DolphinScheduler的10个理由
Apache DolphinScheduler 3.1.8 保姆级教程【安装、介绍、项目运用、邮箱预警设置】轻松拿捏!
Apache DolphinScheduler 如何实现自动化打包+单机/集群部署?
Apache DolphinScheduler-3.1.3 版本安装部署详细教程
Apache DolphinScheduler 在大数据环境中的应用与调优
< 🐬🐬 >
参与社区
参与Apache DolphinScheduler 社区有非常多的参与贡献的方式,包括:


贡献第一个PR(文档、代码) 我们也希望是简单的,第一个PR用于熟悉提交的流程和社区协作以及感受社区的友好度。

社区汇总了以下适合新手的问题列表:https://github.com/apache/dolphinscheduler/issues/5689

非新手问题列表:https://github.com/apache/dolphinscheduler/issues?
q=is%3Aopen+is%3Aissue+label%3A%22volunteer+wanted%22

参与社区贡献:https://dolphinscheduler.apache.org/zh-cn/community

来吧,DolphinScheduler开源社区需要您的参与,为中国开源崛起添砖加瓦吧,哪怕只是小小的一块瓦,汇聚起来的力量也是巨大的!


我知道你在看

文章转载自海豚调度,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论