海豚调度(dolphinsheduler)离线安装

1. 简介

1.1  DolphinScheduler 是什么

Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。

Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。 解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。 DolphinScheduler 以 DAG(Directed Acyclic Graph,DAG)流式方式组装任务,可以及时监控任务的执行状态,支持重试、指定节点恢复失败、暂停、恢复、终止任务等操作。

1.2特性

简单易用

可视化 DAG: 用户友好的,通过拖拽定义工作流的,运行时控制工具

模块化操作: 模块化有助于轻松定制和维护。

丰富的使用场景

支持多种任务类型: 支持Shell、MR、Spark、SQL等10余种任务类型,支持跨语言,易于扩展丰富的工作流操作: 工作流程可以定时、暂停、恢复和停止,便于维护和控制全局和本地参数。

高可靠性:High Reliability

去中心化设计,确保稳定性。 原生 HA 任务队列支持,提供过载容错能力。 DolphinScheduler 能提供高度稳健的环境。

高扩展性:High Scalability

支持多租户和在线资源管理。支持每天10万个数据任务的稳定运行。

1.3 架构设计

MasterServer:采用分布式无中心设计理念,MasterServer主要负责 DAG 任务切分、任务提交、任务监控,并同时监听其它MasterServer和WorkerServer的健康状态。

WorkerServer:也采用分布式无中心设计理念,WorkerServer主要负责任务的执行和提供日志服务。

ZooKeeper:系统中的MasterServer和WorkerServer节点都通过ZooKeeper来进行集群管理和容错。

Alert:提供告警相关服务。

API:主要负责处理前端UI层的请求。

Web UI:系统的前端页面,提供系统的各种可视化操作界面。

1.4 各个模块

模块

描述

dolphinscheduler-alert

告警模块,提供 AlertServer 服务。

dolphinscheduler-api

web应用模块,提供 ApiServer 服务。

dolphinscheduler-common

通用的常量枚举、工具类、数据结构或者基类

dolphinscheduler-dao

提供数据库访问等操作。

dolphinscheduler-remote

基于 netty 的客户端、服务端

dolphinscheduler-server

MasterServer 和 WorkerServer 服务

dolphinscheduler-service

service模块,包含Quartz、Zookeeper、日志客户端访问服务,便于server模块和api模块调用

dolphinscheduler-ui

前端模块

2. 快速体验单机部署

Standalone 仅适用于 DolphinScheduler 的快速体验.

Standalone 仅建议 20 个以下工作流使用,因为其采用内存式的 H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止 standalone-server 会导致内存中数据库里的数据清空。

打开海豚调度二进制包下载链接Index of /dolphinscheduler/3.2.0

海豚调度(dolphinsheduler)离线安装_第1张图片

下载到linux 自定义目录下,并解压,修改目录名

wget https://dlcdn.apache.org/dolphinscheduler/3.2.0/apache-dolphinscheduler-3.2.0-bin.tar.gz
tar -zxvf apache-dolphinscheduler-3.2.0-bin.tar.gz
mv apache-dolphinscheduler-3.2.0-bin/ dolphinscheduler-3.2.0

修改目录访问权限

chmod -R 755 dolphinscheduler-3.2.0/

快速启动

cd dolphinscheduler-3.2.0/bin
./dolphinscheduler-daemon.sh start standalone-server

启动成功后如下图所示

打开浏览器链接http://10.16.60.31:12345/dolphinscheduler/ui/login

输入默认登录用户名密码admin/dolphinscheduler123

海豚调度(dolphinsheduler)离线安装_第2张图片

登录成功后,首页如下

海豚调度(dolphinsheduler)离线安装_第3张图片

3. 伪集群部署

伪集群部署目的是在单台机器部署 DolphinScheduler 服务,该模式下 master、worker、api server 都在同一台机器上。

3.1配置用户免密及权限

创建部署用户,并且一定要配置 sudo 免密。以创建 dolphinscheduler 用户为例

# 创建用户需使用 root 登录
useradd dolphinscheduler

# 添加密码
echo "dolphinscheduler" | passwd --stdin dolphinscheduler

# 配置 sudo 免密
sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers

# 修改目录权限,使得部署用户对二进制包解压后的 apache-dolphinscheduler-*-bin 目录有操作权限
chown -R dolphinscheduler:dolphinscheduler apache-dolphinscheduler-*-bin
chmod -R 755 apache-dolphinscheduler-*-bin

因为任务执行服务是以 sudo -u {linux-user} 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。

如果发现 /etc/sudoers 文件中有 "Defaults requirett" 这行,也请注释掉。

3.2配置机器 SSH 免密登陆

由于安装的时候需要向不同机器发送资源,所以要求各台机器间能实现 SSH 免密登陆。配置免密登陆的步骤如下

su dolphinscheduler

ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys

3.3启动 zookeeper

进入 zookeeper 的安装目录,将 zoo_sample.cfg 配置文件复制到 conf/zoo.cfg,并将 conf/zoo.cfg 中 dataDir 中的值改成 dataDir=./tmp/zookeeper

# 启动 zookeeper
./bin/zkServer.sh start

3.4 修改相关配置

完成基础环境的准备后,需要根据你的机器环境修改配置文件。配置文件可以在目录 bin/env 中找到,他们分别是install_env.sh 和 dolphinscheduler_env.sh。

文件 install_env.sh 描述了哪些机器将被安装 DolphinScheduler 以及每台机器对应安装哪些服务。您可以在路径 bin/env/install_env.sh 中找到此文件,可通过以下方式更改 env 变量,export =,配置详情如下。

ips="localhost"
sshPort="22"
masters="localhost"
workers="localhost:default"
alertServer="localhost"
apiServers="localhost"
installPath=~/dolphinscheduler
deployUser="dolphinscheduler"
zkRoot="/dolphinscheduler"

文件 ./bin/env/dolphinscheduler_env.sh 描述了下列配置:

DolphinScheduler 的数据库配置,详细配置方法见[初始化数据库]

一些任务类型外部依赖路径或库文件,如 JAVA_HOME 和 SPARK_HOME都是在这里定义的

如果您不使用某些任务类型,您可以忽略任务外部依赖项,但您必须根据您的环境更改 JAVA_HOME、注册中心和数据库相关配置。

# JAVA_HOME, will use it to start DolphinScheduler server
export JAVA_HOME=/data/base/jdk1.8.0_211

# Database related configuration, set database type, username and password
export DATABASE=mysql
export SPRING_PROFILES_ACTIVE=mysql
export SPRING_DATASOURCE_URL="jdbc:mysql://127.0.0.1:3306/dolphinscheduler"
export SPRING_DATASOURCE_USERNAME=root
export SPRING_DATASOURCE_PASSWORD=123456

# DolphinScheduler server related configuration
export SPRING_CACHE_TYPE=-none
export SPRING_JACKSON_TIME_ZONE=UTC
export MASTER_FETCH_COMMAND_NUM=10

# Registry center configuration, determines the type and link of the registry center
export REGISTRY_TYPE=zookeeper
export REGISTRY_ZOOKEEPER_CONNECT_STRING=localhost:2181

# Tasks related configurations, need to change the configuration if you use the related tasks.
export HADOOP_HOME=/data/cmpt/hadoop-3.3.2
export HADOOP_CONF_DIR=/data/cmpt/hadoop-3.3.2/etc/hadoop
export SPARK_HOME=/data/cmpt/spark-3.3.2-bin-hadoop3
export PYTHON_LAUNCHER=/usr/bin
export HIVE_HOME=/data/olap/hive-3.1.3
export FLINK_HOME=/data/cmpt/flink-1.17.1
export DATAX_LAUNCHER=/data/etl/datax/bin/datax.py

export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PYTHON_LAUNCHER:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$DATAX_LAUNCHER:$PATH

3.5初始化数据库

3.5.1 新建数据库

海豚调度(dolphinsheduler)离线安装_第4张图片

3.5.2  修改tools目录下的配置

vim dolphinscheduler-3.2.0/tools/conf/application.yaml

spring:
  main:
    banner-mode: off
  datasource:
    driver-class-name: org.postgresql.Driver
    url: jdbc:postgresql://127.0.0.1:5432/dolphinscheduler
    username: root
    password: root
    hikari:
      connection-test-query: select 1
      minimum-idle: 5
      auto-commit: true
      validation-timeout: 3000
      pool-name: DolphinScheduler
      maximum-pool-size: 50
      connection-timeout: 30000
      idle-timeout: 600000
      leak-detection-threshold: 0
      initialization-fail-timeout: 1

demo:
  tenant-code: default
  domain-name: localhost
  api-server-port: 5173

# Override by profile

---
spring:
  config:
    activate:
      on-profile: mysql
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: 123456
---
spring:
  config:
    activate:
      on-profile: mysql
  datasource:
    driver-class-name: com.mysql.jdbc.Driver

3.5.3 执行sql导入shell脚本

cd dolphinscheduler-3.2.0/tools/bin
./upgrade-schema.sh 

海豚调度(dolphinsheduler)离线安装_第5张图片

3.5.4 使用 dolphinscheduler启动

启动 DolphinScheduler

使用上面创建的部署用户运行以下命令完成部署,部署后的运行日志将存放在 logs 文件夹内

su dolphinscheduler
./bin/install.sh

海豚调度(dolphinsheduler)离线安装_第6张图片

 第一次部署的话,可能出现 5 次sh: bin/dolphinscheduler-daemon.sh: No such file or directory相关信息,此为非重要信息直接忽略即可

登录 DolphinScheduler

浏览器访问地址http://10.16.60.31:12345/dolphinscheduler/ui/login即可登录系统 UI。默认的用户名和密码是 admin/dolphinscheduler123

3.6 启停服务

# 一键停止集群所有服务
bash ./bin/stop-all.sh

# 一键开启集群所有服务
bash ./bin/start-all.sh

# 启停 Master
bash ./bin/dolphinscheduler-daemon.sh stop master-server
bash ./bin/dolphinscheduler-daemon.sh start master-server

# 启停 Worker
bash ./bin/dolphinscheduler-daemon.sh start worker-server
bash ./bin/dolphinscheduler-daemon.sh stop worker-server

# 启停 Api
bash ./bin/dolphinscheduler-daemon.sh start api-server
bash ./bin/dolphinscheduler-daemon.sh stop api-server

# 启停 Alert
bash ./bin/dolphinscheduler-daemon.sh start alert-server
bash ./bin/dolphinscheduler-daemon.sh stop alert-server

你可能感兴趣的:(大数据ETL实战,大数据,数据仓库,etl)