本文章经授权转载

组件介绍

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避坑指南的更多相关文章

  1. .Net Core 2.2升级3.1的避坑指南

    写在前面 微软在更新.Net Core版本的时候,动作往往很大,使得每次更新版本的时候都得小心翼翼,坑实在是太多.往往是悄咪咪的移除了某项功能或者组件,或者不在支持XX方法,这就很花时间去找回需要的东 ...

  2. 系统补丁更新导致MVC3.0.0升级到3.0.1的问题解决

    在更新了系统补丁之后,会不知觉的将MVC3.0.0升级到MVC3.0.1的问题,解决的思路如下: 1.全部MVC引用使用NuGet进行包的管理. 2.单独把MVC库抽离出来,然后放在单独的项目文件夹, ...

  3. 从OLLVM4.0.0升级到LLVM8.0.1,并且给LLVM增加Pass 插件系统

    版本太低了,用得我这个揪心. 上周日决定把手头的ollvm从4.0.0升级到LLVM8.0.1. 里面的Pass的话,决定移植到8.0.1里面. 我习惯从代码上来动手 1:下载LLVM  https: ...

  4. Caffe使用: Ubuntu 14.04(x64) 从cuda 7.0 升级到 cuda8.0

    由于之前已经在Ubuntu 14.04 x64上面安装cuda7.0+caffe, 并且已经配置好,caffe也已经跑通. 但是最近需要使用Torch,而Torch对cuda的要求是8.0,因此决定对 ...

  5. ASP.NET Core 2.0升级到3.0的变化和问题

    前言 在.NET Core 2.0发布的时候,博主也趁热使用ASP.NET Core 2.0写了一个独立的博客网站,现如今恰逢.NET Core 3.0发布之际,于是将该网站进行了升级. 下面就记录升 ...

  6. 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)   ...

  7. Json.Net从4.0升级到7.0带来的问题

    1.由于被迫Json.Net升级,导致了我们一部分查询出来数据 2.分析原因result = JsonConvert.DeserializeObject(inputContent, JsonDataT ...

  8. 【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 打补丁升级 ...

  9. EF 4.0 升级到 6.0 问题解决办法

    1.工具->库程序包管理器-> 管理解决方案的Nuget 程序包  找到EntityFramework 管理,勾选把需要进入 EF6.0的 项目,进行升级.

随机推荐

  1. Python数据分析--Numpy常用函数介绍(5)--Numpy中的相关性函数

    摘要:NumPy中包含大量的函数,这些函数的设计初衷是能更方便地使用,掌握解这些函数,可以提升自己的工作效率.这些函数包括数组元素的选取和多项式运算等.下面通过实例进行详细了解. 前述通过对某公司股票 ...

  2. Java 多线程共享模型之管程(上)

    主线程与守护线程 默认情况下,Java 进程需要等待所有线程都运行结束,才会结束.有一种特殊的线程叫做守护线程,只要其它非守护线程运行结束了,即使守护线程的代码没有执行完,也会强制结束. packag ...

  3. CabloyJS自带工作流引擎的文档清单

    文档清单 CabloyJS自带工作流引擎文档已经整理出来,欢迎大家围观.拍砖 介绍 介绍 演示:CMS审批工作流 单元测试用例集 流程定义 基本概念 JSON规范 listener规范 listene ...

  4. JavaScript中的??和?.和??=操作符

    JS中两种不常使用但挺实用的操作符:??和?. 一起来了解并学会使用它们吧: 空值合并操作符:?? 只有当操作符左侧为null或undefined时才会返回操作符右侧的值,否则返回左侧的值. eg: ...

  5. 支持向量机SVM(一):基本概念、目标函数的推导

    本文旨在介绍支持向量机(SVM)的基本概念并解释SVM中的一个关键问题: 为什么SVM目标函数中的函数间隔取1? 一.分类问题 给定N个分属两类的样本,给出一个决策边界使得边界一侧只含一种样本(如下图 ...

  6. 2 万字 + 20张图| 细说 Redis 九种数据类型和应用场景

    作者:小林coding 计算机八股文网(操作系统.计算机网络.计算机组成.MySQL.Redis):https://xiaolincoding.com 大家好,我是小林. 我们都知道 Redis 提供 ...

  7. Node.js精进(2)——异步编程

    虽然 Node.js 是单线程的,但是在融合了libuv后,使其有能力非常简单地就构建出高性能和可扩展的网络应用程序. 下图是 Node.js 的简单架构图,基于 V8 和 libuv,其中 Node ...

  8. 论文阅读 Real-Time Streaming Graph Embedding Through Local Actions 11

    9 Real-Time Streaming Graph Embedding Through Local Actions 11 link:https://scholar.google.com.sg/sc ...

  9. alertmanager集群莫名发送resolve消息的问题探究

    alertmanager集群莫名发送resolve消息的问题探究 术语 告警消息:指一条告警 告警恢复消息:指一条告警恢复 告警信息:指告警相关的内容,包括告警消息和告警恢复消息 问题描述 最近遇到了 ...

  10. 使用http://start.spring.io/构建maven微服务项目的几个坑及eclipse构建spring boot微服务项目

    一,使用http://start.spring.io/构建maven微服务项目 本来嘛,直接构建的项目导入时没有任何问题的导入就可以运行,可是最近构建好项目,然后导入,种种报错 1.导入之后POM报错 ...