DolphinScheduler单机部署与YARN HA集成实践指南
2025.09.17 11:04浏览量:0简介:本文详细介绍DolphinScheduler单机部署方案,并重点阐述如何通过YARN HA实现高可用性,提供从环境准备到故障恢复的全流程操作指南。
一、DolphinScheduler单机部署架构解析
DolphinScheduler单机部署模式适用于开发测试环境或资源受限场景,其核心架构由Master-Worker节点、Zookeeper服务、数据库(MySQL/PostgreSQL)及YARN资源管理器构成。单机模式下所有组件运行在同一节点,通过本地进程通信实现任务调度。
单机部署的典型配置包括:
- Master服务:负责任务解析与调度决策
- Worker服务:执行具体任务(Shell/Spark/Flink等)
- API服务:提供RESTful接口
- Alert服务:处理告警通知
- Zookeeper:实现服务发现与锁管理
这种架构的显著优势在于部署简单、资源占用低,但存在单点故障风险。通过集成YARN HA,可在不增加节点的情况下提升资源管理层的可靠性。
二、YARN HA在单机环境中的实现原理
YARN HA通过Active/Standby ResourceManager架构实现高可用,在单机环境中需配置:
- 共享存储(NFS/本地目录):存储ResourceManager状态
- 自动故障转移机制:基于Zookeeper选举
- 状态同步机制:确保主备RM状态一致
单机环境下的特殊配置要点:
<!-- yarn-site.xml 核心配置 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value> <!-- 虚拟标识 -->
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>localhost</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>localhost</value> <!-- 实际同一主机 -->
</property>
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
这种配置通过模拟双RM实现状态持久化,当主RM失效时,Standby RM可从共享存储恢复状态并接管服务。
三、完整部署实施步骤
1. 环境准备
- 操作系统:CentOS 7+/Ubuntu 18.04+
- JDK:1.8+(推荐OpenJDK)
- 数据库:MySQL 5.7+或PostgreSQL 10+
- 内存要求:至少8GB(生产环境建议16GB+)
2. 组件安装顺序
安装Zookeeper(3.5.7+)
# 示例配置(zoo.cfg)
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
server.1=localhost
3888
部署数据库并初始化DolphinScheduler表结构
-- MySQL初始化示例
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4;
USE dolphinscheduler;
SOURCE /path/to/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler.sql;
配置YARN HA环境
- 创建共享存储目录:
mkdir /yarn_ha_store
- 配置core-site.xml添加:
<property>
<name>hadoop.tmp.dir</name>
<value>/yarn_ha_store</value>
</property>
3. DolphinScheduler配置要点
修改conf/common.properties
关键参数:
# 数据库配置
datasource.driver=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost:3306/dolphinscheduler?useSSL=false
datasource.username=root
datasource.password=password
# Zookeeper配置
zk.quorum=localhost:2181
zk.root=/dolphinscheduler
# YARN配置
yarn.application.status.address=http://localhost:8088/ws/v1/cluster/apps/{appId}/state
yarn.log.retrieve.timeout=10000
4. 启动流程优化
建议采用systemd管理服务:
# /etc/systemd/system/dolphinscheduler-master.service
[Unit]
Description=DolphinScheduler Master Service
After=network.target
[Service]
Type=simple
User=dolphinscheduler
Group=dolphinscheduler
ExecStart=/opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server
Restart=on-failure
[Install]
WantedBy=multi-user.target
四、高可用性验证与故障恢复
1. HA功能验证
模拟RM主节点故障:
kill -9 $(ps -ef | grep ResourceManager | grep -v grep | awk '{print $2}')
观察Standby RM接管过程:
- 检查YARN UI(8088端口)是否自动切换
- 验证DolphinScheduler任务能否正常提交
2. 持久化数据检查
关键数据验证点:
- Zookeeper节点:
/dolphinscheduler/locks
是否存在 - 数据库任务记录:
t_ds_task_instance
表数据完整性 - YARN日志:
/yarn_ha_store/nm-local-dir
目录权限
3. 常见问题处理
问题1:Worker节点注册失败
解决方案:
- 检查
worker.groups
配置是否匹配 - 验证网络防火墙是否放行1234端口
- 查看
logs/dolphinscheduler-worker.log
定位具体错误
问题2:YARN任务卡在ACCEPTED状态
解决方案:
- 检查NodeManager日志:
/tmp/logs/yarn-nm.log
- 验证容器内存配置:
<property>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value> <!-- 根据实际调整 -->
</property>
五、性能调优建议
内存配置优化:
# 修改dolphinscheduler-env.sh
export MASTER_OPTS="-Xms1024m -Xmx2048m -XX:+UseG1GC"
export WORKER_OPTS="-Xms2048m -Xmx4096m"
数据库连接池调优(修改
application.yml
):spring:
datasource:
hikari:
maximum-pool-size: 20
minimum-idle: 5
idle-timeout: 30000
YARN队列配置示例:
<property>
<name>yarn.scheduler.capacity.root.queues</name>
<value>default,dolphinscheduler</value>
</property>
<property>
<name>yarn.scheduler.capacity.root.dolphinscheduler.capacity</name>
<value>50</value>
</property>
六、运维监控体系构建
- 关键指标监控:
- Master/Worker存活状态(通过API接口
/dolphinscheduler/admin/checkMasterWorkerState
) - YARN资源使用率(
yarn node -list
) - 数据库连接数(
SHOW STATUS LIKE 'Threads_connected'
)
告警规则配置示例:
# alert.properties
alert.plugin.class=org.apache.dolphinscheduler.plugin.alert.email.EmailAlert
email.host=smtp.example.com
email.port=465
email.username=alert@example.com
email.password=encrypted_password
日志集中管理方案:
- 推荐ELK架构:Filebeat收集日志 → Logstash处理 → Elasticsearch存储 → Kibana可视化
- 关键日志路径:
- Master日志:
logs/dolphinscheduler-master.log
- Worker日志:
logs/worker-server.log
- YARN日志:
/tmp/logs/yarn-*.log
- Master日志:
通过上述部署方案,可在单机环境中实现DolphinScheduler与YARN HA的有效集成,既保持了部署的简便性,又通过YARN HA机制显著提升了系统可靠性。实际生产环境中,建议结合监控告警体系,定期进行故障演练,确保高可用机制的有效性。
发表评论
登录后可评论,请前往 登录 或 注册