Dolphin Scheduler 1.1.0升级1.2.0避坑指南
本文章经授权转载
组件介绍
Apache Dolphin Scheduler是一个分布式易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
官网
https://dolphinscheduler.apache.org/en-us/
github
https://github.com/apache/incubator-dolphinscheduler
Dolphin Scheduler 1.2.0是ds发布的第一个Apache版本,目前也是社区推荐的版本。引入了跨项目依赖,Flink&http组件等特性,具体Release Notes请见:
https://github.com/apache/incubator-dolphinscheduler/releases
文档编写目的
记录生产环境升级Dolphin Scheduler 1.1.0 -> 1.2.0的流程
安装环境
CDH5.16.2
Dolphin Scheduler 1.1.0
部署方式
源码编译部署,需要修改hive-jdbc版本适配CDH
前置条件
Dolphin Scheduler1.1.0部署在集群网关节点上
Dolphin Scheduler源码切换到1.2.0-release
ds源码编译采用ubuntu环境
2
安装包准备
github clone Dolphin Scheduler代码,本地切换到1.2.0-release分支
修改数据库
ds1.1.0中数据库用的mysql,本次升级依然使用mysql作为数据库
去除pom文件中的mysql包引入方式,去除test
修改dolphinscheduler-dao包下的application-dao.properties
将数据库连接从pg修改到mysql
修改dolphinscheduler-common包下的quartz.properties
将数据库连接从pg修改为mysql
修改pom文件中的hive版本
源码编译
更新maven
执行:mvn -U clean package -Prelease -Dmaven.test.skip=true
这里建议大家使用ubuntu或mac系统进行源码编译,win系统下问题比较多
编译完成
到dolphinscheduler-dist包下分别下载后端和前端的tar.gz文件
也可以直接到官网进行下载,要使用mysql数据库需要将mysql-connector-java包放到lib目录下
数据库备份
使用navicat工具进行mysql库的备份
可以导出库的结构和数据文件,也可以直接进行数据库复制
3
修改配置
修改tar包配置
上传后端tar包
# 创建部署目录
mkdir -p /opt/dolphinscheduler
# 解压tar包
tar -zxvf dolphinscheduler-1.2.0-backend-bin.tar.gz -C /opt/dolphinscheduler/
# 修改安装包权限和所属用户,这里部署用户依然采用1.1.0的escheduler
修改环境变量
修改conf/env目录下的.dolphinscheduler_env.sh文件
修改为自己集群的配置,FLINK_HOME暂时没有配置
这里的Spark组件切换spark版本有点问题,如果只用spark2可以把SPARK_HOME1注释掉或者指向SPARK_HOME2
export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop
export SPARK_HOME1=/opt/cloudera/parcels/CDH/lib/spark
export SPARK_HOME2=/opt/cloudera/parcels/SPARK2/lib/spark2
export PYTHON_HOME=/usr/local/anaconda3/bin/python
export JAVA_HOME=/usr/java/jdk1.8.0_131
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
export FLINK_HOME=/opt/soft/flink
export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$PATH
修改install.sh中的部署参数
zk集群配置的时候,需要按照ip1:2181,ip2:2181,ip3:2181的方式配置
要使用HDFS作为资源中心,HA情况下,需要将集群的core-site.xml文件和hdfs-site.xml文件拷贝到conf目录下,这里注意下 修改core-site.xml和hdfs-site.xml文件的权限为755
其他按照业务修改,注意要与1.1.0进行兼容,以下参数特别注意!!!!
# 需要特别注意的install.sh参数
# for example postgresql or mysql ...
dbtype="mysql"
# db config
# db address and port
dbhost="192.168.xx.xx:3306"
# db name
dbname="escheduler"
# db username
username="escheduler"
# db passwprd
# Note: if there are special characters, please use the \ transfer character to transfer
passowrd="escheduler"
# conf/config/install_config.conf config
# Note: the installation path is not the same as the current path (pwd)
installPath="/opt/ds_120"
# deployment user
# Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself
deployUser="escheduler"
# hdfs root path, the owner of the root path must be the deployment user.
# versions prior to 1.1.0 do not automatically create the hdfs root directory, you need to create it yourself.
hdfsPath="/escheduler"
# common config
# Program root path
programPath="/tmp/escheduler"
# download path
downloadPath="/tmp/escheduler/download"
# task execute path
execPath="/tmp/escheduler/exec"
# api config
# api server port
apiServerPort="12345"
# api session timeout
apiServerSessionTimeout="7200"
# api server context path
apiServerContextPath="/dolphinscheduler/"
4
数据库升级&组件升级
运行升级脚本
修改conf/application-dao.properties
如果源码编译的时候没有去除mysql jar包的test,则需要将mysql连接jar放到lib目录下
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxxx:3306/dolphinscheduler?characterEncoding=UTF-8
spring.datasource.username=xxxxx
spring.datasource.password=xxxxx
运行升级脚本script下的upgrade-dolphinscheduler.sh,升级数据库
sh upgrade-dolphinscheduler.sh
特别注意
升级完成之后,需要在ds的元数据库中在执行一条ddl语句,修改任务实例表中的app_link字段长度,否则运行多阶段的hive-ql会导致任务状态不正确。报错信息:
data too long for field 'app_link'
执行ddl语句
Mysql:
alter table t_ds_task_instance modify column app_link text;
Pg:
alter table t_ds_task_instance alter column app_link type text;
关键数据核查
conf/quartz.properties配置文件中实例名属性是否为DolphinScheduler,也就是属性org.quartz.scheduler.instanceName对应的值
QRTZ_SCHEDULER_STATE表中的SCHED_NAME字段是否为DolphinScheduler,1.1.0中为EasyScheduler
QRTZ_JOB_DETAILS表中的JOB_CLASS_NAME字段是否为org.apache.dolphinscheduler.server.quartz.ProcessScheduleJob,1.1.0中为cn.escheduler.server.quartz.ProcessScheduleJob
检查nginx配置的上下文是否为/dolphinscheduler
后端服务升级
sh install.sh
前端服务升级
解压前端tar包,将dist文件夹覆盖1.1.0版本的dist文件夹
修改nginx配置,上下文修改为dolphinscheduler
重启nginx,systemctl restart nginx
vi /etc/nginx/conf.d/escheduler.conf#重启nginx
systemctl restart nginx
至此1.2.0升级完成
任务流测试
升级成功!
欢迎试用Dolphin Scheduler!!!
Dolphin Scheduler 1.1.0升级1.2.0避坑指南的更多相关文章
- .Net Core 2.2升级3.1的避坑指南
写在前面 微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多.往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东 ...
- 系统补丁更新导致MVC3.0.0升级到3.0.1的问题解决
在更新了系统补丁之后,会不知觉的将MVC3.0.0升级到MVC3.0.1的问题,解决的思路如下: 1.全部MVC引用使用NuGet进行包的管理. 2.单独把MVC库抽离出来,然后放在单独的项目文件夹, ...
- 从OLLVM4.0.0升级到LLVM8.0.1,并且给LLVM增加Pass 插件系统
版本太低了,用得我这个揪心. 上周日决定把手头的ollvm从4.0.0升级到LLVM8.0.1. 里面的Pass的话,决定移植到8.0.1里面. 我习惯从代码上来动手 1:下载LLVM https: ...
- Caffe使用: Ubuntu 14.04(x64) 从cuda 7.0 升级到 cuda8.0
由于之前已经在Ubuntu 14.04 x64上面安装cuda7.0+caffe, 并且已经配置好,caffe也已经跑通. 但是最近需要使用Torch,而Torch对cuda的要求是8.0,因此决定对 ...
- ASP.NET Core 2.0升级到3.0的变化和问题
前言 在.NET Core 2.0发布的时候,博主也趁热使用ASP.NET Core 2.0写了一个独立的博客网站,现如今恰逢.NET Core 3.0发布之际,于是将该网站进行了升级. 下面就记录升 ...
- oracle 11.2.0.1.0 升级 11.2.0.4.0 并 patch 到11.2.0.4.7
升级步骤: (1) 备份数据库 (2) 运行patchset,升级oracle 软件 (3) 准备新的ORACLE_HOME (4) 运行dbua 或者脚本升级实例 (5) ...
- Json.Net从4.0升级到7.0带来的问题
1.由于被迫Json.Net升级,导致了我们一部分查询出来数据 2.分析原因result = JsonConvert.DeserializeObject(inputContent, JsonDataT ...
- 【opatch打补丁】oracle10.2.0.5.0升级10.2.0.5.9 for linux
https://wenku.baidu.com/view/c38702b56edb6f1afe001f59.html 这篇文章也不错,可参考 任务:oracle 10.2.0.5.0 打补丁升级 ...
- EF 4.0 升级到 6.0 问题解决办法
1.工具->库程序包管理器-> 管理解决方案的Nuget 程序包 找到EntityFramework 管理,勾选把需要进入 EF6.0的 项目,进行升级.
随机推荐
- python之部分内置函数与迭代器与异常处理
目录 常见内置函数(部分) 可迭代对象 迭代器对象 for循环内部原理 异常处理 异常信息的组成部分 异常的分类 异常处理实操 异常处理的其他操作 for循环本质 迭代取值与索引取值的区别 常见内置函 ...
- OpenWrt 20.02.2 小米路由器3G配置CP1025网络打印
家里的施乐 CP116w 工作快五年了终于罢工了. 黑粉报错, 自己也不会拆, 只能搁置了. 后来换了个 HP CP1025. 这个打印机也不错, 墨盒便宜没什么废粉, 就是启动慢一点, 而且 -- ...
- 二进制固件函数劫持术-DYNAMIC
背景介绍 固件系统中的二进制文件依赖于特定的系统环境执行,针对固件的研究在没有足够的资金的支持下需要通过固件的模拟来执行二进制文件程序.依赖于特定硬件环境的固件无法完整模拟,需要hook掉其中依赖于 ...
- 编程式导航路由跳转到当前路由(参数不变), 多次执行会抛出NavigationDuplicated的警告错误?
注意:编程式导航(push|replace)才会有这种情况的异常,声明式导航是没有这种问题,因为声明式导航内部已经解决这种问题. 这种异常,对于程序没有任何影响的. 为什么会出现这种现象: 由于vue ...
- Eclipse for Python开发环境部署
Eclipse for Python开发环境部署 工欲善其事,必先利其器. 对开发人员来说,顺手的开发工具必定事半功倍.自学编程的小白不知道该选择那个开发工具,Eclipse作为一个功能强大且开源免费 ...
- 合宙AIR105(四): SPI, MAX7219 8x8LED驱动
目录 合宙AIR105(一): Keil MDK开发环境, DAP-Link 烧录和调试 合宙AIR105(二): 时钟设置和延迟函数 合宙AIR105(三): 定时器, 定时器中断和PWM输出 合宙 ...
- 第1期 考研中有关函数的一些基本性质《zobol考研微积分学习笔记》
在入门考研微积分中,我们先复习一部分中学学的初等数学的内容.函数是非常有用的数学工具. 1.函数的性质理解: 首先考研数学中的所有函数都是初等函数.而函数的三个关键就是定义域.值域.对应关系f. 其中 ...
- 用QT制作3D点云显示器——QtDataVisualization
因为QT的三维显示模块QtDataVisualization已经对个人开发免费开放了,所以在制作点云,地图,表格之类的东西的时候,其实我们都不需要使用QtCharts或者QOpenGL模块了.直接使用 ...
- 使用dockerfile部署springboot应用
本章简单展示如何最短时间 把springboot应用打包成镜像并创建成容器. 准备工作: 1.安装docker ,保证执行docker version没有问题 2.拉下来一个jdk镜像 docker ...
- UiPath文本操作Get OCR Text的介绍和使用
一.Get OCR Text操作的介绍 使用OCR屏幕抓取方法从指示的UI元素或图像中提取字符串及其信息.执行屏幕抓取操作时,还可以自动生成此活动以及容器.默认情况下,使用Google OCR引擎. ...