DolphinScheduler 2.0.5详解

news2024/9/22 7:29:54

文章目录

      • 第一章 DolphinScheduler介绍
        • 1.1 关于DolphinScheduler
        • 1.2 DolphinScheduler特性
        • 1.3 配置建议
          • 1.3.1 Linux 操作系统版本要求
          • 1.3.2 服务器建议配置
          • 1.3.3 生产环境
          • 1.3.4 网络要求
          • 1.3.5 客户端 Web 浏览器要求
      • 第二章 DolphinScheduler安装部署
        • 2.1 安装部署介绍
        • 2.2 单机版部署
        • 2.3 集群部署
          • 2.3.1 集群规划
          • 2.3.2 集群准备工作
          • 2.3.3 修改相关配置
          • 2.3.4 初始化数据库
          • 2.3.5 安装并启动DolphinScheduler
          • 2.3.6 启停命令
          • 2.3.7 登录DolphinScheduler
          • 2.3.8 Master和Worker查看
          • 2.3.9 集群安装部署流程总结
      • 第三章 DolphinScheduler功能应用
        • 3.1 租户创建
        • 3.2 创建用户
        • 3.3 创建项目
        • 3.4 进入项目
        • 3.5 创建工作流
        • 3.6 创建依赖或者并行任务工作流
        • 3.7 上线执行-补数-重跑执行
        • 3.8 工作流中单个任务运行
        • 3.9 定时管理
        • 3.10 工作流的导出导入
        • 3.11 数据中心操作
          • 3.11.1 MySQL数据源
          • 3.11.2 MySQL数据源创建问题解决
          • 3.11.3 Hive数据源准备
          • 3.11.4 Hiveserver2连接错误
          • 3.11.5 Hive数据源连接
          • 3.11.6 Spark的数据源
        • 3.12 任务类型
          • 3.12.1 Shell类型
          • 3.12.2 SQL类型
          • 3.12.3 Hive任务类型
          • 3.12.4 Python类型
        • 3.13 参数
          • 3.13.1 内置参数
          • 3.13.2 衍生内置参数
          • 3.13.3 本地和全局参数
          • 3.13.4 参数优先级
        • 3.14 告警
          • 3.14.1 钉钉告警准备
          • 3.14.2 钉钉告警

第一章 DolphinScheduler介绍

1.1 关于DolphinScheduler

**定义:**Apache DolphinScheduler是一个分布式去中心化,易扩展的可视化DAG工作流任务调度平台。

**作用:**致力于解决数据处理流程中错综复杂的依赖关系,使调度系统在数据处理流程中开箱即用。

  • 解决错综复杂的依赖关系不能直观监控任务健康状态等问题。
  • DolphinScheduler以DAG流式的方式将Task组装起来,可实时监控任务的运行状态,同时支持重试、从指定节点恢复失败、暂停及Kill任务等操作。

架构:

image-20220526121936171

1.2 DolphinScheduler特性

  • 简单易用

    DAG监控界面,所有流程定义都是可视化,通过拖拽任务定制DAG,通过API方式与第三方系统对接, 一键部署

  • 高可靠性

    去中心化的多Master和多Worker, 自身支持HA功能, 采用任务队列来避免过载,不会造成机器卡死

  • 丰富的使用场景

    支持暂停恢复操作.支持多租户,更好的应对大数据的使用场景. 支持更多的任务类型,如 spark, hive, mr, python, sub_process, shell

  • 高扩展性

    支持自定义任务类型,调度器使用分布式调度,调度能力随集群线性增长,Master和Worker支持动态上下线

1.3 配置建议

DolphinScheduler 作为一款开源分布式工作流任务调度系统,可以很好地部署和运行在 Intel 架构服务器及主流虚拟化环境下,并支持主流的Linux操作系统环境

1.3.1 Linux 操作系统版本要求
操作系统版本
Red Hat Enterprise Linux7.0 及以上
CentOS7.0 及以上,测试Centos 6.8也可以
Oracle Enterprise Linux7.0 及以上
Ubuntu LTS16.04 及以上

注意: 以上 Linux 操作系统可运行在物理服务器以及 VMware、KVM、XEN 主流虚拟化环境上

1.3.2 服务器建议配置

DolphinScheduler 支持运行在 Intel x86-64 架构的 64 位通用硬件服务器平台。对生产环境的服务器硬件配置有以下建议:

1.3.3 生产环境
CPU内存硬盘类型网络实例数量
4核+8 GB+SAS千兆网卡1+

注意:

  • 以上建议配置为部署 DolphinScheduler 的最低配置,生产环境强烈推荐使用更高的配置
  • 硬盘大小配置建议 50GB+ ,系统盘和数据盘分开
1.3.4 网络要求

DolphinScheduler正常运行提供如下的网络端口配置:

组件默认端口说明
MasterServer5678非通信端口,只需本机端口不冲突即可
WorkerServer1234非通信端口,只需本机端口不冲突即可
ApiApplicationServer12345提供后端通信端口

注意:

  • MasterServer 和 WorkerServer 不需要开启网络间通信,只需本机端口不冲突即可
  • 管理员可根据实际环境中 DolphinScheduler 组件部署方案,在网络侧和主机侧开放相关端口
1.3.5 客户端 Web 浏览器要求

DolphinScheduler 推荐 Chrome 以及使用 Chromium 内核的较新版本浏览器访问前端可视化操作界面

第二章 DolphinScheduler安装部署

2.1 安装部署介绍

DolphinScheduler提供了4种安装部署方式:

  • 单机部署(Standalone):Standalone 仅适用于 DolphinScheduler 的快速体验。如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用[Standalone]方式体检。
  • 伪集群部署(Pseudo-Cluster):伪集群部署目的是在单台机器部署 DolphinScheduler 服务,该模式下master、worker、api server 都在同一台机器上。如果你想体验更完整的功能,或者更大的任务量,推荐使用伪集群部署。
  • 集群部署(Cluster):集群部署目的是在多台机器部署 DolphinScheduler 服务,用于运行大量任务情况。如果你是在生产中使用,推荐使用集群部署或者kubernetes。
  • Kubernetes 部署:Kubernetes部署目的是在Kubernetes集群中部署 DolphinScheduler 服务,能调度大量任务,可用于在生产中部署。

注意:

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

2、Kubernetes部署先决条件:Helm3.1.0+ ;Kubernetes1.12+;PV 供应(需要基础设施支持)

2.2 单机版部署

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

如果你是新手,想要体验 DolphinScheduler 的功能,推荐使用Standalone方式体检。如果你想体验更完整的功能,或者更大的任务量,推荐使用伪集群部署。如果你是在生产中使用,推荐使用集群部署或者kubernetes

*注意:* Standalone仅建议20个以下工作流使用,因为其采用内存式的H2 Database, Zookeeper Testing Server,任务过多可能导致不稳定,并且如果重启或者停止standalone-server会导致内存中数据库里的数据清空。 如果您要连接外部数据库,比如mysql或者postgresql,请看配置数据库

  • 前置准备工作

    • JDK:下载JDK (1.8+),安装并配置 JAVA_HOME 环境变量,并将其下的 bin 目录追加到 PATH 环境变量中。如果你的环境中已存在,可以跳过这步。
    • 二进制包:在下载页面下载 DolphinScheduler 二进制包
  • 启动 DolphinScheduler Standalone Server

  • 解压并启动 DolphinScheduler

    二进制压缩包中有 standalone 启动的脚本,解压后即可快速启动。切换到有sudo权限的用户,运行脚本

    # 解压并运行 Standalone Server
    [root@qianfeng01 soft]# cd /opt/soft
    [root@qianfeng01 soft]# tar -zxvf apache-dolphinscheduler-2.0.5-bin.tar.gz
    [root@qianfeng01 soft]# cd ./apache-dolphinscheduler-2.0.5-bin
    [root@qianfeng01 apache-dolphinscheduler-2.0.5-bin]# ./bin/dolphinscheduler-daemon.sh start standalone-server
    #查询dolphinscheduler的单机服务
    [root@qianfeng01 apache-dolphinscheduler-2.0.5-bin]# jps
    18688 Jps
    18665 StandaloneServer
    
  • 登录 DolphinScheduler

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

    image-20230413135413574

  • 启停服务

    脚本 ./bin/dolphinscheduler-daemon.sh 除了可以快捷启动 standalone 外,还能停止服务运行,全部命令如下

    # 启动 Standalone Server 服务
    [root@qianfeng01 apache-dolphinscheduler-2.0.5-bin]# ./bin/dolphinscheduler-daemon.sh start standalone-server
    # 停止 Standalone Server 服务
    [root@qianfeng01 apache-dolphinscheduler-2.0.5-bin]# ./bin/dolphinscheduler-daemon.sh stop standalone-server
    
  • 配置数据库

    Standalone server 使用 H2 数据库作为其元数据存储数据,这是为了上手简单,用户在启动服务器之前不需要启动数据库。但是如果用户想将元数据库存储在 MySQL 或 PostgreSQL 等其他数据库中,他们必须更改一些配置。请参考 数据源配置 Standalone 切换元数据库 创建并初始化数据库。

单机版到此为止即可。

2.3 集群部署

2.3.1 集群规划

集群模式下,可配置多个Master及多个Worker。通常可配置2~3个Master,若干个Worker。由于集群资源有限,此处配置一个Master,三个Worker,集群规划如下。

主机名ip服务备注
qianfeng01192.168.10.101master,worker
qianfeng02192.168.10.102master,worker该服务器也可以安装master
qianfeng02192.168.10.103worker
2.3.2 集群准备工作
  • 操作系统:linux centos 7.7

  • 部署版本:apache-dolphinscheduler-2.0.5-bin

  • JDK:配置Java环境,将JAVA_HOME配置于PATH中,推荐版本使用jdk8+

  • 数据库:本文使用的是MySQL 8.0.26版本,也可以使用5.7版本及以上,或者是使用PostgreSQL数据库(8.2.15+)

  • 注册中心:zookeeper(3.4.6+)

  • 依赖大数据相关组件及版本为:Zookeeper 3.6.3、Hadoop 3.3.1 、Hive 3.1.2 、Spark 3.1.2

  • 创建部署用户,并为该用户配置免登录,以创建dolphinscheduler用户为例(每一台需要部署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
    

    注意:

    • 因为任务执行服务是以 sudo -u {linux-user} 切换不同 linux 用户的方式来实现多租户运行作业,所以部署用户需要有 sudo 权限,而且是免密的。初学习者不理解的话,完全可以暂时忽略这一点
    • 如果发现 /etc/sudoers 文件中有 “Defaults requirett” 这行,也请注释掉
  • 配置机器SSH免密登陆

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

    #分别在每台安装dolphinscheduler的服务器上执行如下命令
    su dolphinscheduler
    ssh-keygen -t rsa
    ssh-copy-id qianfeng01
    ssh-copy-id qianfeng02
    ssh-copy-id qianfeng03
    

    注意:

    配置完成后,可以通过运行命令 ssh localhost 判断是否成功,如果不需要输入密码就能ssh登陆则证明成功

  • 启动zookeeper集群(外置Zookeeper集群启动即可)

    # 启动 zookeeper
    zkServer.sh start
    
2.3.3 修改相关配置

完成了基础环境的准备后,在运行部署命令前,还需要根据环境修改配置文件。配置文件在路径在conf/config/install_config.conf下,一般部署只需要修改INSTALL MACHINE、DolphinScheduler ENV、Database、Registry Server部分即可完成部署,下面对必须修改参数进行说明

  • 在安装之前需要修改install_config.conf文件,基础安装只需要修改INSTALL MACHINE、DolphinScheduler ENV、Database、Registry Server几个部分即可,下面对这些参数进行说明:

    [root@qianfeng01 soft]# vim /opt/soft/apache-dolphinscheduler-2.0.5-bin/conf/config/install_config.conf
    
    # ---------------------------------------------------------
    # INSTALL MACHINE
    # ---------------------------------------------------------
    # 集群服务器(hostname/ip)
    ips="qianfeng01,qianfeng02,qianfeng03"
    
    # 默认ssh端口
    sshPort="22"
    
    # 集群主节点,多个使用逗号分隔
    masters="qianfeng01"
    
    # 集群从节点列表
    workers="qianfeng01:default,qianfeng02:default,qianfeng03:default"
    
    # 告警服务节点
    alertServer="qianfeng02"
    
    # API服务阶段
    apiServers="qianfeng01"
    
    # Python网关服务节点
    pythonGatewayServers="qianfeng01"
    
    # 集群安装目录,如果不存在由`install.sh`来创建
    installPath="/usr/local/dolphinscheduler"
    
    # 部署用户,该用户需要在`install.sh`脚本运行前在所有节点创建,还需要sudo权限,hdfs的根目录也需要该用户有权限
    deployUser="dolphinscheduler"
    
    # 数据目录,确保上述用户拥有操作权限
    dataBasedirPath="/home/dolphinscheduler/data"
    
    # ---------------------------------------------------------
    # DolphinScheduler ENV
    # ---------------------------------------------------------
    # 指定Java安装目录
    javaHome="/usr/local/jdk1.8.0_321/"
    
    # 指定api服务端口,默认12345
    apiServerPort="12345"
    
    # ---------------------------------------------------------
    # Database
    # NOTICE: If database value has special characters, such as `.*[]^${}\+?|()@#&`, Please add prefix `\` for escaping.
    # ---------------------------------------------------------
    # 指定元数据库类型,目前支持:``postgresql``, ``mysql`, `h2``.默认h2
    DATABASE_TYPE=${DATABASE_TYPE:-"mysql"}
    
    # 指定Spring datasource url
    SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL:-"jdbc:mysql://qianfeng01:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8"}
    
    # Spring datasource username
    SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME:-"root"}
    
    # Spring datasource password
    SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD:-"123456"}
    
    # ---------------------------------------------------------
    # Registry Server
    # ---------------------------------------------------------
    # 注册服务插件名称
    registryPluginName="zookeeper"
    
    # 注册zk集群地址
    registryServers="qianfeng01:2181,qianfeng02:2181,qianfeng03:2181"
    
    # 注册在zk中的命名空间
    registryNamespace="dolphinscheduler"
    
    # ---------------------------------------------------------
    # Worker Task Server
    # ---------------------------------------------------------
    # worker服务插件目录
    taskPluginDir="lib/plugin/task"
    
    # 资源存储类型
    resourceStorageType="HDFS"
    
    # 资源存储路径,建议使用/dolphinscheduler
    resourceUploadPath="/dolphinscheduler"
    
    # 指定hdfs入口
    defaultFS="hdfs://qianfeng01:9000"
    
    # yarn的端口
    resourceManagerHttpAddressPort="8088"
    
    # 如果yarn开启HA,指定HA的虚拟服务名
    yarnHaIps="ns-yarn"
    
    # 单RM服务节点
    singleYarnIp="yarnIp1"
    
    # 拥有创建HDFS/S3根目录的权限用户
    # Note: if kerberos is enabled, please config hdfsRootUser=
    hdfsRootUser="hdfs"
    
    # kerberos config
    # kerberos启用,默认关闭
    kerberosStartUp="false"
    # kdc krb5 config file path
    krb5ConfPath="$installPath/conf/krb5.conf"
    # keytab username,watch out the @ sign should followd by \\
    keytabUserName="hdfs-mycluster\\@ESZ.COM"
    # username keytab path
    keytabPath="$installPath/conf/hdfs.headless.keytab"
    # kerberos expire time, the unit is hour
    kerberosExpireTime="2"
    
    # 是否用sudo权限
    sudoEnable="true"
    
    # worker tenant auto create
    workerTenantAutoCreate="false"
    

    如果HDFS是HA,执行如下的操作

    cp /usr/local/hadoop-3.3.1/etc/hadoop/core-site.xml /usr/local/hadoop-3.3.1/etc/hadoop/hdfs-site.xml /opt/soft/apache-dolphinscheduler-2.0.5-bin/conf/
    
2.3.4 初始化数据库

DolphinScheduler 任然需要元数据,目前元数据支持存储在 PostgreSQL 和 MySQL中(默认是h2数据库),所以需要创建专用的元数据库、用户和密码。

  • 创建数据库、用户和授权

    -- 进入MySQL命令行
    [root@qianfeng01 soft]# mysql -uroot -p123456
    -- 创建dolphinscheduler的元数据库,并指定编码
    mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    -- 为dolphinscheduler数据库授权
    mysql> grant all privileges on dolphinscheduler.* to 'root'@'%';
    -- 刷新权限
    mysql> flush privileges;
    
  • 添加MySQL的lib依赖

    MySQL 需要手动下载 对应的mysql-connector-java 驱动并添加到 DolphinScheduler 的 lib目录下。

    [root@qianfeng01 apache-dolphinscheduler-2.0.5-bin]# cp /opt/soft/mysql-connector-java-5.1.28-bin.jar /opt/soft/apache-dolphinscheduler-2.0.5-bin/lib/
    
  • 初始化元数据

    [root@qianfeng01 soft]# sh ./apache-dolphinscheduler-2.0.5-bin/script/create-dolphinscheduler.sh
    ......
    2022-05-22 00:01:44.979  INFO 31419 --- [           main] .u.s.CreateDolphinScheduler$CreateRunner : init DolphinScheduler finished
    2022-05-22 00:01:44.979  INFO 31419 --- [           main] .u.s.CreateDolphinScheduler$CreateRunner : create DolphinScheduler success
    2022-05-22 00:01:44.985  INFO 31419 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : DolphinScheduler - Shutdown initiated...
    2022-05-22 00:01:44.986  INFO 31419 --- [ionShutdownHook] com.zaxxer.hikari.HikariDataSource       : DolphinScheduler - Shutdown completed.
    
2.3.5 安装并启动DolphinScheduler

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

[root@qianfeng01 soft]# sh ./apache-dolphinscheduler-2.0.5-bin/install.sh

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

2.3.6 启停命令

第一次安装后会自动启动所有服务的,如有服务问题或者后续需要启停,命令如下。下面的操作脚本都在dolphinScheduler安装目录bin下。

# 一键停止集群所有服务
sh /usr/local/dolphinscheduler/bin/stop-all.sh
# 一键开启集群所有服务
sh /usr/local/dolphinscheduler/bin/start-all.sh


########单个服务的启动和停止使用如下命令
# 启停 Master
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop master-server
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh start master-server
# 启停 Worker
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh start worker-server
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop worker-server
# 启停 Api
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh start api-server
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop api-server
# 启停 Logger
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh start logger-server
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop logger-server
# 启停 Alert
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh start alert-server
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop alert-server
# 启停 Python Gateway
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh start python-gateway-server
sh /usr/local/dolphinscheduler/bin/dolphinscheduler-daemon.sh stop python-gateway-server
2.3.7 登录DolphinScheduler

访问http://192.168.10.101:12345/dolphinscheduler或者http://qianfeng01:12345/dolphinscheduler即可登录系统UI,默认的用户名和密码是 admin/dolphinscheduler123

image-20220522001506695

登陆成功如下:

image-20230408191159829

2.3.8 Master和Worker查看

查看Master和workers情况如下:

image-20230408191133078

到此为止,dolphinscheduler集群安装成功。

2.3.9 集群安装部署流程总结
  1. 准备工作:创建dolphinscheduler用户并且做免登录

  2. 将apache-dolphinscheduler-2.0.5-bin.tar.gz上传到服务器某个目录

  3. 将服务器的apache-dolphinscheduler-2.0.5-bin.tar.gz解压到某一个目录即可

  4. 配置解压目录下的install_config.conf文件,命令为:

    vim /opt/soft/apache-dolphinscheduler-2.0.5-bin/conf/config/install_config.conf
    
  5. 提前自己创建mysql中的dolphinscheduler的元数据库(dolphinscheduler),并要将该元数据库授予对应用户(root)所有权限。

  6. 将对应的mysql的数据库的连接驱动拷贝到apache-dolphinscheduler-2.0.5-bin.tar.gz解压目录下的lib目录下,命令如下:

    cp /opt/soft/mysql-connector-java-5.1.28-bin.jar /opt/soft/apache-dolphinscheduler-2.0.5-bin/lib/
    
  7. dolphinscheduler的元数据库(dolphinscheduler)的初始化。命令:

    sh /opt/soft/apache-dolphinscheduler-2.0.5-bin/script/create-dolphinscheduler.sh
    

    初始化后,一定要检查mysql中的dolphinscheduler是否有44张表。

  8. 先启动zookeeper集群,以确保后续的安装成功。启动命令:

    /opt/soft/zookeeper/bin/zkServer.sh start
    
  9. dolphinscheduler的安装,这一步仅需成功执行一次,命令如下:

    sh /opt/soft/apache-dolphinscheduler-2.0.5-bin/install.sh
    
  10. 在master所在的服务器监听12345端口是否启动,命令如下:

    netstat -nltcp | grep 12345
    
  11. 如果监听12345成功,则几乎可以访问web ui页面,访问路径为:http://qianfeng01:12345/dolphinscheduler/

安装常见的问题及重新安装注意事项:

  1. 所有服务都启动成功,12345监听也成功,但是web ui使用默认的用户名和密码始终登录不上或者没有反应。

    检查MySQL中的dolphinscheduler元数据库是否有对应的数据。如果没有,必须要重新生成,并且重新安装。
    
  2. 重新安装流程:

    1.删除每台服务器的安装目录:rm -rf /usr/local/dolphinscheduler
    2.删除zk集群中的dolphinscheduler中的znode节点,命令如下:
    		[root@qianfeng01 soft]# /usr/local/zookeeper-3.6.3/bin/zkCli.sh
    		[zk: localhost:2181(CONNECTED) 1]rmr /dolphinscheduler
    3.删除MySQL中的元数据库	(如果有44张表可以不删除)	,如果删除元数据库就必须要重新去初始化一遍
    4.然后重新执行安装命令即可。命令如:sh /opt/soft/apache-dolphinscheduler-2.0.5-bin/install.sh
    

第三章 DolphinScheduler功能应用

3.1 租户创建

租户是操作系统中的实际的用户。

image-20230413140317303

删除、修改等等都可以,但是需要管理员。

3.2 创建用户

用户是dolphinscheudler系统中的用户,可以登录、可以提交作业、可以进行数据开发。

image-20230413140523167

该用户是可以用于登录该系统。同时,在企业中,用户的授权很重要。

3.3 创建项目

image-20230413140852126

项目也可以进行删除、修改等操作。

3.4 进入项目

image-20230413141016702

3.5 创建工作流

image-20230413141213996

创建shell 类型的task:

image-20230413141604007

保存Shell类型任务的工作流:

image-20230413141731549

工作流列表查看,并上线工作流:

image-20230413141953923

工作流还可以进行编辑,但是必须先下线,才能编辑。还能进行复制、删除、查看版本等操作。

工作流运行状态:

image-20230408162559532

3.6 创建依赖或者并行任务工作流

Shell类型的start任务开始:

image-20230409093745079

Shell类型的TaskA任务的配置如下:

image-20230409093926090

Shell类型的TaskB任务配置如下:

image-20230409094130761

Shell类型的end任务配置如下:

image-20230409094340472

Shell类型工作流保存:

image-20230409094544451

3.7 上线执行-补数-重跑执行

  • 对Shell_task_test工作流先上线,然后非补数运行如下:

    image-20230409094733073

    查看普通运行结果:

    image-20230409095117624

    查看task运行日志:

    image-20230409095340302

  • 对Shell_task_test工作流先上线,然后非补数运行如下:

    image-20230409095708964

    补数据成功截图:

    image-20230409100112528

  • 重跑执行

    image-20230409100233725

    重跑成功如下:

    image-20230409100323606

3.8 工作流中单个任务运行

点击某个工作流—>进入DAG面板—>如下图所示:

image-20230409105626771

运行配置如下图所示:

image-20230409105927362

执行结果如下:

image-20230409110039838

3.9 定时管理

工作流—>定时—>如下图:

image-20230409111637382

创建后如下图所示:

image-20230409111730650

上线定时任务:

工作流—>点击定时管理—>如下图:

image-20230409111817810

定时工作流上线如下图:

image-20230409111921792

定时任务执行结果:

3.10 工作流的导出导入

导出工作流如下图:

image-20230409112745329

导入工作流:

导入之前,需要将导出的json文件或者已经存在json文件中的工作流名称修改成和ds中已有的工作流名称不一致即可。

image-20230409112921107

导入之后的结果如下:

image-20230409113049004

3.11 数据中心操作

3.11.1 MySQL数据源

数据源中心->创建数据源:

image-20230409113505144

配置MySQL数据源如下图:

image-20230409113858401

创建好MySQL的数据源后如下图:

image-20230409113944660

到此为止,MySQL的数据源配置好。

3.11.2 MySQL数据源创建问题解决
  1. 去服务器上,查看dolphinscheduler安装目录下lib和各个模块下的libs下的mysql-connector-java-版本情况,命令如下:

    [root@qianfeng01 dolphinscheduler]# ll ./lib/mysql-connector-java-8.0.26.jar
    -rw-r--r--. 1 root root 2462364 4月   8 19:05 ./lib/mysql-connector-java-8.0.26.jar
    [root@qianfeng01 dolphinscheduler]# ll ./api-server/libs/mysql-connector-java-8.0.16.jar
    -rw-r--r--. 1 root root 2293144 4月   8 13:41 ./api-server/libs/mysql-connector-java-8.0.16.jar
    [root@qianfeng01 dolphinscheduler]# ll ./master-server/libs/mysql-connector-java-8.0.16.jar
    -rw-r--r--. 1 root root 2293144 4月   8 13:41 ./master-server/libs/mysql-connector-java-8.0.16.jar
    [root@qianfeng01 dolphinscheduler]# ll ./worker-server/libs/mysql-connector-java-8.0.16.jar
    -rw-r--r--. 1 root root 2293144 4月   8 13:41 ./worker-server/libs/mysql-connector-java-8.0.16.jar
    [root@qianfeng01 dolphinscheduler]# ll ./alert-server/libs/mysql-connector-java-8.0.16.jar
    -rw-r--r--. 1 root root 2293144 4月   8 13:41 ./alert-server/libs/mysql-connector-java-8.0.16.jar
    -rw-r--r--. 1 root root 2293144 4月   8 13:41 ./tools/libs/mysql-connector-java-8.0.16.jar
    
  2. 将dolphinscheduler安装目录下lib目录下mysql进行备份(三台服务器都执行)

    [root@qianfeng01 dolphinscheduler]# cd /usr/local/dolphinscheduler
    [root@qianfeng01 dolphinscheduler]# mv ./lib/mysql-connector-java-8.0.26.jar ./lib/mysql-connector-java-8.0.26.jar.bak
    
  3. 将mysql-connector-java-8.0.16.jar包复制到dolphinscheduler安装目录下lib目录下(要求每台服务器都执行)

    cp /home/software/mysql-connector-java-8.0.16.jar /usr/local/dolphinscheduler/lib/
    #其它两台服务器建议用scp远程拷贝
    scp /home/software/mysql-connector-java-8.0.16.jar qianfeng02:/usr/local/dolphinscheduler/lib/
    scp /home/software/mysql-connector-java-8.0.16.jar qianfeng03:/usr/local/dolphinscheduler/lib/
    
  4. 如果dolphinscheduler安装目录下的其它模块mysql的驱动正常是8.0.16,那就不用去处理,否则需要像2,3步骤一样执行

  5. 最后,重启dolphinscheduler,然后再创建MySQL数据中心

3.11.3 Hive数据源准备
  1. 需要启动Hive中的MetaStore和Hiveserver2服务(hive的安装服务器执行),命令如下:

    #启动元数据服务
    hive --service metastore &
    #启动Hiveserver2服务
    hive --service hiveserver2 &
    
  2. 查看启动后的metastore和hiveserver2服务(在hive安装的服务器执行如下命令)

    #查看2个服务
    [root@qianfeng01 dolphinscheduler]# jps
    8736 RunJar
    8869 RunJar
    
    #过滤出某个指定的服务
    [root@qianfeng01 dolphinscheduler]# ps -ef | grep hiveserver2
    [root@qianfeng01 dolphinscheduler]# ps -ef | grep metastore
    
  3. 检测metastore服务(在hive安装的服务器执行如下命令)

    [root@qianfeng01 dolphinscheduler]# netstat -nltcp | grep 9083
    
  4. 检车Hiveserver2的服务(在hive安装的服务器执行如下命令)

    [root@qianfeng01 dolphinscheduler]# /usr/local/hive-3.1.2/bin/beeline
    beeline> !connect jdbc:hive2://qianfeng01:10000
    Connecting to jdbc:hive2://qianfeng01:10000
    Enter username for jdbc:hive2://qianfeng01:10000: root     #操作系统中登录用户名和密码
    Enter password for jdbc:hive2://qianfeng01:10000: ******
    Connected to: Apache Hive (version 3.1.2)
    Driver: Hive JDBC (version 3.1.2)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    0: jdbc:hive2://qianfeng01:10000> show databases;
    
3.11.4 Hiveserver2连接错误

通常是在使用hiveserver2或者dolphinscheduler连接hive(hiveserver2服务)的时候会报错如下:

2023-04-09 00:05:47,328 WARN  [main] jdbc.HiveConnection (HiveConnection.java:<init>(237)) - Failed to connect to qianfeng01:10000
Error: Could not open client transport with JDBC Uri: jdbc:hive2://qianfeng01:10000: Failed to open new session: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.authorize.AuthorizationException): User: root is not allowed to impersonate root (state=08S01,code=0)

解决办法:

  1. 配置hadoop安装目录下的etc/hadoop/core-site.xml文件(每台安装hadoop的服务器都需要配置),追加如下内容:
<property>
  <name>hadoop.proxyuser.root.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>

注意:这里登陆的是root用户。若登录的是hadoop用户,则配置文件中的root需要修改为hadoop
当上述文件配置不正确时会可能会引起beeline连接Hive时报如下异常
User: hadoop is not allowed to impersonate root), serverProtocolVersion:null) (state=08S01,code=0)
先部署安装使用的是hadoop用户,故而需要修改core-site.xml配置文件

  1. 将Hadoop停止,并重启集群
  2. 停止hive的metastore和hiveserver2服务,并重启
  3. 再次使用hive的beeline工具连接即可
3.11.5 Hive数据源连接

image-20230409153902465

上图连接方式和MySQL大致一样即可,提交之后的效果如下:

image-20230409153947200

3.11.6 Spark的数据源

…暂时不做,大家自己集成即可。

3.12 任务类型

3.12.1 Shell类型

…上面说过,参考3.5即可。

3.12.2 SQL类型

image-20230409155733719

保存工作流:

image-20230409154849238

运行工作流:

image-20230409155029310

上线运行:

image-20230409155105237

运行:

image-20230409155130759

查看结果:

image-20230409155815204

3.12.3 Hive任务类型

该版本Hive仍然使用SQL类型的任务去创建工作流,具体工作流创建如下:

image-20230409160345956

保存工作流:

image-20230409160432816

上线并执行:

image-20230409160513293

去Hive验证结果:

image-20230409160717092

到此为止Hive任务类型完成。

3.12.4 Python类型

创建python类型的工作流:

image-20230409170322572

保存工作流:

image-20230409170045413

上线运行:

image-20230409170131056

查看运行结果:

image-20230409170231219

3.13 参数

  • 内置参数:系统自带的参数的属性

  • 全局参数:工作流中的每一个task都可以用

  • 本地参数:当前Task可以使用

  • 参数传递:某一个任务接收参数往下一个task传递

3.13.1 内置参数
变量名声明方式含义
system.biz.date${system.biz.date}日常调度实例定时的定时时间前一天,格式为 yyyyMMdd
system.biz.curdate${system.biz.curdate}日常调度实例定时的定时时间,格式为 yyyyMMdd
system.datetime${system.datetime}日常调度实例定时的定时时间,格式为 yyyyMMddHHmmss
3.13.2 衍生内置参数
  • 支持代码中自定义变量名,声明方式:${变量名}。可以是引用 “系统参数”

  • 我们定义这种基准变量为 [ . . . ] 格式的, [...] 格式的, [...]格式的,[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等

  • 也可以通过以下两种方式:

    1.使用add_months()函数,该函数用于加减月份, 第一个入口参数为[yyyyMMdd],表示返回时间的格式 第二个入口参数为月份偏移量,表示加减多少个月

    • 后 N 年:$[add_months(yyyyMMdd,12*N)]

    • 前 N 年:$[add_months(yyyyMMdd,-12*N)]

    • 后 N 月:$[add_months(yyyyMMdd,N)]

    • 前 N 月:$[add_months(yyyyMMdd,-N)]


    2.直接加减数字 在自定义格式后直接“+/-”数字

    • 后 N 周:$[yyyyMMdd+7*N]
    • 前 N 周:$[yyyyMMdd-7*N]
    • 后 N 天:$[yyyyMMdd+N]
    • 前 N 天:$[yyyyMMdd-N]
    • 后 N 小时:$[HHmmss+N/24]
    • 前 N 小时:$[HHmmss-N/24]
    • 后 N 分钟:$[HHmmss+N/24/60]
    • 前 N 分钟:$[HHmmss-N/24/60]
3.13.3 本地和全局参数

创建带有全局和本地参数的工作流。

创建有本地和全局参数的task:

image-20230409191152141

创建只有全局参数的task:

image-20230409191253673

保存工作流:

image-20230409191328065

上线工作流并运行:

image-20230409191410166

查看结果:

image-20230409191445356

另外一个的全局参数自己查看即可。

3.13.4 参数优先级

DolphinScheduler 中所涉及的参数值的定义可能来自三种类型:

  • 全局参数:在工作流保存页面定义时定义的变量
  • 上游任务传递的参数:上游任务传递过来的参数
  • 本地参数:节点的自有变量,用户在“自定义参数”定义的变量,并且用户可以在工作流定义时定义该部分变量的值

因为参数的值存在多个来源,当参数名相同时,就需要会存在参数优先级的问题。

DolphinScheduler 参数的优先级从高到低为:全局参数 > 上游任务传递的参数 > 本地参数

3.14 告警

  • 企业微信
  • 钉钉
3.14.1 钉钉告警准备
  1. 建立钉钉群聊

    -自己建立

  2. 对群聊进行设置

    image-20230409192120788

  3. 选择机器人->添加机器人—>自定义—>如下图:

    image-20230409192651128

    配置机器人:

    image-20230409192422614

    复制webhook即可:

    image-20230409192531197

3.14.2 钉钉告警

创建dingTalk实例:

image-20230409193130125

创建告警组:

image-20230409193255011

工作流上线运行并配置告警组:

image-20230409193443494

查看钉钉群聊中,是否有任务执行信息:

image-20230409193658904

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/465372.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Mybatis笔记分享【狂神说java】

MyBatis 1、简介 1.1什么是MyBatis MyBatis 是一款优秀的持久层框架 它支持自定义 SQL、存储过程以及高级映射 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO&#xff08;…

Windows环境下使用Internet Information Service( IIS)管理器上搭建Web资源网站

一、业务需求 在项目的开发过程中,需要将指定文件夹发布称为一个网站,可以通过网页查看该文件夹下的内容和子目录(及其子目录内容);同时也可以将内容上传到该文件夹中,方便他人使用,如下图所示: 二、思路分析 将文件夹发布为网站,可以使用Windows的IIS管理器搭建一个W…

Scala之模式匹配与隐式转换

目录 模式匹配&#xff1a; 基础语法如下&#xff1a; 模式守卫&#xff1a; 类型匹配&#xff1a; 对象匹配 样例类&#xff1a; 偏函数&#xff1a; 偏函数的化简写法&#xff1a; 偏函数的使用&#xff1a; 隐式转换&#xff1a; 官方定义&#xff1a; 个人理解&…

(小甲鱼python)文件永久存储(下)总结 文件处理with语句和上下文管理器、pickle模块详解

一、基础复习 上节课回顾&#xff1a; 1.文件永久存储(上) python文件永久存储(创建打开文件、文件对象的各种方法及含义) 2.文件永久存储(中)总结 路径处理 pathlib–面向对象的文件系统路径 绝对路径vs相对路径&#xff08;路径查询、路径修改、查找功能&#xff09; 二、文…

【JavaScript】new命令精华总结

相关概念 对象是什么? 1.对象是单个实物的抽象 2.对象是一个容器&#xff0c;封装了属性和方法 属性是对象的状态&#xff0c;方法是对象的行为&#xff0c;把对象中的函数一般称为方法 构造函数 专门用来生成实例对象的函数&#xff0c;是对象的模板&#xff0c;第一个字…

vue2数据响应式原理(7) 收集依赖,用get和set叙述出最基础的至高vue哲学

收集依赖在整个数据响应式中算是比较难的 首先 要理解这里所指的依赖 依赖 可能vue项目做多了就会想到 npm i 但其实跟这个是没有什么关系的 我们这里所指的依赖 是用到数据的地方 什么地方用到数据 什么地方就是依赖 简单说 就是依赖这个响应式数据 首先 我们看一下 vue1 和…

【Linux初阶】进程状态 | Linux下常见进程状态讲解 进程循环打印方法 ls>makefile指令 makefile$@^特殊符号的应用

&#x1f31f;hello&#xff0c;各位读者大大们你们好呀&#x1f31f; &#x1f36d;&#x1f36d;系列专栏&#xff1a;【Linux初阶】 ✒️✒️本篇内容&#xff1a;进程状态的概念&#xff0c;进程状态在普遍操作系统层面和Linux层面的理解&#xff0c;Linux常见进程状态&…

【论文阅读】轻量化网络MobileNet-V1

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、摘要二、MobileNet-V1核心点介绍&#xff1a;普通卷积和深度可分离卷积三、两个超参数四。后续实验 前言 今天重温一下轻量化经典论文MobileNet-V1&#x…

拿下车载激光雷达份额「第一」,图达通寻求「变阵」

在2022年的量产元年之后&#xff0c;激光雷达正尝试进入真正大规模量产周期。在此之前&#xff0c;有一些关键问题需要解决&#xff0c;其中包括&#xff1a;其一&#xff0c;帮助主机厂将激光雷达真正用起来&#xff0c;发挥价值&#xff1b;其二&#xff0c;丰富产品品类&…

【C语言】文件的相关操作(一文10分钟彻底弄懂)

前言&#xff1a; 欢迎各位童学来到本文&#xff0c;本文将主要通过一个实战案例&#xff08;奥运会奖牌&#xff09;来帮助各位小伙伴们熟悉并掌握文件的相关操作&#xff0c;相信经过一个实战案例的小项目后大家对文件的相关操作应该都能够轻车熟路了&#xff01; &#x1f…

仔细观察Binder和mmap;分析Android进程间通信

前言 Binder是Android系统中的一种IPC&#xff08;进程间通信&#xff09;机制&#xff0c;它使得不同进程中的组件能够互相交互和通信。在Binder中&#xff0c;一个进程中的客户端和另一个进程中的服务器之间通常通过Binder驱动程序进行通信。这种通信方式能够提供安全性和效…

材料写作技巧:关于“新”排比句40例

1.是新时代新征程举旗定向的“宣言书”&#xff0c;是新时代新征程伟大思想的“领航标”&#xff0c;是新时代新征程推进中国式现代化的“动员令”&#xff0c;是新时代新征程自我革命的“冲锋号”。 2.胸怀家国&#xff0c;树立远大理想&#xff0c;奋力担当新时代青年使命&a…

真题详解(数据流图平衡)-软件设计(五十九)

真题详解&#xff08;磁盘&#xff09;-软件设计&#xff08;五十八)https://blog.csdn.net/ke1ying/article/details/130376289 如何保证数据流图平衡&#xff1f; 父图中输入流输出流的名称和数目必须和子图的相同。 父图中一条输入输出流可以对应子图几条输入输出流&…

MATLAB实现OCR自动阅卷,识别答题卡进行成绩统计

利用MATLAB进行答题卡识别编程设计&#xff0c;最主要的是实现了将答题卡中被填涂的答案提取出来&#xff0c;然后与标准的答案进行比对。通过相关的算法&#xff0c;算出考生填涂正确的题数&#xff0c;并统计计算后的得分。 每种答题卡都有很明显的助识别标记&#xff0c;像…

LeetCode - 494 目标和

目录 题目来源 题目描述 示例 提示 题目解析 算法源码 题目来源 494. 目标和 - 力扣&#xff08;LeetCode&#xff09; 题目描述 给你一个整数数组 nums 和一个整数 target 。 向数组中的每个整数前添加 或 - &#xff0c;然后串联起所有整数&#xff0c;可以构造一个…

MathType如何成功插入到word

有时候我们重装mathtype的时候&#xff0c;我们的word里嵌入的mathtype没有了&#xff0c;因此我们如何让它重新出来呢&#xff1f;下面我们来看看。 1、我们打开word&#xff0c;点击“选项”&#xff0c;点击“加载项”找到如图所示的路径内容&#xff08;根据自己电脑的实际…

IDA 知识汇总

工具使用-IDA从入门到理解 - 简书作者ID:leishi-yanmu IDA对于各位师傅应该无需简介了,如果写的不对的地方,还望师傅们多多包涵。讲解的时候会涉及到笔者在学习和使用时候的理解。 启动界面介绍: ...https://www.jianshu.com/p/190805574432[原创]【iOS逆向与安全】利用IDA…

实现网页顶部线性加载进度条

插件一&#xff1a;NProgress.js 下载链接&#xff1a;https://github.com/rstacruz/nprogress 插件二&#xff1a;MProgress.js 下载链接&#xff1a;https://github.com/lightningtgc/mprogress.js/ 这两个插件都是实现网页加载进度条&#xff0c;并且默认方法有四个&…

kitti数据集预处理

kitti数据集预处理 0.引言0.1.calib0.2.oxts(gps/imu)0.3.velodyne0.4.image_2/30.5.kitti-step/panoptics0.6.label 1.create_kitti_depth_maps2.create_kitti_masks3.create_kitti_metadata4.extract_dino_features5.run_pca 0.引言 官网参考链接1参考链接2 注&#xff1a;…

Linux基础指令(1)

Linux的基础指令 对于Linux的学习&#xff0c;先从指令开始学&#xff0c;我们先了解操作系统的一般性概念&#xff0c;然后对于Linux的一些基本的指令进行学习&#xff0c;最后我们发现Linux实际上是一个多叉树的目录结构 文章目录 Linux的基础指令操作系统操作系统是什么&am…