一、环境准备(用于编译,版本可参考非必需)
CentOS-7.8、nodejs-v16.13.0、npm-8.1.0(nodejs自带)、git-1.8.3.1、java-1.8、maven-3.8
1、安装nodejs
下载
wget https://nodejs.org/dist/v16.13.0/node-v16.13.0-linux-x64.tar.xz
解压
tar -xvf node-v16.13.0-linux-x64.tar.xz
配置环境变量
export NODE_HOME=/opt/node-v16.13.0-linux-x64
验证
node -v
npm -v
二、编译
从GitHub获取dolphinscheduler-1.3.9源码
git clone https://github.com/apache/dolphinscheduler.git -b 1.3.9-release
进入源码目录进行编译
mvn -U clean install -Prpmbuild -Dmaven.test.skip=true -X
编译完成后在dolphinscheduler-dist/target/rpm/apache-dolphinscheduler/RPMS/noarch路径下可以找到打包好的rpm
注意:nodejs版本不要太低,不然编译过程不容易通过,另外npm尽量不要使用淘宝镜像
三、安装(可选择部署到一致多台机器)
(1)择需要部署dolphinscheduler的机器创建系统用户dolphinscheduler
groupadd dolphinscheduler
useradd -d /home/dolphinscheduler -m dolphinscheduler -g dolphinscheduler
(2)创建数据库(mysql)
#创建数据库用户
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'Abcd!234';
#创建数据库
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
#数据库授权
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler '@'%' IDENTIFIED BY 'Abcd!234';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler '@'localhost' IDENTIFIED BY 'Abcd!234';
flush privileges;
(3)择需要部署dolphinscheduler的机器进行rpm安装
#创建安装目录
mkdir /opt/soft
#赋予安装目录可读写权限
chown dolphinscheduler:dolphinscheduler /opt/soft
rpm -ivh apache-dolphinscheduler-1.3.10-1.noarch.rpm
安装完成后将mysql驱动包放到dolphinscheduler/lib目录下
四、与ambari集成
(1)部署ambari插件
在源码目录下执行如下步骤:
#将dolphinscheduler自定义集成配置文件拷贝到ambari-server服务节点的相关目录
cp -r ambari_plugin/common-services/DOLPHIN /var/lib/ambari-server/resources/common-services/
cp -r ambari_plugin/statcks/DOLPHIN /var/lib/ambari-server/resources/stacks/HDP/3.1/services/
#重启ambari-server
ambari-server restart
重启完ambari-server后,在ambari WebUI上打开添加服务页面可以看到dolphinscheduler-1.3.9
(2) 添加服务
在ambari WebUI上添加dolphinscheduler服务,并填写相关配置
部署完成后需要修改两个配置项
a、[dolphin-zookeeper]配置中添加自定义属性zookeeper.quorum,将值设为HDP集群中的zk地址
b、[dolphin-common]配置中修改属性dolphinscheduler.env.path,将其值改为绝对路径/opt/soft/dolphinscheduler/conf/env/dolphinscheduler_env.sh
修改完这几项配置后启动服务。
五、常见问题
1、工作流执行后一直为启动状态,无日志输出
解决:查看worker日志是否有错误,这个问题通常是由于端口冲突导致,例如dolphinscheduler启动了nginx,其中监听了相关端口,关闭服务后nginx仍在运行,下次启动worker后会出现端口冲突的异常