CDH6.3集成DolphinScheduler

2,796 阅读6分钟

dolphinscheduler.png

0 背景

Apache DolphinScheduler是一个由国人主导的任务调度框架,可以很好的支持Spark、Flink、Shell、DataX等业务场景。

Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度系统。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。——来自Apache DolphinScheduler官网

Apache DolphinScheduler有着高可靠、简单易用、使用场景丰富、高扩展性等特征,碰巧公司最近在搭建新的大数据集群,所以决定来尝尝鲜。

公司目前使用Clouderamanager对集群进行统一管理,Hadoop、Spark等组件采用CM部署,Flink也做了CDH编译并集成在CM中,DolphinScheduler要对各种组件进行集成。

1 DolphinScheduler集群规划

此处我们选择集群模式(Cluster)部署,根据官方推荐的最佳实践,我们选择三个节点部署。节点规划如下:

节点角色
node1master/api
node2worker/alert
node3worker
  • master:MasterServer 主要负责DAG的切分,任务的提交、监控,监控其他节点的健康状况等任务。
  • woker:WorkerServer 主要负责执行任务和提供日志服务。
  • alert:AlertServer 提供告警相关服务,可以提供邮件告警。
  • api:APIServer API接口服务,提供RESTful API与UI界面。

2 安装准备

2.1 前提

  • 安装PostgreSQL (8.2.15+) or MySQL (5.7系列),在此我选择使用Mysql,使用Mysql还需要准备mysql驱动jar包
  • 安装JDK (1.8+) ,并配置好环境变量
  • 安装ZooKeeper (3.4.6+) ,DolphinScheduler是强依赖于zookepper的,在此我们需要事先准备好zookepper集群:node2:2181,node3:2181,node4:2181 若需要资源上传功能,还需要安装Hadoop (2.6+) or MinIO
  • 配置hosts文件,为各机器设置hostname

2.2 下载

下载DolphinScheduler二进制安装包并解压。 dolphinscheduler.apache.org/zh-cn/downl…

mv apache-dolphinscheduler-incubating-1.3.5-dolphinscheduler-bin  dolphinscheduler-bin

3 创建dolphinscheduler用户

3.1 创建用户

在所有要部署的机器上创建新用户,并赋予用户免密sudo权限

# 使用root用户创建新用户,用户名可自行修改
useradd dolphinscheduler;

# 设置用户密码,请自行修改,后面以dolphinscheduler123为例
echo "dolphinscheduler123" | passwd --stdin dolphinscheduler

3.2 sudo免密

为用户设置sudo免密步骤略 可自行网上搜索

3.3 设置目录权限

为之前解压得到的目录修改权限

sudo chown -R dolphinscheduler:dolphinscheduler dolphinscheduler-bin

4 初始化数据库

4.1 创建dolphinscheduler库并添加对应用户权限

在mysql中执行以下SQL:

CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler123';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler';
flush privileges;

其中用户和密码可自行替换。

4.2 导入MySQL驱动jar包

将mysql-connector-java-5.1.47.jar(或其他版本)拷贝到lib目录下。

4.3 修改数据库配置文件

vim conf/datasource.properties
#注释掉pstgre的部分
#postgre
  #spring.datasource.driver-class-name=org.postgresql.Driver
  #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler

#添加mysql配置
#mysql
 spring.datasource.driver-class-name=com.mysql.jdbc.Driver
 spring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
 spring.datasource.username=dolphinscheduler
 spring.datasource.password=dolphinscheduler123

4.4 执行创建表脚本

sh script/create-dolphinscheduler.sh

5 修改环境变量配置文件

vim conf/env/dolphinscheduler_env.sh

将各CDH相关组件的安装目录修改为opt/cloudera/parcels/CDH/lib/目录下的地址。 将不需要使用的组件进行注释。

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/soft/spark1
export SPARK_HOME2=/opt/cloudera/parcels/CDH/lib/spark
#export PYTHON_HOME=/opt/soft/python
export JAVA_HOME=/usr/java/jdk1.8.0_181-cloudera
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
export FLINK_HOME=/opt/cloudera/parcels/FLINK/lib/flink
export DATAX_HOME=/export/datax/bin/datax.py

将jdk软链到/usr/bin/java下

sudo ln -s /usr/java/jdk1.8.0_181-cloudera/bin/java /usr/bin/java

6 修改部署配置文件

vim conf/config/install_config.conf
# 这里填 mysql or postgresql
dbtype="mysql"

# 数据库连接地址
dbhost="node1:3306"

# 数据库名
dbname="dolphinscheduler"

# 数据库用户名,此处需要修改为上面设置的{user}具体值
username="dolphinscheduler"

# 数据库密码, 如果有特殊字符,请使用\转义,需要修改为上面设置的{password}具体值
password="dolphinscheduler12"

#Zookeeper地址
zkQuorum="node2:2181,node3:2181,node4:2181"

#将DS安装到哪个目录,如: /opt/soft/dolphinscheduler,不同于现在的目录
installPath="/export/dolphinscheduler"

#使用哪个用户部署,使用第3节创建的用户
deployUser="dolphinscheduler"

# 邮件配置,以qq邮箱为例
# 邮件协议
mailProtocol="SMTP"

# 邮件服务地址
mailServerHost="smtp.qq.com"

# 邮件服务端口
mailServerPort="25"

# mailSender和mailUser配置成一样即可
# 发送者
mailSender="xxx@qq.com"

# 发送用户
mailUser="xxx@qq.com"

# 邮箱密码
mailPassword="xxx"

# TLS协议的邮箱设置为true,否则设置为false
starttlsEnable="true"

# 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true
sslEnable="false"

# 邮件服务地址值,参考上面 mailServerHost
sslTrust="smtp.qq.com"

# 业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE,单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop
resourceStorageType="HDFS"

#如果上传资源保存想保存在hadoop上,hadoop集群的NameNode启用了HA的话,需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到安装路径的conf目录下,本例即是放到/opt/soft/dolphinscheduler/conf下面,并配置namenode cluster名称;如果NameNode不是HA,则只需要将mycluster修改为具体的ip或者主机名即可
defaultFS="hdfs://node1:8020"


# 如果没有使用到Yarn,保持以下默认值即可;如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";如果是单ResourceManager请配置yarnHaIps=""即可
yarnHaIps=""

# 如果ResourceManager是HA或者没有使用到Yarn保持默认值即可;如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip
singleYarnIp="node1"

# 资源上传根路径,主持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限
resourceUploadPath="/data/dolphinscheduler"

# 具备权限创建resourceUploadPath的用户
hdfsRootUser="hdfs"



#在哪些机器上部署DS服务,本机选localhost
ips="node1,node2,node3"

#ssh端口,默认22
sshPort="22"

#master服务部署在哪台机器上
masters="node1"

#worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名
workers="node2:default,node3:default"

#报警服务部署在哪台机器上
alertServer="node2"

#后端api服务部署在在哪台机器上
apiServers="node1"

如果HDFS的NameNode配置了高可用,此处要将core-site.xmlhdfs-site.xml复制到/conf目录下。 CDH安装的配置文件所在目录为:/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop

还需要修改一下zookeeper.properties文件

vim conf/zookeeper.properties

添加zookepper的集群信息

zookeeper.quorum=node2:2181,node3:2181,node4:2181

7 安装

切换到部署用户dolphinscheduler

执行一键部署脚本

sh install.sh

脚本执行完成后使用jps命令可以查看到服务启动情况:

    MasterServer         ----- master服务
    WorkerServer         ----- worker服务
    LoggerServer         ----- logger服务
    ApiApplicationServer ----- api服务
    AlertServer          ----- alert服务

根据节点规划不同,不同节点看到的服务不同,具体情况视自身集群规划而定。

8 登录

安装完成后可以通过web页面登录系统 http://node1:12345/dolphinscheduler 默认管理员账号为: admin/dolphinscheduler123

image.png

9 服务启停

一键停止集群所有服务

sh ./bin/stop-all.sh

一键开启集群所有服务

sh ./bin/start-all.sh

启停Master

sh ./bin/dolphinscheduler-daemon.sh start master-server
sh ./bin/dolphinscheduler-daemon.sh stop master-server

启停Worker

sh ./bin/dolphinscheduler-daemon.sh start worker-server
sh ./bin/dolphinscheduler-daemon.sh stop worker-server

启停Api

sh ./bin/dolphinscheduler-daemon.sh start api-server
sh ./bin/dolphinscheduler-daemon.sh stop api-server

启停Logger

sh ./bin/dolphinscheduler-daemon.sh start logger-server
sh ./bin/dolphinscheduler-daemon.sh stop logger-server

启停Alert

sh ./bin/dolphinscheduler-daemon.sh start alert-server
sh ./bin/dolphinscheduler-daemon.sh stop alert-server