分布式可视化DAG工作流任务调度系统DolphinScheduler-1.3.3安装部署

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 ugo+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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342