一、DolphinScheduler基础知识
1、初识DolphinScheduler
Apache DolphinScheduler 是一个分布式、易扩展的可视化 DAG 工作流任务调度平台。致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。
2、DolphinScheduler的核心架构
DolphinScheduler 的主要角色如下:
MasterServer:采用分布式无中心设计理念,MasterServer 主要负责 DAG 任务切分、任务提交、任务监控,并同时监听其它 MasterServer 和 WorkerServer 的健康状态。
WorkerServer:也采用分布式无中心设计理念,WorkerServer 主要负责任务的执行和提供日志服务。
ZooKeeper 服务:系统中的 MasterServer 和 WorkerServer 节点都通过 ZooKeeper 来进行集群管理和容错。
Alert 服务:提供告警相关服务。
API 接口层:主要负责处理前端 UI 层的请求。
UI:系统的前端页面,提供系统的各种可视化操作界面。
二、DolphinScheduler集群的搭建
单机模式(standalone):所有服务均集中于一个 StandaloneServer 进程中,并且其中内置了注册中心 Zookeeper 和数据库 H2。只需配置 JDK 环境,就可一键启动DolphinScheduler,快速体验其功能。(安装:略)
1、集群规划:
主机名(ip) | 配置 | 角色 |
hadoop102(192.168.56.102) | 3核6G | master、worker(mysql、zookeeper) |
hadoop103(192.168.56.103) | 3核3G | worker(zookeeper) |
hadoop104(192.168.56.104) | 3核3G | worker(zookeeper) |
提前修改好hosts以及ssh访问:
[root@hadoop102 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 127.0.1.1 hadoop102 hadoop102 192.168.56.102 hadoop102 192.168.56.103 hadoop103 192.168.56.104 hadoop104
2、前置准备工作:
(1)三台节点均需部署 JDK(1.8+),并配置相关环境变量。
(2)需部署数据库,支持 MySQL(5.7+)或者 PostgreSQL(8.2.15+)。
(3)需部署 Zookeeper(3.4.6+)。
(4)三台节点均需安装进程树分析工具 psmisc。
sudo yum install -y psmisc
3、下载并解压DolphineScheculer安装包:
下载地址(2.0.5版本):
https://dolphinscheduler.apache.org/zh-cn/download/2.0.5
除了DolphinScheduler的安装包,我们还需要下载mysql的驱动jar包!
上传下载好的安装包到hadoop102的 /opt/software 目录下:
[root@hadoop102 software]# pwd /opt/software [root@hadoop102 software]# ls apache-dolphinscheduler-2.0.5-bin.tar.gz mysql-connector-java-8.0.16.jar # 解压到当前目录(注:解压目录并非最终的安装目录,需要在配置文件中指定安装目录) [root@hadoop102 software]# tar -zxvf apache-dolphinscheduler-2.0.5-bin.tar.gz
4、创建DolphinScheduler的元数据库及数据库用户:
DolphinScheduler 元数据存储在关系型数据库中,故需创建相应的数据库和用户。
(1)创建数据库:
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
(2)创建数据库用户:
CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';
(3)赋予用户相应权限:
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%'; flush privileges;
5、配置一键部署脚本(最关键步骤):
修改解压目录下的 conf/config 目录下的 install_config.conf 文件
[root@hadoop102 software]# vim /opt/software/apache-dolphinscheduler-2.0.5-bin/conf/config/install_config.conf
修改内容如下:
## 使用 :set nu 显示行号 # 第25行:指定哪些节点需要安装DS ips="hadoop102,hadoop103,hadoop104" # 第34行:指定master节点 masters="hadoop102" # 第39行:指定worker几点及所属worker组(用于对worker节点分组管理) workers="hadoop102:default,hadoop103:default,hadoop104:default" # 第44行:告警服务所在的服务器主机名 alertServer="hadoop102" # 第49行:api服务所在的服务器主机名 apiServers="hadoop102" # 第54行:可以通过python脚本快速批量生成工作流,可以保留默认值,也可以用 # 注释(我用不着) # pythonGatewayServers="hadoop102" # 第58行:DS的安装目录(重要,确保改目录DS有权限操作) installPath="/mydata/dolphinscheduler" # 第63行:DS部署时候需要用的用户,需要具备sudo权限,且拥有ssh免密访问权限,我直接使用root省事 deployUser="root" # 第77行:JAVA_HOME路径 javaHome="/usr/local/jdk8" # 第84行:数据库类型(mysql) DATABASE_TYPE=${DATABASE_TYPE:-"mysql"} # 第88行:mysql连接的url SPRING_DATASOURCE_URL="jdbc:mysql://hadoop102:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8" # 第91行:mysql数据库的用户名 SPRING_DATASOURCE_USERNAME="dolphinscheduler" # 第94行:mysql数据库的密码 SPRING_DATASOURCE_PASSWORD="dolphinscheduler" # 第100行:注册中心的类型(zookeeper) registryPluginName="zookeeper" # 第103行:zookeeper服务的地址 registryServers="hadoop102:2181,hadoop103:2181,hadoop104:2181" # 第106行:DS在zookeeper根目录下的注册名称 registryNamespace="dolphinscheduler" # 第115行:资源存储类型(文件资源) resourceStorageType="HDFS" # 第118行:资源文件上传路径 resourceUploadPath="/dolphinscheduler" # 第123行:默认文件系统(HDFS) defaultFS="hdfs://hadoop102:8020" # 第131行:Yarn的Resource Manager的端口号 resourceManagerHttpAddressPort="8088" # 第134行:Yarn RM 高可用 ip,若未启用 RM 高可用,则将该值置空 yarnHaIps= # 第137行:Yarn的部署ip singleYarnIp="hadoop103" # 第141行:HDFS的超级用户,谁启动的HDFS,谁就是超级用户 hdfsRootUser="root"
6、初始化数据库:
(1)拷贝Mysql驱动到DolphinScheduler的解压目录下的lib中,要求使用 MySQL JDBC Driver 8.0.16
[root@hadoop102 apache-dolphinscheduler-2.0.5-bin]# cp /opt/software/mysql-connector-java-8.0.16.jar lib/
(2)执行数据库初始化脚本
数据库初始化脚本位于 DolphinScheduler 解 压 目 录 下 的 script 目 录 中 , 即/opt/software/ds/apache-dolphinscheduler-2.0.5-bin/script/
[root@hadoop102 apache-dolphinscheduler-2.0.5-bin]# script/create-dolphinscheduler.sh
脚本执行成功后,我们就可以看到mysql数据库中对应的表了:
7、一键部署DolphinScheduler集群
(1)确保zookeeper处于正常运行状态:
[root@hadoop102 apache-dolphinscheduler-2.0.5-bin]# /usr/local/zookeeper/bin/zkServer.sh status ZooKeeper JMX enabled by default Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg Client port found: 2181. Client address: localhost. Client SSL: false. Mode: follower
(2)通过脚本一键部署并启动 DolphinScheduler:
[root@hadoop102 apache-dolphinscheduler-2.0.5-bin]# ./install.sh
(3)查看三台机器上运行的程序:
[root@hadoop102 ~]# jps 25089 WorkerServer (WorkerServer) 25170 AlertServer (AlertServer) 25126 LoggerServer(LoggerServer) 2265 QuorumPeerMain 25209 ApiApplicationServer (APIServer) 25052 MasterServer (MasterServer) [root@hadoop103 ~]# jps 25865 WorkerServer 25901 LoggerServer 25278 QuorumPeerMain [root@hadoop104 ~]# jps 25874 LoggerServer 3620 QuorumPeerMain 25838 WorkerServer
8、访问DolphinScheduler UI页面:
http://192.168.56.102:12345/dolphinscheduler
默认账号密码:admin / dolphinscheduler123
9、DolphinScheduler的启停命令:
DolphinScheduler 的启停脚本均位于其安装目录的 bin 目录下,注意要区分真正的安装目录和解压目录的区别:
[root@hadoop102 dolphinscheduler]# cd /mydata/dolphinscheduler/ [root@hadoop102 dolphinscheduler]# ls bin conf install.sh lib logs pid script sql ui
(1)一键启停所有服务
./bin/start-all.sh ./bin/stop-all.sh ## 查看所有服务的状态: [root@hadoop102 dolphinscheduler]# ./bin/status-all.sh ====================== dolphinscheduler server config ============================= 1.dolphinscheduler server node config hosts:[ hadoop102,hadoop103,hadoop104 ] 2.master server node config hosts:[ hadoop102 ] 3.worker server node config hosts:[ hadoop102:default,hadoop103:default,hadoop104:default ] 4.alert server node config hosts:[ hadoop102 ] 5.api server node config hosts:[ hadoop102 ] ====================== dolphinscheduler server status ============================= node server state hadoop102 Begin status master-server...... master-server [ RUNNING ] End status master-server. hadoop102 Begin status worker-server...... worker-server [ RUNNING ] End status worker-server. hadoop102 Begin status logger-server...... logger-server [ RUNNING ] End status logger-server. hadoop103 Begin status worker-server...... worker-server [ RUNNING ] End status worker-server. hadoop103 Begin status logger-server...... logger-server [ RUNNING ] End status logger-server. hadoop104 Begin status worker-server...... worker-server [ RUNNING ] End status worker-server. hadoop104 Begin status logger-server...... logger-server [ RUNNING ] End status logger-server. hadoop102 Begin status alert-server...... alert-server [ RUNNING ] End status alert-server. hadoop102 Begin status api-server...... api-server [ RUNNING ] End status api-server.
注意同 Hadoop 的启停脚本进行区分。
(2)启停 Master
./bin/dolphinscheduler-daemon.sh start master-server ./bin/dolphinscheduler-daemon.sh stop master-server
(3)启停 Worker
./bin/dolphinscheduler-daemon.sh start worker-server ./bin/dolphinscheduler-daemon.sh stop worker-server
(4)启停 Api
./bin/dolphinscheduler-daemon.sh start api-server ./bin/dolphinscheduler-daemon.sh stop api-server
(5)启停 Logger
./bin/dolphinscheduler-daemon.sh start logger-server ./bin/dolphinscheduler-daemon.sh stop logger-server
(6)启停 Alert
./bin/dolphinscheduler-daemon.sh start alert-server ./bin/dolphinscheduler-daemon.sh stop alert-server
10、监控DS节点运行状态:
Master节点:
Worker节点: