DolphinScheduler-1.3.0-dev 功能体验
DolphinScheduler是什么
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
DS曾用名称EasyScheduler,在进入Apache孵化器后,更名为DolphinScheduler。DS-1.2.0版本是进入Apache基金会后发布的第一个Apache版本,也是目前生产环境使用较多的版本。
最近,DS-1.3.0在封版进行测试和bug修复工作,即将ga,各位敬请期待。
本文前半部分是组件部署,功能测试在后半部分,木有耐心的老铁可以直接阅读后面的内容。
官网
https://dolphinscheduler.apache.org/en-us/
github
https://github.com/apache/incubator-dolphinscheduler
ds-1.3.0特性及RoadMap录播
https://www.slidestalk.com/DolphinScheduler/Dolphin_Scheduler_Roadmap?video
DS-1.3.0新特性
架构调整
Master-Worker直接通信,降低延迟
去除Worker的DB操作,职责更单一
减轻DB元数据库的压力,减少极端情况下可能的调度延时
Master添加多种任务分发策略
随机
轮询
CPU和内存线性加权
新增任务类型
数据同步节点
DataX
Sqoop
条件分支节点
易用性
提供Ambari插件
支持k8s
资源中心目录化
其他特性(部分)
适配Windows任务
工作流复制
删流程实例级联删除任务日志
简化配置,优化部署体验
DS-1.3.0部署(CDH5.16.2)
集群环境
CDH5.16.2
DS源码编译
代码拉取
适配CDH5.16.2
创建CDH分支
适配CDH5.16.2
修改外层pom文件
源码编译
正常编译完成后,会在dolphinscheduler-dist下生成:
apache-dolphinscheduler-incubting-1.3.0-cdh5.16.2-dolphinscheduler-bin.tar.gz
从1.2.1开始,ds打包之后并不会生成前端的包,web通过jetty启动
组件部署
准备工作
创建部署用户免密(部署机都需要做)
创建MySQL数据库
部署实施
上传安装包
解压安装包&修改权限
ds安装包各目录功能如下
初始化元数据库
ds默认的元数据库是pg,Hadoop平台一般使用mysql作为元数据,这里使用mysql
需要上传mysql的连接jar到ds的lib目录下,必须要做
修改数据库配置
初始化数据库
配置ds的环境变量
集群部署参数配置
ds在1.3.0之前,一键部署的配置文件在install.sh中。1.3.0版本的install.sh脚本只是一个部署脚本,部署配置文件在conf/config/install_config.conf中
下面是1.3.0的配置文件,与之前版本的配置文件相比,精简了不少,只保留了必要的配置,如果是从老版本升级,需要自行去对应的模块配置文件中进行修改
对比1.2.0配置文件中去除的配置如下(升级需要关注,新版本建议各位老铁细看一下配置的变更项,这次测试的1.3.0的dev版本,正式版本ga之后会出一个详细的配置解读)
excel文件路径 xlsFilePath -> alert.properties | xls.file.path
alert master worker api模块的配置 -> 对应模块的properties文件修改
执行任务配置 -> conf/common.properties修改
programPath
downloadPath
execPath
开发状态 devState -> conf/common.properties修改
zk的连接配置和znode相关配置,如果使用一套zk托管了多套ds,需要自行修改配置 -> conf/zookeeper.properties
配置文件中,在配置worker机器的时候,需要在后面配置上worker的所属worker group,这是因为在新版本中,worker group分组信息从mysql移动到了zk中
添加Hadoop集群配置文件
如果集群未启用HA,直接在install_config.conf文件中进行编写
如果集群启用了HA,请将hadoop的hdfs-site.xml和core-site.xml拷贝到/conf目录下
修改JVM参数
两个文件
/bin/dolphinscheduler-daemon.sh
/scripts/dolphinscheduler-daemon.sh
一键部署
进程检查
前端访问
1.3.0中的前端不需使用nginx
直接使用[api-server]:12345/dolphinscheduler进行访问
访问成功 - 账号admin,密码dolphinscheduler123
新增组件功能测试
shell使用资源文件
在资源中心中创建一个文件夹-文件夹测试,然后创建一个资源文件-这是一个文件测试.sh
文件内容,打印简单的字符串
新建shell任务,按照老版本的方式引用资源文件
运行任务,出现找不到文件的异常
修改shell中引用资源文件的方式,加上上级资源目录
重新运行任务,成功
总结:ds-1.3.0引入了资源目录,在任务节点应用的时候,需要加上对应资源的目录层级!!!
条件分支任务
创建一个条件分支任务,每个shell都是简单打印1,2,3
根据shell-1的执行情况,决定执行shell-2还是shell-3
条件节点的配置如下,这里特别注意,条件节点中的自定义参数,自定义的是前置任务的状态判断!!!这个自定义参数必须要选的,不然条件分支会一直处于成功状态。
shell-1执行成功测试
执行结果,1节点执行成功,然后执行2节点,3节点未执行
shell-1执行失败测试
执行结果,1节点执行失败,执行3节点,2节点未执行
总结:条件节点!这个真的可以。
新功能-点点点
工作流复制
DAG格式化
美化前
美化后
总结
DS-1.3.0架构最大的变动就是任务队列的变化,在之前的版本中任务队列是存到zk上的,worker去抢锁,然后消费对应znode中累积的任务数据,而1.3.0引入了netty框架进行master-worker之间的任务数据传输。减少了分布式锁的竞争,降低任务触发延迟
引入了数据同步节点,DataX和Sqoop,虽然封装的程度还不算很完善,但是能用。当然,为了好用需要更多的社区用户提交issue,提pr!!!
条件分支节点真的可以,不过建议大家多尝试一下条件节点的逻辑组合,有点绕,需要学习和习惯
资源目录终于是有了,但是还有进步的空间,目前的设计,略微有点不好用
版权声明: 本文为 InfoQ 作者【Eights】的原创文章。
原文链接:【http://xie.infoq.cn/article/f6fcc093d0a0b3b0272952621】。文章转载请联系作者。
评论