logo

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架构实现高可用,在单机环境中需配置:

  1. 共享存储(NFS/本地目录):存储ResourceManager状态
  2. 自动故障转移机制:基于Zookeeper选举
  3. 状态同步机制:确保主备RM状态一致

单机环境下的特殊配置要点:

  1. <!-- yarn-site.xml 核心配置 -->
  2. <property>
  3. <name>yarn.resourcemanager.ha.enabled</name>
  4. <value>true</value>
  5. </property>
  6. <property>
  7. <name>yarn.resourcemanager.ha.rm-ids</name>
  8. <value>rm1,rm2</value> <!-- 虚拟标识 -->
  9. </property>
  10. <property>
  11. <name>yarn.resourcemanager.hostname.rm1</name>
  12. <value>localhost</value>
  13. </property>
  14. <property>
  15. <name>yarn.resourcemanager.hostname.rm2</name>
  16. <value>localhost</value> <!-- 实际同一主机 -->
  17. </property>
  18. <property>
  19. <name>yarn.resourcemanager.recovery.enabled</name>
  20. <value>true</value>
  21. </property>

这种配置通过模拟双RM实现状态持久化,当主RM失效时,Standby RM可从共享存储恢复状态并接管服务。

三、完整部署实施步骤

1. 环境准备

  • 操作系统:CentOS 7+/Ubuntu 18.04+
  • JDK:1.8+(推荐OpenJDK)
  • 数据库:MySQL 5.7+或PostgreSQL 10+
  • 内存要求:至少8GB(生产环境建议16GB+)

2. 组件安装顺序

  1. 安装Zookeeper(3.5.7+)

    1. # 示例配置(zoo.cfg)
    2. tickTime=2000
    3. dataDir=/var/lib/zookeeper
    4. clientPort=2181
    5. server.1=localhost:2888:3888
  2. 部署数据库并初始化DolphinScheduler表结构

    1. -- MySQL初始化示例
    2. CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8mb4;
    3. USE dolphinscheduler;
    4. SOURCE /path/to/dolphinscheduler-dao/src/main/resources/sql/dolphinscheduler.sql;
  3. 配置YARN HA环境

  • 创建共享存储目录:mkdir /yarn_ha_store
  • 配置core-site.xml添加:
    1. <property>
    2. <name>hadoop.tmp.dir</name>
    3. <value>/yarn_ha_store</value>
    4. </property>

3. DolphinScheduler配置要点

修改conf/common.properties关键参数:

  1. # 数据库配置
  2. datasource.driver=com.mysql.jdbc.Driver
  3. datasource.url=jdbc:mysql://localhost:3306/dolphinscheduler?useSSL=false
  4. datasource.username=root
  5. datasource.password=password
  6. # Zookeeper配置
  7. zk.quorum=localhost:2181
  8. zk.root=/dolphinscheduler
  9. # YARN配置
  10. yarn.application.status.address=http://localhost:8088/ws/v1/cluster/apps/{appId}/state
  11. yarn.log.retrieve.timeout=10000

4. 启动流程优化

建议采用systemd管理服务:

  1. # /etc/systemd/system/dolphinscheduler-master.service
  2. [Unit]
  3. Description=DolphinScheduler Master Service
  4. After=network.target
  5. [Service]
  6. Type=simple
  7. User=dolphinscheduler
  8. Group=dolphinscheduler
  9. ExecStart=/opt/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server
  10. Restart=on-failure
  11. [Install]
  12. WantedBy=multi-user.target

四、高可用性验证与故障恢复

1. HA功能验证

  1. 模拟RM主节点故障:

    1. kill -9 $(ps -ef | grep ResourceManager | grep -v grep | awk '{print $2}')
  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节点注册失败
解决方案

  1. 检查worker.groups配置是否匹配
  2. 验证网络防火墙是否放行1234端口
  3. 查看logs/dolphinscheduler-worker.log定位具体错误

问题2:YARN任务卡在ACCEPTED状态
解决方案

  1. 检查NodeManager日志:/tmp/logs/yarn-nm.log
  2. 验证容器内存配置:
    1. <property>
    2. <name>yarn.nodemanager.resource.memory-mb</name>
    3. <value>4096</value> <!-- 根据实际调整 -->
    4. </property>

五、性能调优建议

  1. 内存配置优化:

    1. # 修改dolphinscheduler-env.sh
    2. export MASTER_OPTS="-Xms1024m -Xmx2048m -XX:+UseG1GC"
    3. export WORKER_OPTS="-Xms2048m -Xmx4096m"
  2. 数据库连接池调优(修改application.yml):

    1. spring:
    2. datasource:
    3. hikari:
    4. maximum-pool-size: 20
    5. minimum-idle: 5
    6. idle-timeout: 30000
  3. YARN队列配置示例:

    1. <property>
    2. <name>yarn.scheduler.capacity.root.queues</name>
    3. <value>default,dolphinscheduler</value>
    4. </property>
    5. <property>
    6. <name>yarn.scheduler.capacity.root.dolphinscheduler.capacity</name>
    7. <value>50</value>
    8. </property>

六、运维监控体系构建

  1. 关键指标监控:
  • Master/Worker存活状态(通过API接口/dolphinscheduler/admin/checkMasterWorkerState
  • YARN资源使用率(yarn node -list
  • 数据库连接数(SHOW STATUS LIKE 'Threads_connected'
  1. 告警规则配置示例:

    1. # alert.properties
    2. alert.plugin.class=org.apache.dolphinscheduler.plugin.alert.email.EmailAlert
    3. email.host=smtp.example.com
    4. email.port=465
    5. email.username=alert@example.com
    6. email.password=encrypted_password
  2. 日志集中管理方案:

  • 推荐ELK架构:Filebeat收集日志 → Logstash处理 → Elasticsearch存储 → Kibana可视化
  • 关键日志路径:
    • Master日志:logs/dolphinscheduler-master.log
    • Worker日志:logs/worker-server.log
    • YARN日志:/tmp/logs/yarn-*.log

通过上述部署方案,可在单机环境中实现DolphinScheduler与YARN HA的有效集成,既保持了部署的简便性,又通过YARN HA机制显著提升了系统可靠性。实际生产环境中,建议结合监控告警体系,定期进行故障演练,确保高可用机制的有效性。

相关文章推荐

发表评论