DolphinScheduler安装与使用

因业务发展需要,现有数据平台要承担的任务越来越多,迫切需要上线一个易用的调度系统,考虑到要将现有的定时任务从crontab快速迁移到新调度系统,且要易于部署管理,方便扩展,支持HA等要求,近期调研了多款调度系统如airflow以及azkaban,最后发现了一款国产开源的调度系统非常适合我们的需求(最重要还有天生支持中文,不用花时间调神马时区问题,汉化问题,字符编码问题等等一堆糟心问题,哈哈),DolphinScheduler的前身是EasyScheduler,
安装包下载地址:https://dolphinscheduler.apache.org/en-us/docs/user_doc/download.html

1.部署后端
  • 1.1后端安装,支持自动安装,源码编译安装,这里使用自动安装

    • 准备,创建新用户big-data,修改用户权限,赋予sudo权限

       $ chmod 640 /etc/sudoers && vim /etc/sudoers 
       #在root    ALL=(ALL)       ALL行下添加:
       big-data  ALL=(ALL)       NOPASSWD: NOPASSWD: ALL
      
    • 给big-data配置ssh免密(从node1开始,每个节点执行)

      node1: ssh-keygen -t rsa
      登录各节点执行ssh-keygen -t rsa 一路回车到结束,在~/.ssh/下面会生成一个公钥文件id_rsa.pub
      cat  ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 将公钥追加到authorized_keys
      $ chmod 600  ~/.ssh/authorized_keys 修改权限
      将 ~/.ssh/authorized_keys从当前节点分发到其他各个节点。如:
      scp  ~/.ssh/authorized_keys big-data@hdfs1:~/.ssh/
      
    • 创建元数据库:

      CREATE DATABASE escheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
      GRANT ALL PRIVILEGES ON escheduler.* TO 'escheduler'@'%' IDENTIFIED BY 'escheduler';
      flush privileges;
      
    • 创建安装目录:

       $ sudo mkdir /opt/dolphinScheduler  
       #修改部署目录权限
       $ chown big-data:big-data  /opt/dolphinScheduler
       $ cd /opt/dolphinScheduler
      
    • 上传安装包:
      在这里插入图片描述 mkdir escheduler #存放后端包解压文件
      mkdir front #存放前端包解压文件
      在这里插入图片描述
      在这里插入图片描述

    • 修改配置文件:vim /opt/dolphinScheduler/escheduler/conf/application-dao.properties,创建表和导入基础数据
      注释掉postgre配置,修改mysql配置:spring.datasource.url,username以及password
      在这里插入图片描述

    • 执行创建表和导入数据脚本:
      sh backend/script/create-dolphinscheduler.sh
      执行过程如遇到如下报错:
      Caused by: java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
      将mysql驱动拷贝到lib目录下即可:
      在这里插入图片描述

    • 修改运行参数
      vi conf/env/.dolphinscheduler_env.sh
      在这里插入图片描述

    • 修改 install.sh中的各参数,替换成自身业务所需的值

      # for example postgresql or mysql ...
      dbtype="mysql"
      # db address and port
      dbhost="slave199:3306"
      # db name
      dbname="escheduler"
      # db username
      username="escheduler"
      # db passwprd
      passowrd="escheduler"
      #各节点部署后端服务目录,和当前解压安装包目录不一样
      installPath="/opt/dolphinScheduler/backend"
      # 部署使用的user,需要有免密sudo权限以及ssh权限
      deployUser="big-data"
      # zk cluster
      zkQuorum="master197:2181,slave198:2181,slave199:2181"
      # 需要部署dolphinscheduler的节点
      ips="master197,slave198,slave199"
      #master节点,可配置多个
      masters="slave198"
      #worker节点
      workers="master197,slave198,slave199"
      #alert服务节点
      alertServer="slave198"
      #api服务节点
      apiServers="slave198"
      # alert config
      # mail protocol
      mailProtocol="SMTP"
      # mail server host
      mailServerHost="smtp.qq.com"
      # mail server port
      mailServerPort="587"
      # sender
      mailSender="xxx@qq.com"
      # user
      mailUser="xxx"
      # sender password
      mailPassword="passwd"
      # TLS
      mail.smtp.starttls.enable=true
      # SSL
      mail.smtp.ssl.enable=false
      mail.smtp.ssl.trust=smtp.qq.com
      # 资源中心上传选择存储方式:HDFS,S3,NONE
      resUploadStartupType="HDFS"
      # 如果resUploadStartupType为HDFS,defaultFS写namenode地址,支持HA,需要将core-site.xml和hdfs-site.xml放到conf目录下
      # 如果是S3,则写S3地址,比如说:s3a://escheduler,注意,一定要创建根目录/escheduler
      defaultFS="hdfs://slave198:8020"
      # resourcemanager HA configuration, if it is a single resourcemanager, here is yarnHaIps=""
      yarnHaIps="master197,slave199"
      #如果是单 resourcemanager,只需要配置一个主机名称,如果是resourcemanager HA,则默认配置就好
      singleYarnIp="master197"
      #部署scheduler用户的hdfs根路径
      hdfsPath="/big-data"
      #hdfs集群的root用户
      hdfsRootUser="hdfs"
      # common config
      # Program root path
      programPath="/tmp/dolphinscheduler"
      # download path
      downloadPath="/tmp/dolphinscheduler/download"
      # task execute path
      execPath="/tmp/dolphinscheduler/exec"
      # SHELL environmental variable path
      shellEnvPath="$installPath/conf/env/.dolphinscheduler_env.sh"
      # suffix of the resource file
      resSuffixs="txt,log,sh,conf,cfg,py,java,sql,hql,xml"
      
    • 将hadoop的配置文件hdfs-site.xml,以及core-site.xml拷贝到conf下:

      cp /etc/hadoop/conf/hdfs-site.xml conf/
      cp /etc/hadoop/conf/core-site.xml conf/
      
    • 执行一键安装部署脚本:
      sh install.sh

    • dolphinscheduler后端服务启停脚本:

       #启动
        /opt/dolphinScheduler/backend/script/start-all.sh
       #停止
       /opt/dolphinScheduler/backend/script/stop-all.sh
      
    • 服务成功后,会看到如下相关进程

      [big-data@slave198 logs]$ jps
      28817 WorkerServer
      28995 ApiApplicationServer
      28756 MasterServer
      28936 AlertServer
      28875 LoggerServer
      
  • 1.2报错解决
    /opt/dolphinScheduler/backend/logs/*.out日志文件中发现有如下错误:

    nohup: failed to run command ‘/bin/java’: No such file or directory

    将JAVA_HOME/bin下的java软连接到/bin下,(所有节点)
    ln -s $JAVA_HOME/bin/java /bin/java

2.部署前端
  • 2.1下载安装包并解压
      cd /opt/dolphinScheduler
      mkdir  front
      tar -zxvf apache-dolphinscheduler-incubating-1.2.0-dolphinscheduler-front-bin.tar.gz -C front
      ```
    
  • 2.2执行自动化安装部署脚本
    sudo sh ./install-dolphinscheduler-ui.sh
    在这里插入图片描述

使用自动化部署脚本会检查系统环境是否安装了Nginx,如果没有安装则会通过网络自动下载Nginx包安装,通过引导设置后的Nginx配置文件为 /etc/nginx/conf.d/dolphinscheduler.conf 。

  • 2.3报错解决
    安装nginx过程执行firewall-cmd报错:ModuleNotFoundError: No module named 'gi'
    vim /usr/bin/firewall-cmd 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2 -Es
    vim /usr/sbin/firewalld, 将#!/usr/bin/python -Es 改为 #!/usr/bin/python2 -Es 
    #然后重启nginx服务即可!
    systemctl restart  nginx
    #查看nginx服务状态
    systemctl status nginx
    #停止nginx服务
    systemctl stop nginx
    #如果遇到nginx服务启动失败:
    #nginx: [error] open() "/run/nginx.pid" failed (2: No such file or directory)
    #执行: 
    sudo nginx -c /etc/nginx/nginx.conf 
    nginx -s reload
    #如果报错: [emerg] bind() to 0.0.0.0:80 failed (98: Address already in use)
    #找到占用80端口的进程,然后kill掉即可!
    netstat -ntlp | grep 80
    kill pid
    
3.开始使用dolphinScheduler
  • 3.1访问:http://slave198:8888/
    使用dolphinscheduler的默认用户密码登录:admin/dolphinscheduler123
    在这里插入图片描述
  • 3.2创建一个队列:队列管理>>创建队列,输入名称和队列值,然后提交保存
    在这里插入图片描述
  • 3.3创建租户:租户管理>>创建租户,输入租户编码,名称,选择队列名称,然后提交(注意这里的租户可以是linux系统已经存在的用户)
    在这里插入图片描述
  • 3.4创建普通用户:用户管理>>创建用户,输入用户名称、密码、租户名和邮箱,手机号选填 然后提交
    在这里插入图片描述
  • 3.5创建告警组:告警组管理>>创建告警组,输入组名称,类型
    在这里插入图片描述
  • 3.6切换到test用户登录,然后创建一个项目:项目管理>>
    在这里插入图片描述
  • 3.7给项目创建工作流:点击新建项目进入项目首页,点击工作流定义>>创建工作流>>点击shell图标(选择项有:SHELL、SUB_PROCESS、PROCEDURE、SQL、SPARK、FLINK、MR、PYTHON、DEPENDENT、HTTP),拖拽到画布,新增一个Shell任务,输入节点名称、描述、脚本;选择运行标志,任务优先级 (级别高的任务在执行队列中会优先执行,相同优先级的任务按照先进先出的顺序执行),超时告警,选择超市策略(当任务执行时间超过超时时长可以告警并且超时失败),填写超时时长 ,然后点击确认添加
    在这里插入图片描述
  • 3.8保存dag:工作流定义完成后,点击保存,输入dag名称,描述,选择租户,最后添加
    在这里插入图片描述
  • 3.9执行工作流:刚保存的dag处于下线状态,可以编辑但不能执行,需要上线,才能执行,点击操作栏下的上线图标按钮上线,然后点击运行,需要设置运行参数,参数说明如下:
    失败策略:当某一个任务节点执行失败时,其他并行的任务节点需要执行的策略。”继续“表示:其他任务节点正常执行,”结束“表示:终止所有正在执行的任务,并终止整个流程。
    通知策略:当流程结束,根据流程状态发送流程执行信息通知邮件。
    流程优先级:流程运行的优先级,分五个等级:最高(HIGHEST),高(HIGH),中(MEDIUM),低(LOW),最低(LOWEST)。级别高的流程在执行队列中会优先执行,相同优先级的流程按照先进先出的顺序执行。
    worker分组: 这个流程只能在指定的机器组里执行。默认是Default,可以在任一worker上执行。
    通知组: 当流程结束,或者发生容错时,会发送流程信息邮件到通知组里所有成员。
    收件人:输入邮箱后按回车键保存。当流程结束、发生容错时,会发送告警邮件到收件人列表。
    抄送人:输入邮箱后按回车键保存。当流程结束、发生容错时,会抄送告警邮件到抄送人列表。
    
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 3.10查看执行结果:点击任务实例可以查看每个任务的列表信息,点击操作栏,查看日志信息。
    在这里插入图片描述
  • 3.11定时执行工作流:点击工作流定义,找到需要定时执行的任务,点击操作栏下定时图标按钮,选择起止时间,定时周期,失败策略,通知策略等,然后点创建,之后可以看到定时状态位下线,点击定时管理跳到定时管理页,点击上线,上线定时任务,定时任务的执行状态可以在操作栏下树形图中快速浏览到
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
4.使用worker分组执行任务
worker分组,提供了一种让任务在指定的worker上运行的机制。管理员创建worker分组,在任务节点和运行参数中设置中可以指定该任务运行的worker分组,如果指定的分组被删除或者没有指定分组,则该任务会在任一worker上运行。
worker分组内多个ip地址(不能写别名),以英文逗号分隔。
  • 4.1切换到admin用户登录,点击安全中心>>worker分组管理>>创建worker分组,输入组名称和ip,多个ip之间用英文,分割。提交后可通过操作栏下编辑按钮进行修改。
    在这里插入图片描述
    在这里插入图片描述
5.添加数据源
一般SQL脚本执行时会用到多种数据源,例如MySQL、PostgreSQL、Hive、Impala、Spark、ClickHouse、Oracle、SQL Server,
通过添加数据源在DolphinScheduler页面编写Job时直接选择,不用再指定驱动、连接、用户名和密码等信息,
可以快速创建一个SQL脚本的工作流Job,同时这个数据源时用户隔离的,每个用户添加的数据源相互独立(admin用户除外,管理员用户可以看到所有用户添加的数据源)
  • 5.1配置mysql数据源,点击数据源中心 >> 创建数据源,输入名称、主机名、端口、用户名密码、以及库名,然后点击测试连接,成功后点击提交即可.
    在这里插入图片描述
未完待续
DolphinScheduler是一个分布式、易扩展的可视化工作流任务调度系统。它主要用于解决数据处理流程中的任务编排问题,支持大数据和AI平台的场景。下面是一个简化版的DolphinScheduler安装、部署和使用流程: ### 安装步骤: 1. **下载安装包**:访问DolphinScheduler的官方GitHub页面或者官方网站下载最新版的安装包。 2. **安装依赖环境**:DolphinScheduler依赖于Java环境,建议安装JDK 1.8及以上版本,并确保JAVA_HOME环境变量设置正确。 3. **解压安装包**:使用命令行工具解压下载的安装包到指定目录。 4. **初始化数据库**:DolphinScheduler使用MySQL作为元数据库,需要在MySQL中创建所需的数据库和表。可以通过提供的SQL脚本文件来初始化数据库。 ### 部署步骤: 1. **配置文件设置**:编辑DolphinScheduler的配置文件,如修改数据库配置、服务器地址等。 2. **启动服务**:DolphinScheduler提供了统一的启动脚本来启动所有的服务组件。 3. **检查服务状态**:通过启动脚本中的日志检查各个服务组件是否正常启动。 ### 使用步骤: 1. **访问Web界面**:部署完成后,可以通过Web界面访问DolphinScheduler的调度中心。 2. **创建项目**:在Web界面中创建项目,用于管理任务流。 3. **设计任务流程**:通过Web界面的拖拽方式设计你的工作流,添加执行节点,并配置节点参数。 4. **提交任务**:配置好工作流后,提交任务执行,可以查看任务执行情况和日志。 5. **监控和维护**:监控任务执行状态,对失败的任务进行重试或维护。 ### 注意事项: - 在安装和部署之前,确保系统资源足够,如内存和磁盘空间。 - 根据实际部署环境,可能需要对配置文件进行相应调整。 - 确保MySQL服务正常运行,否则DolphinScheduler将无法正常工作。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值