logo资料库

DolphinScheduler.docx

第1页 / 共34页
第2页 / 共34页
第3页 / 共34页
第4页 / 共34页
第5页 / 共34页
第6页 / 共34页
第7页 / 共34页
第8页 / 共34页
资料共34页,剩余部分请下载后查看
Apache DolphinScheduler
一、说明
1.1 DolphinScheduler 说明
1.2 相关网址
1.3 名词解释
1.4 DolphinScheduler 架构
1.4.1 MasterServer
1.4.2 WorkerServer
1.4.3 ZooKeeper
1.4.4 Task Queue
1.4.5 Alert
1.4.6 API
1.4.7 UI
二、集群规划
2.1 集群配置
2.2 软件版本
2.3 集群规划
三、环境准备
3.1 基础软件准备(必装项请自行安装)
3.2 pip、kazoo 安装
3.3 创建部署用户
3.4 对部署用户配置免密
3.5 dolphinscheduler安装包下载
四、软件部署
4.1 为 dolphinscheduler 创建 Mysql 数据库
4.2 解压 dolphinscheduler 安装包
4.2.1 dolphinscheduler-backend
4.2.2 dolphinscheduler-ui
4.3 dolphinscheduler-backend 部署
4.3.1 修改数据库配置
s4.3.2 初始化数据库
4.3.3 修改环境变量配置
4.3.4 修改集群部署配置
4.3.5 添加 Hadoop 配置文件
4.3.6 创建 hdfs 根目录
4.3.7 一键部署
4.3.8 指令
4.4 dolphinscheduler-ui 部署
4.4.1 dolphinscheduler-ui 部署说明
4.4.2 自动部署
4.4.3 手动部署
4.4.4 修改上传文件大小限制
4.4.5 dolphinscheduler 首次登录
4.4.6 Nginx 相关
4.4.6.1 CentOS7 安装 Nginx
4.4.6.2 Nginx 指令
五、使用与测试
5.1 安全中心(Security)
5.1.1 队列管理(Queue manage)
5.1.2 租户管理(Tenant Manage)
5.1.3 用户管理(User Manage)
5.1.4 告警组管理(Warning group manage)
5.1.5 Worker分组管理(Worker group manage)
5.1.6 令牌管理(Token manage)
5.1.7 授予权限
5.2 监控中心(Monitor)
5.3 数据源中心(Datasource)
5.3.1 MySQL 数据源
5.3.2 POSTGRESQL 数据源
5.3.3 HIVE 数据源
5.3.3.1 使用 HiveServer2 方式连接
5.3.3.2 使用 HiveServer2 HA Zookeeper 方式连接
5.3.4 Spark 数据源
5.3.5 CLICKHOUSE
5.3.6 ORACLE
5.3.7 SQLSERVER
5.4 资源中心(Resources)
5.4.1 文件管理
5.4.2 UDF 管理
5.4.2.1 资源管理
5.4.2.2 函数管理
5.5 项目管理(Project)
5.5.1 创建项目
5.5.2 项目首页
5.5.3 工作流
5.5.3.1 工作流定义
5.5.3.1.1 创建
5.5.3.1.2 执行
5.5.3.1.3 定时
5.5.3.2 工作流实例
5.5.3.3 任务实例
5.6 首页(Home)
六、工作流实例类型和参数设置
6.1 Shell节点
6.2 子流程节点
6.3 SQL节点
6.3.1 Mysql
6.3.2 Hive
6.3.3 Other
6.4 依赖(DEPENDENT)节点
Apache DolphinScheduler 一、说明 1.1 DolphinScheduler 说明 Apache DolphinScheduler 是一个分布式去中心化,易扩展的可视化 DAG 工作流任务调度 系统。 致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。 1.2 相关网址 官网: https://dolphinscheduler.apache.org/zh-cn/ Git 地址: https://github.com/apache/incubator-dolphinscheduler 1.3 名词解释 DAG: 全称 Directed Acyclic Graph,简称 DAG。工作流中的 Task 任务以有向无环图的 形式组装起来,从入度为零的节点进行拓扑遍历,直到无后继节点为止。 流程定义:通过拖拽 任务节点 并建立 任务节点的关联 所形成的 可视化 DAG 流程实例:流程定义的实例化,可以通过手动启动或定时调度生成,流程定义每运行一次, 产生一个流程实例 任务实例:流程定义 中 任务节点的实例化,标识着具体的 任务执行状态 任务类型:目前支持有 SHELL、SQL、SUB_PROCESS(子流程)、PROCEDURE、MR、SPARK、 PYTHON、DEPENDENT(依赖),同时计划支持动态插件扩展,注意:其中子 SUB_PROCESS 也 是一个单独的流程定义,是可以单独启动执行的 调度方式:系统支持基于 cron 表达式的定时调度和手动调度。命令类型支持:启动工作流、 从当前节点开始执行、恢复被容错的工作流、恢复暂停流程、从失败节点开始执行、补数、 定时、重跑、暂停、停止、恢复等待线程。其中 恢复被容错的工作流 和 恢复等待线程 两 种命令类型是由调度内部控制使用,外部无法调用 定时调度:系统采用 quartz 分布式调度器,并同时支持 cron 表达式可视化的生成 依赖:系统不单单支持 DAG 简单的前驱和后继节点之间的依赖,同时还提供任务依赖节点, 支持流程间的自定义任务依赖 优先级 :支持流程实例和任务实例的优先级,如果流程实例和任务实例的优先级不设置, 则默认是先进先出 邮件告警:支持 SQL 任务 查询结果邮件发送,流程实例运行结果邮件告警及容错告警通知 失败策略:对于并行运行的任务,如果有任务失败,提供两种失败策略处理方式,继续 是
指不管并行运行任务的状态,直到流程失败结束。结束 是指一旦发现失败任务,则同时 Kill 掉正在运行的并行任务,流程失败结束 补数:补历史数据,支持 区间并行和串行 两种补数方式 1.4 DolphinScheduler 架构 1.4.1 MasterServer MasterServer 采用分布式无中心设计理念,MasterServer 主要负责 DAG 任务切分、任务 提交监控,并同时监听其它 MasterServer 和 WorkerServer 的健康状态。 MasterServer 服 务启动时向 Zookeeper 注册临时节点,通过 监听 Zookeeper 临时节点 变化来进行容错 处理。 该服务内主要包含: Distributed Quartz 分布式调度组件,主要负责 定时任务的启停 操作,当 quartz 调起任 务后,Master 内部会有线程池具体负责处理任务的后续操作 MasterSchedulerThread 是一个扫描线程,定时扫描数据库中的 command 表,根据不同的 命令类型进行不同的业务操作 MasterExecThread 主要是负责 DAG 任务切分、任务提交监控、各种不同命令类型的逻辑 处理 MasterTaskExecThread 主要负责任务的持久化 1.4.2 WorkerServer WorkerServer 也采用分布式无中心设计理念,WorkerServer 主要负责 任务的执行和提供 日志服务。WorkerServer 服务启动时向 Zookeeper 注册临时节点,并维持心跳。 该服务包含: FetchTaskThread 主要负责不断 从 Task Queue 中领取任务,并根据不同任务类型调用 TaskScheduleThread 对应执行器。 LoggerServer 是一个 RPC 服务,提供日志分片查看、刷新和下载等功能 1.4.3 ZooKeeper ZooKeeper 服务,系统中的 MasterServer 和 WorkerServer 节点都通过 ZooKeeper 来进 行 集群管理和容错。另外系统还基于 ZooKeeper 进行 事件监听和分布式锁。 我们也曾 经基于 Redis 实现过队列,不过我们希望 DolphinScheduler 依赖到的组件尽量地少,所以 最后还是去掉了 Redis 实现。 1.4.4 Task Queue 提供 任务队列 的操作,目前队列也是基于 Zookeeper 来实现。由于队列中存的信息较少, 不必担心队列里数据过多的情况,实际上我们压测过百万级数据存队列,对系统稳定性和性
能没影响。 1.4.5 Alert 提供 告警相关 接口,接口主要包括告警两种类型的告警数据的存储、查询和通知功能。其 中通知功能又有邮件通知和**SNMP(暂未实现)**两种。 1.4.6 API API 接口层,主要负责 处理前端 UI 层的请求。该服务统一提供 RESTful api 向外部提供请 求服务。 接口包括工作流的创建、定义、查询、修改、发布、下线、手工启动、停止、暂 停、恢复、从该节点开始执行等等。 1.4.7 UI 系统的前端页面,提供系统的各种可视化操作界面。 二、集群规划 2.1 集群配置 2.2 软件版本 版本 Cloudera 5.14.2 软件 CDH dolphinscheduler 1.2.0 2.3 集群规划 注: 以下所有节点均已部署 CDH 版本大数据相关组件。 若为 Apache 版本,则需要将大数据组件的环境变量设为全局,或者在各个租户下添加环 境变量和线上环境的配置参数,防止出现 sudo -u $tenant 无法调用大数据组件的情况。 hostname MasterServer WorkerServer/LoggerServer Cluster01 Cluster02 Cluster03 AlertServer ApiServer √ √ √ √ √ UI √ √ √ √
三、环境准备 3.1 基础软件准备(必装项请自行安装) Mysql (5.7 +) JDK (1.8+) CDH(5.14.2) 注意:DolphinScheduler 本身不依赖 Hadoop、Hive、Spark,仅是会调用他们的 Client,用 于对应任务的运行。 3.2 pip、kazoo 安装 curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py sudo python get-pip.py pip --version pip install kazoo 3.3 创建部署用户 # 创建部署用户 userdel -r dolphinscheduler useradd dolphinscheduler&& echo dolphinscheduler | passwd --stdin dolphinscheduler # 赋予 sudo 权限 chmod 640 /etc/sudoers vim /etc/sudoers # 大概在 100 行,在 root 下添加如下 Dolphinscheduler ALL=(ALL) NOPASSWD: NOPASSWD: ALL 3.4 对部署用户配置免密 dolphinscheduler 一键部署原理:在 主机器(下载安装包的机器) 修改好配置文件,通过 scp 方式将后端安装包发送到各个机器,并通过 ssh 方式在部署机器上启动相关服务。故 此处,需要给 主机器上的 部署用户(dolphinscheduler) 配置到 各个服务器的部署用户 (dolphinscheduler) 的免密权限。 su - dolphinscheduler ssh-keygen -t rsa cd ~/.ssh && cp id_rsa.pub authorized_keys chmod 700 authorized_keys
#ssh-copy-id hostname ssh-copy-id localhost 3.5 dolphinscheduler 安装包下载 # git 下载地址 https://github.com/apache/incubator-dolphinscheduler/releases # 创建安装目录 sudo mkdir /opt/DolphinScheduler && sudo chown -R dolphinscheduler:dolphinscheduler /opt/DolphinScheduler # 下载后端安装包(dolphinscheduler-backend) wget https://dist.apache.org/repos/dist/release/incubator/dolphinscheduler/1.2.0/apache-dolphi nscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz -P /opt/DolphinScheduler # 下载前端安装包(dolphinscheduler-ui) wget https://dist.apache.org/repos/dist/release/incubator/dolphinscheduler/1.2.0/apache-dolphi nscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -P /opt/DolphinScheduler 四、软件部署 4.1 为 dolphinscheduler 创建 Mysql 数据库 # 设置数据用户 dolphinscheduler 的访问密码为 dolphinscheduler,并且不对访问的 ip 做限制 # 测 试 环 境 将 访 问 设 置 为 所 有 , 如 果 是 生 产 , 可 以 限 制 只 能 子 网 段 的 ip 才 能 访 问 ('192.168.1.%') CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci; GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler'; flush privileges;
4.2 解压 dolphinscheduler 安装包 4.2.1 dolphinscheduler-backend cd /opt/DolphinScheduler && mkdir dolphinscheduler-backend tar -zxf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-backend-bin.tar.gz -C dolphinscheduler-backend # 目录介绍 cd /opt/DolphinScheduler/dolphinscheduler-backend/ && tree -L 1 ├── bin ├── conf ├── install.sh ├── lib ├── script └── sql # 基础服务启动脚本 # 项目配置文件 # 一键部署脚本 # 项目依赖 jar 包,包括各个模块 jar 和第三方 jar # 集群启动、停止和服务监控启停脚本 # 项目依赖 sql 文件 4.2.2 dolphinscheduler-ui cd /opt/DolphinScheduler && mkdir dolphinscheduler-ui tar -zxf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -C dolphinscheduler-ui cd dolphinscheduler-ui 4.3 dolphinscheduler-backend 部署 4.3.1 修改数据库配置 vim /opt/DolphinScheduler/dolphinscheduler-backend/conf/application-dao.properties spring.datasource.url=jdbc:mysql://test01:3306/dolphinscheduler?characterEncoding=UT F-8 spring.datasource.username=dolphinscheduler spring.datasource.password=dolphinscheduler
s4.3.2 初始化数据库 sh /opt/DolphinScheduler/dolphinscheduler-backend/script/create_dolphinscheduler.sh # create dolphinscheduler success -> 表示数据库初始化成功 4.3.3 修改环境变量配置 vim /opt/DolphinScheduler/dolphinscheduler-backend/conf/env/.dolphinscheduler_env.sh # ========== # CDH 版 # ========== 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 export PYTHON_HOME=/usr/bin/python export JAVA_HOME=/opt/module/jdk1.8.0_144 export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$ JAVA_HOME/bin:$HIVE_HOME/bin:$PATH 4.3.4 修改集群部署配置 vim /opt/DolphinScheduler/dolphinscheduler-backend/install.sh 更改配置如下 install.txt 4.3.5 添加 Hadoop 配置文件 # 若 install.sh 中,resUploadStartupType 为 HDFS,且配置为 HA,则需拷贝 hadoop 配 置文件到 conf 目录下 cp /opt/DolphinScheduler/dolphinscheduler-backend/conf/ cp /opt/DolphinScheduler/dolphinscheduler-backend/conf/ /etc/hadoop/conf.cloudera.yarn/core-site.xml /etc/hadoop/conf.cloudera.yarn/hdfs-site.xml
注:若需要修改 hadoop 配置文件,则需拷贝 hadoop 配置文件到 $installPath/conf 目录 下 4.3.6 创建 hdfs 根目录 #sudo -u hdfs hadoop fs -rmr /dolphinscheduler sudo -u hdfs hadoop fs -mkdir /dolphinscheduler sudo -u hdfs hadoop fs -chown dolphinscheduler:dolphinscheduler /dolphinscheduler 4.3.7 一键部署 执行脚本部署并启动 sh /opt/DolphinScheduler/dolphinscheduler-backend/install.sh 查看 Java 进程 jps 8138 MasterServer 8165 WorkerServer 8206 LoggerServer 8240 AlertServer 8274 ApiApplicationServer 注:会根据 install.sh 配置情况在对应的机器上启动对应的服务!!! # master 服务 # worker 服务 # logger 服务 # alert 服务 # api 服务 4.3.8 指令 # 一键部署(含暂停、重发安装包、启动等操作) sh /opt/DolphinScheduler/dolphinscheduler-backend/install.sh # 一键启停集群所有服务 /opt/DolphinScheduler/dolphinscheduler/script/start_all.sh /opt/DolphinScheduler/dolphinscheduler/script/stop_all.sh /opt/DolphinScheduler/dolphinscheduler/script/dolphinscheduler-daemon.sh /opt/DolphinScheduler/dolphinscheduler/script/dolphinscheduler-daemon.sh # 启停 Master sh master-server sh master-server # 启停 Worker start stop
分享到:
收藏