美文网首页公众号:阿区先生
011.分布式可视化DAG工作流任务调度系统DolphinSch

011.分布式可视化DAG工作流任务调度系统DolphinSch

作者: CoderJed | 来源:发表于2020-12-01 22:30 被阅读0次

    1. 准备工作

    1.1 软件准备

    源码下载地址:https://mirrors.tuna.tsinghua.edu.cn/apache/incubator/dolphinscheduler/
    我这里选择1.3.3版本的apache-dolphinscheduler-incubating-1.3.3-src.zip

    1.2 基础软件依赖分析

    组件 版本 备注
    PostgreSQL(8.2.15+)或者MySQL(5.6/5.7) PostgreSQL(8.2.15+)、MySQL(5.6/5.7) 集群已安装MySQL5.7
    JDK 1.8+ 集群已安装JDK1.8
    Zookeeper 3.4.6+ 集群已安装HDP3.1.4.0,Zookeeper版本为3.4.6,满足要求
    Hadoop客户端 2.6+ 集群已安装HDP3.1.4.0,Hadoop版本为3.1.1,不满足要求
    Hive客户端 2.1+ 集群已安装HDP3.1.4.0,Hive版本为3.1.0,不满足要求
    Spark客户端 1.x/2.x 集群已安装HDP3.1.4.0,Spark版本为2.3.2,满足要求

    关于Ambari-2.7.4.0+HDP-3.1.4.0大数据平台的安装部署参考:基于CentOS7.8安装Ambari2.7+HDP3.1大数据平台

    注意:DolphinScheduler本身不依赖Hadoop、Hive、Spark,仅是会调用他们的Client,用于对应任务的提交

    1.3 集群规划

    hdp01 hdp02 hdp03 hdp04
    Master
    Worker/LogServer
    AlertServer
    ApiServer

    1.4 基础设置

    准备一个普通用户,我这个是admin用户,此用户具有sudo权限,且在集群之间使用此用户可以互相免秘钥登录。

    2. DolphinScheduler源码编译

    # 1. 解压源码包
    [admin@bdc01 ~]$ unzip apache-dolphinscheduler-incubating-1.3.3-src.zip
    [admin@bdc01 ~]$ cd apache-dolphinscheduler-incubating-1.3.3-src-release
    
    # 2.修改顶层pom.xml,未列出的保持默认即可
    <project xmlns="..." >
        <groupId>org.apache.dolphinscheduler</groupId>
        <artifactId>dolphinscheduler</artifactId>
        <!-- 定制化DolphinScheduler版本 -->
        <version>1.3.3-hdp3.1.4.0</version>
        <packaging>pom</packaging>
        
        <properties>
            <!-- 修改为hdp3.1的hadoop和hive的版本 -->
            <hadoop.version>3.1.1</hadoop.version>
            <hive.jdbc.version>3.1.0</hive.jdbc.version>
            ...
        </properties>
        
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.connector.version}</version>
                    # 把scope这一行删掉
                    # <scope>test</scope>
                </dependency>
                ...
            </dependencies>
        </dependencyManagement>
        
        <build>
            <pluginManagement>
                <plugins>
                    <plugin>
                        <groupId>org.apache.maven.plugins</groupId>
                        <artifactId>maven-javadoc-plugin</artifactId>
                        <version>${maven-javadoc-plugin.version}</version>
                        <configuration>
                            <source>8</source>
                            <failOnError>false</failOnError>
                            <!-- 添加这一行 -->
                            <additionalparam>-Xdoclint:none</additionalparam>
                        </configuration>
                    </plugin>
                    ...
                </plugins>
            </pluginManagement>
        </build>
        ...
    </project> 
    
    # 3.修改其他所有pom.xml文件,修改version
    # 包括:
    # dolphinscheduler-alert/pom.xml
    # dolphinscheduler-api/pom.xml
    # dolphinscheduler-common/pom.xml
    # dolphinscheduler-dao/pom.xml
    # dolphinscheduler-dist/pom.xml
    # dolphinscheduler-plugin-api/pom.xml
    # dolphinscheduler-remote/pom.xml
    # dolphinscheduler-server/pom.xml
    # dolphinscheduler-service/pom.xml
    # dolphinscheduler-ui/pom.xml
    
    <parent>
        <groupId>org.apache.dolphinscheduler</groupId>
        <artifactId>dolphinscheduler</artifactId>
        <version>1.3.3-hdp3.1.4.0</version>
    </parent>
    
    # 4.编译源码
    [admin@bdc01 apache-dolphinscheduler-incubating-1.3.3-src-release]$ mvn -U -X clean package -Prelease -Dmaven.test.skip=true
    
    # 5.获取安装包
    # dolphinscheduler-dist/target目录下
    apache-dolphinscheduler-incubating-1.3.3-hdp3.1.4.0-dolphinscheduler-bin.tar.gz
    

    3. DolphinScheduler安装部署

    3.1 准备工作

    • SSH免秘钥登录

    我的机器是hdp01-hdp04,统一使用admin用户进行安装,admin用户具有sudo权限,且hdp01机器可以通过admin用户免秘钥登录到其他三台机器

    • 创建数据库
    mysql> set global validate_password_policy=0;
    mysql> set global validate_password_mixed_case_count=0;
    mysql> set global validate_password_number_count=3;
    mysql> set global validate_password_special_char_count=0;
    mysql> set global validate_password_length=3;
    mysql> CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
    mysql> CREATE USER 'ds'@'%' IDENTIFIED BY '123456';
    mysql> GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'ds'@'%' IDENTIFIED BY '123456';
    mysql> flush privileges;
    
    • 安装pip和kazoo

      kazoo是一个Python库,使得Python能够轻松、便捷的使用zookeeper

      [admin@hdp01 apps]$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
      [admin@hdp01 apps]$ sudo python get-pip.py
      ......
      Successfully installed pip-20.3 setuptools-44.1.1 wheel-0.35.1
      [admin@hdp01 apps]$ pip --version
      pip 20.3 from /usr/lib/python2.7/site-packages/pip (python 2.7)
      [admin@hdp01 apps]$ sudo pip install kazoo
      ......
      Successfully installed kazoo-2.8.0
      [admin@hdp01 apps]$ rm -rf get-pip.py
      
    • 将apache-dolphinscheduler-incubating-1.3.3-hdp3.1.4.0-dolphinscheduler-bin.tar.gz上传到hdp01服务器

      [admin@hdp01 ~]$ tar -zxvf apache-dolphinscheduler-incubating-1.3.3-hdp3.1.4.0-dolphinscheduler-bin.tar.gz
      [admin@hdp01 ~]$ rm -f apache-dolphinscheduler-incubating-1.3.3-hdp3.1.4.0-dolphinscheduler-bin.tar.gz
      [admin@hdp01 ~]$ mv apache-dolphinscheduler-incubating-1.3.3-hdp3.1.4.0-dolphinscheduler-bin dolphinscheduler-1.3.3
      [admin@hdp01 ~]$ sudo chown -R admin:admin dolphinscheduler
      [admin@hdp01 ~]$ ll
      drwxr-xr-x 9 admin admin 156 2020-11-30 22:04 dolphinscheduler-1.3.3
      [admin@hdp01 ~]$ cd dolphinscheduler-1.3.3
      # 脚本文件默认没有执行权限,需要手动添加
      [admin@hdp01 dolphinscheduler-1.3.3]$ chmod u+x bin/*
      [admin@hdp01 dolphinscheduler-1.3.3]$ chmod u+x script/*
      [admin@hdp01 dolphinscheduler-1.3.3]$ chmod u+x install.sh
      

    3.2 后端安装部署

    ######################### 1.修改conf/datasource.properties ######################### 
    # 注释掉postgresql相关
    # postgresql
    #spring.datasource.driver-class-name=org.postgresql.Driver
    #spring.datasource.url=jdbc:postgresql://localhost:5432/dolphinscheduler
    #spring.datasource.username=test
    #spring.datasource.password=test
    # 修改为MySQL数据源
    spring.datasource.driver-class-name=com.mysql.jdbc.Driver
    # 需要修改ip,本机localhost即可spring.datasource.url=jdbc:mysql://hdp01:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
    spring.datasource.username=ds
    spring.datasource.password=123456
    
    ######################### 2.初始化数据库 ######################### 
    [admin@hdp01 dolphinscheduler-1.3.3]$ sh script/create-dolphinscheduler.sh
    ......
    22:48:56.305 [main] INFO org.apache.dolphinscheduler.dao.upgrade.shell.CreateDolphinScheduler - create DolphinScheduler success
    
    ######################### 3.修改conf/env/dolphinscheduler_env.sh #########################
    export HADOOP_HOME=/usr/hdp/current/hadoop-client
    export HADOOP_CONF_DIR=/etc/hadoop/conf
    #export SPARK_HOME1=/opt/soft/spark1
    export SPARK_HOME2=/usr/hdp/current/spark2-client
    export PYTHON_HOME=/usr/bin/python
    export JAVA_HOME=/usr/java/jdk
    export HIVE_HOME=/usr/hdp/current/hive-client
    # 这两个组价没有安装先注释掉
    #export FLINK_HOME=/opt/soft/flink
    #export DATAX_HOME=/opt/soft/datax/bin/datax.py
    #export PATH=$HADOOP_HOME/bin:$SPARK_HOME1/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH:$FLINK_HOME/bin:$DATAX_HOME:$PATH
    export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$PYTHON_HOME:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH
    # 添加执行权限
    [admin@hdp01 dolphinscheduler-1.3.3]$ chmod u+x conf/env/dolphinscheduler_env.sh
    
    ######################### 4.修改conf/config/install_config.conf #########################
    # 这里填 mysql or postgresql
    dbtype="mysql"
    # 数据库连接地址
    dbhost="hdp01:3306"
    # 数据库用户名
    username="ds"
    # 数据库名
    dbname="dolphinscheduler"
    # 数据库密码, 如果有特殊字符,请使用\转义
    password="123456"
    # Zookeeper地址
    zkQuorum="hdp02:2181,hdp03:2181,hdp04:2181"
    # 将DS安装到哪个目录,如: /opt/apps/dolphinscheduler,不同于现在的目录
    installPath="/opt/apps/dolphinscheduler-1.3.3"
    # 使用哪个用户部署
    deployUser="admin"
    # 邮件配置,以qq邮箱为例
    # 邮件服务地址
    mailServerHost="smtp.exmail.qq.com"
    # 邮件服务端口
    mailServerPort="25"
    # mailSender和mailUser配置成一样即可
    # 发送者
    mailSender="xxxxxx"
    # 发送用户
    mailUser="xxxxxxxxxx"
    # 邮箱密码
    mailPassword="xxxxxxxxxx"
    # TLS协议的邮箱设置为true,否则设置为false
    starttlsEnable="true"
    # 开启SSL协议的邮箱配置为true,否则为false。注意: starttlsEnable和sslEnable不能同时为true
    sslEnable="false"
    # 邮件服务地址值,参考上面 mailServerHost
    sslTrust="smtp.exmail.qq.com"
    # 业务用到的比如sql等资源文件上传到哪里,可以设置:HDFS,S3,NONE
    # 单机如果想使用本地文件系统,请配置为HDFS,因为HDFS支持本地文件系统;
    # 如果不需要资源上传功能请选择NONE。强调一点:使用本地文件系统不需要部署hadoop
    resourceStorageType="HDFS"
    # 如果上传资源保存想保存在hadoop上,hadoop集群的NameNode启用了HA的话
    # 需要将hadoop的配置文件core-site.xml和hdfs-site.xml放到安装路径的conf目录下
    # 本例即是放到/opt/apps/dolphinscheduler-1.3.3/conf下面,并配置namenode cluster名称
    # 如果NameNode不是HA,则只需要将mycluster修改为具体的ip或者主机名即可
    defaultFS="hdfs://hdp01:8020"
    s3Endpoint="http://192.168.xx.xx:9010"
    s3AccessKey="xxxxxxxxxx"
    s3SecretKey="xxxxxxxxxx"
    # 如果没有使用到Yarn,保持以下默认值即可;
    # 如果ResourceManager是HA,则配置为ResourceManager节点的主备ip或者hostname,比如"192.168.xx.xx,192.168.xx.xx";
    # 如果是单ResourceManager请配置yarnHaIps=""即可
    yarnHaIps=""
    # 如果ResourceManager是HA或者没有使用到Yarn保持默认值即可;
    # 如果是单ResourceManager,请配置真实的ResourceManager主机名或者ip
    singleYarnIp="hdp01"
    # 资源上传根路径,主持HDFS和S3,由于hdfs支持本地文件系统,需要确保本地文件夹存在且有读写权限
    resourceUploadPath="/dolphinscheduler"
    # 具备权限创建resourceUploadPath的用户
    hdfsRootUser="hdfs"
    kerberosStartUp="false"
    krb5ConfPath="$installPath/conf/krb5.conf"
    keytabUserName="hdfs-mycluster@ESZ.COM"
    keytabPath="$installPath/conf/hdfs.headless.keytab"
    apiServerPort="12345"
    # 在哪些机器上部署DS服务,本机选localhost
    ips="hdp01,hdp02,hdp03,hdp04"
    # ssh端口,默认22
    sshPort="22"
    # master服务部署在哪台机器上
    masters="hdp01,hdp02"
    # worker服务部署在哪台机器上,并指定此worker属于哪一个worker组,下面示例的default即为组名
    workers="hdp01:default,hdp02:default,hdp03:default,hdp04:default"
    # 报警服务部署在哪台机器上
    alertServer="hdp03"
    # 后端api服务部署在在哪台机器上
    apiServers="hdp04"
    
    ######################### 5.修改conf/master.properties,未列出的保持默认即可 #########################
    # 剩余内存不足此值(单位G)后,DS将不能执行任务,默认为物理内存的十分之一
    master.reserved.memory=1
    # CPU负载最大值,当达到此值后,DS将不能执行任务,默认为cpu核数*2,因为我的核数为2,所以我调到了这个值
    master.max.cpuload.avg=10
    
    ######################### 6.修改conf/worker.properties,未列出的保持默认即可 #########################
    worker.reserved.memory=1
    worker.max.cpuload.avg=10
    
    ######################### 7.将core-site.xml和hdfs-site.xml文件拷贝到DS安装conf目录下 #########################
    [admin@hdp01 dolphinscheduler-1.3.3]$ cp /etc/hadoop/conf/core-site.xml /etc/hadoop/conf/hdfs-site.xml conf/
    
    ######################### 8.修改bin/dolphinscheduler-daemon.sh和script/dolphinscheduler-daemon.sh #########################
    # 两个文件保持一致
    # 适当调整master-server的堆内存
    elif [ "$command" = "master-server" ]; then
      HEAP_INITIAL_SIZE=1g # 默认4g
      HEAP_MAX_SIZE=2g # 默认4g
      HEAP_NEW_GENERATION__SIZE=1g # 默认2g
      LOG_FILE="-Dlogging.config=classpath:logback-master.xml -Ddruid.mysql.usePingMethod=false"
      CLASS=org.apache.dolphinscheduler.server.master.MasterServer
      
    ######################### 9.一键安装部署 #########################
    [admin@hdp01 dolphinscheduler-1.3.3]$ sh install.sh
    
    ######################### 10.检查进程 #########################
    # 各节点的进程与我规划的一致
    [admin@hdp01 ~]$ jps
    86181 WorkerServer
    86228 LoggerServer
    86125 MasterServer
    [admin@hdp02 ~]$ jps
    56663 MasterServer
    56855 LoggerServer
    56793 WorkerServer
    [admin@hdp03 ~]$ jps
    42624 WorkerServer
    42739 AlertServer
    42676 LoggerServer
    [admin@hdp04 ~]$ jps
    42932 WorkerServer
    42987 LoggerServer
    43067 ApiApplicationServer
    

    访问ApiServer的12345端口:http://hdp04:12345/dolphinscheduler

    账号密码默认为:admin/dolphinscheduler123

    至此,DolphinScheduler就部署好了!

    3.3 DolphinScheduler启停命令

    注意,以下的bin目录是DolphinScheduler的安装目录下的bin目录,即上面安装的时候配置的installPath="/opt/apps/dolphinscheduler-1.3.3"这个目录下

    • 一键停止集群所有服务
    bin/stop-all.sh
    
    • 一键开启集群所有服务
    bin/start-all.sh
    
    • 启停Master
    bin/dolphinscheduler-daemon.sh start master-server
    bin/dolphinscheduler-daemon.sh stop master-server
    
    • 启停Worker
    bin/dolphinscheduler-daemon.sh start worker-server
    bin/dolphinscheduler-daemon.sh stop worker-server
    
    • 启停Api
    bin/dolphinscheduler-daemon.sh start api-server
    bin/dolphinscheduler-daemon.sh stop api-server
    
    • 启停Logger
    bin/dolphinscheduler-daemon.sh start logger-server
    bin/dolphinscheduler-daemon.sh stop logger-server
    
    • 启停Alert
    bin/dolphinscheduler-daemon.sh start alert-server
    bin/dolphinscheduler-daemon.sh stop alert-server
    

    相关文章

      网友评论

        本文标题:011.分布式可视化DAG工作流任务调度系统DolphinSch

        本文链接:https://www.haomeiwen.com/subject/vjyewktx.html