概述DolphinScheduler集群部署
准备工作下载DolphinScheduler配置DolphinScheduler元数据存储在MySQL安装配置环境安装启停 DolphinScheduler使用
安全中心项目管理 调度Python工作的步骤
1、安全中心2、资源中心3、项目管理 概述
需求:在某个特定的时间运行Python(Anaconda)任务
方案1:crontab来定时调度
方案2:crontab没有便于操作的Web界面及报警等功能,于是引入DolphinScheduler
Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台
致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用
中文官网:https://dolphinscheduler.apache.org/zh-cn/
DolphinScheduler架构图
功能:日志分片查看、刷新、下载…alertServer1告警服务,暂时仅支持单机ApiApplicationServer1提供后端通信,端口默认12345
DS依赖Java,集群部署依赖ZooKeeper
另外,本文还配置DS元数据存储到MySQL,资源存储到HDFS
安装进程管理相关的命令,用于支持DolphinScheduler(每个节点都执行)
yum install -y psmisc
创建具有sudo权限的用户
https://yellow520.blog.csdn.net/article/details/115495027
集群用户免密登录
https://blog.csdn.net/Yellow_python/article/details/110143502
下载DolphinSchedulerwget https://dlcdn.apache.org/dolphinscheduler/2.0.3/apache-dolphinscheduler-2.0.3-bin.tar.gz
解压
tar -zxvf apache-dolphinscheduler-2.0.3-bin.tar.gz
配置DolphinScheduler元数据存储在MySQLMySQL建库ds和用户dolphinscheduler,自设密码
mysql -uroot -p
-- 创建数据库CREATE DATAbase ds DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;-- 创建用户和网络允许,并设置密码CREATE USER 'dolphinscheduler'@'%' IDENTIFIED BY '密码';-- 给用户赋予库的权限GRANT ALL PRIVILEGES ON ds.* TO 'dolphinscheduler'@'%';flush privileges;
下载MySQL驱动8.0.16,放到DolphinScheduler的lib
wget https://downloads.mysql.com/archives/get/p/3/file/mysql-connector-java-8.0.16.tar.gztar -zxvf mysql-connector-java-8.0.16.tar.gzcp mysql-connector-java-8.0.16/mysql-connector-java-8.0.16.jar apache-dolphinscheduler-2.0.3-bin/lib/
安装配置cd apache-dolphinscheduler-2.0.3-binvim ./conf/config/install_config.conf
数据存储的配置(要和上面MySQL的一致)
# 数据库类型DATAbase_TYPE="mysql"# 数据库连接SPRING_DATASOURCE_URL="jdbc:mysql://hadoop105:3306/ds?useUnicode=true&characterEncoding=UTF-8"# 数据库用户及其密码SPRING_DATASOURCE_USERNAME="dolphinscheduler"SPRING_DATASOURCE_PASSWORD="密码"
基础配置
# 安装路径installPath="/opt/module/dolphinscheduler"# 配一个具有sudo权限的用户deployUser="yellow"# JAVA_HOMEjavaHome="/opt/module/jdk"# ZooKeeper地址registryPluginName="zookeeper"registryServers="hadoop105:2181,hadoop106:2181,hadoop107:2181"
集群服务的配置,只改节点,不改端口
vim ./conf/config/install_config.conf
ips="hadoop105,hadoop106,hadoop107"masters="hadoop106,hadoop107"workers="hadoop105:default,hadoop106:default,hadoop107:default"alertServer="hadoop105"apiServers="hadoop105"pythonGatewayServers="hadoop105"
资源上传到HDFS的配置(可选)
vim ./conf/config/install_config.conf
# 资源类型resourceStorageType="HDFS"# 资源上传路径resourceUploadPath="/dolphinscheduler"# 资源的地址defaultFS="hdfs://hadoop105:8020"# HDFS用户hdfsRootUser="yellow"
YARN队列的配置,端口8888不用改(可选)
# 非高可用RM设定此值为空yarnHaIps=# 单节点RM的主机名singleYarnIp="hadoop106"
环境vim ./conf/env/dolphinscheduler_env.sh
# Big Data:大数据根目录export B_HOME=/opt/module# Javaexport JAVA_HOME=$B_HOME/jdk# Hadoopexport HADOOP_HOME=$B_HOME/hadoopexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop# HIVEexport HIVE_HOME=$B_HOME/hive# Sparkexport SPARK_HOME1=$B_HOME/sparkexport SPARK_HOME2=$B_HOME/spark# Flinkexport Flink_HOME=$B_HOME/flink# DataXexport DATAX_HOME=$B_HOME/datax# Pathexport PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$Flink_HOME/bin:$DATAX_HOME/bin:$PATH
安装MySQL数据库初始化
./script/create-dolphinscheduler.sh
集群安装
./install.sh
启停启动
./bin/start-all.sh
停止
./bin/stop-all.sh
启停某个服务,如:关闭Alter服务
./bin/dolphinscheduler-daemon.sh stop alert-server
DolphinScheduler启动后,浏览器访问http://hadoop105:12345/dolphinscheduler
初始用户名admin密码dolphinscheduler123,可去Web界面的安全中心处修改
用户是指DolphinScheduler的用户
通常管理员不执行工作流
Worker分组管理、环境管理普通用户创建项目、工作流
执行和监控工作流
租户对应的是Linux的用户,用于worker提交作业所使用的用户
若Linux没有该用户,就导致任务失败或创建该用户(参数:workerTenantAutoCreate)
队列对接YARN资源队列
在DolphinScheduler中创建队列,并不会影响到YARN调度器的队列配置
Worker分组
通常Python不适合做跨节点的分布式任务,建议配置某个节点专门跑Python任务
创建后,去对应节点的DS安装目录(之前在install_config.conf里配了installPath)改Python环境
cd /opt/module/dolphinschedulervim ./conf/env/dolphinscheduler_env.sh
# Python:export PYTHON_HOME=miniconda3安装路径/envs/虚拟环境的名称export PYTHON_HOME=/home/miniconda/miniconda3# Pathexport PATH=$PYTHON_HOME/bin:$PATH
项目管理 一个项目下可以又多个工作流,一个工作流可以有多个节点,多个节点连接构成DAG节点内可以绑定Worker分组和Python环境工作流启动后,会生成1个工作流实例及其下的n个任务实例 调度Python工作的步骤 1、安全中心 创建用于跑Python的租户创建普通用户,绑定租户创建Worker分组,绑定专门跑Python的节点切换到普通用户 2、资源中心 创建文件夹进入文件夹上传文件或创建文件 3、项目管理 创建项目创建工作流创建节点,绑定环境和Worker分组
3.1、跑单个Py文件:创建Python节点,把代码粘到代码区域
3.2、跑资源中心的Py代码:创建Shell节点,引用资源中心的Py代码工作流上线工作流调度