
# DolphinScheduler部署
#### 前置条件说明
- Zookeeper需安装好
- JDK先配置好(1.8)
- gcc 需安装好(4.8.\*)
- 安装大数据组件客户端(HDFS\\YARN\\HIVE\\FLINK\\SPARK)
- 安装datax环境
#### 安装机器
前提
1. CDH中需要有两个Hadoop集群，每个集群下部署一套DS (CDH机器允许部署的情况)
2. 如果是POC，可以只用一套DS
3. CDH机器不允许部署的情况，参考https://deepexi.yuque.com/docs/share/cbb7e60f-7188-41ef-8a72-219f269c07aa?#，将部署机器加入CDH集群管理即可
#### 文件上传
解压dolphinscheduler.zip, 将dolphinscheduler_ui.zip、dolphinscheduler-backend.zip、nginx-1.16.1.tar.g上传至/data/daas/目录下并且解压
图1解压   
![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001908204469.png)
#### 配置dolphinscheduler用户并授权
```
# useradd dolphinscheduler
# echo &quot;dolphinscheduler&quot; | passwd --stdin dolphinscheduler
# sed -i '$adolphinscheduler  ALL=(ALL)  NOPASSWD: NOPASSWD: ALL' /etc/sudoers
# sed -i 's/Defaults    requirett/#Defaults    requirett/g' /etc/sudoers
# su dolphinscheduler
```
配置sudo免密
```
# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
# cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# chmod 600 ~/.ssh/authorized_keys
# exit
```
授权ds源目录
```
# chown -R dolphinscheduler:dolphinscheduler /data/daas/dolphinscheduler-backend
```
授权ds安装目录
```
# mkdir -p /data/daas/dolphinscheduler
# chown -R dolphinscheduler:dolphinscheduler /data/daas/dolphinscheduler
```
如果是ds是集群（多master 多worker）的话，需要配置机器间免密登录，需要执行以下步骤
在安装DS的机器执行以下命令
```
# su dolphinscheduler
```
获取公钥
```
# less ~/.ssh/id_rsa.pub
```
图2获取公钥   
![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001862124722.png)
将生成的公钥复制到另外安装机器的 \~/.ssh/authorized_keys文件。
```
# vim ~/.ssh/authorized_keys
```
粘贴并保存，其他机器操作类似
#### 配置hdfs用户
```
# su hdfs如果出现：This account is currently not available. 说明 hdfs 是不可用的；如果没有该用户，则需要创建 # useradd hdfs，再执行以下步骤
# vi /etc/passwd 找到hdfs用户，将/sbin /nologin改成/bin/bash
# su hdfs正常切到hdfs用户即可
# exit
# usermod -a -G dolphinscheduler hdfs 将hdfs用户加入dolphinscheduler组
```
#### 配置datax环境检测
各个机器配置datax环境，解压datax.tar.gz到指定目录，例如/opt/soft/datax，将datax配置到环境变量
```
# vim /etc/profile 加入 : export DATAX_HOME=/opt/soft/datax
# source /etc/profile
```
#### 建立JDK软连接
```
# sudo ln -s /data/daas/jdk1.8.0_251/bin/java /usr/bin/java
```
#### 创建数据库
创建数据库，通过工具执行/dolphinscheduler/sql文件夹中的sql文件(两份都需要执行)，这里以账号为root，密码为daas2020
图3创建数据库   
![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001908124181.png)
#### 修改配置
1. 找到 hdfs-site.xml 和 core-site.xml 文件，一般在 /etc/hadoop/conf 目录下，复制到/data/daas/dolphinscheduler-backend/conf目录下 # cp /etc/hadoop/conf/hdfs-site.xml /etc/hadoop/conf/core-site.xml /data/daas/dolphinscheduler-backend/conf
   
2. 修改运行参数,修改 \`conf/env\` 目录下的 \`.dolphinscheduler_env.sh\` 环境变量(以相关用到的软件都安装在/opt/soft下为例)
   ```
   [dolphinscheduler@tools]#  vi /data/daas/dolphinscheduler-backend/conf/env/.dolphinscheduler_env.sh
   export HADOOP_HOME=/opt/cloudera/parcels/CDH/lib/hadoop
   export HADOOP_CONF_DIR=/opt/cloudera/parcels/CDH/lib/hadoop/etc/hadoop
   export SPARK_HOME=/opt/cloudera/parcels/CDH/lib/spark
   export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
   export JAVA_HOME=/usr/java/jdk1.8.0_251-amd64
   export PYTHON_HOME=/usr/bin/python2.7
   export FLINK_HOME=/opt/flink
   export DATAX_HOME=/opt/soft/datax
   PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$FLINK_HOME/bin:$PATH
   ```
   
3. 修改一键部署脚本 install.sh中的各参数，特别注意以下参数的配置（这个配置很重要，如果设置不当，dolphinscheduler是启动不了的，输入后要多次检查）
   ```
   [root@tools]# vi /data/daas/dolphinscheduler-backend/install.sh
   dbtype=&quot;mysql&quot; 
   #数据库地址
   dbhost=&quot;10.57.4.14:3306&quot;
   #数据库名字
   dbname=&quot;dolphinscheduler&quot; 
   #数据库用户
   username=&quot;root&quot;
   #密码
   passowrd=&quot;daas2020&quot; 
   #改成上面已经授权了的路径
   installPath=&quot;/data/daas/dolphinscheduler&quot; 
   #安装用户,就是前面linux新建的用户
   deployUser=&quot;dolphinscheduler&quot; 
   #改成对应的zookeeper地址和端口，如果是集群部署，用逗号隔开
   zkQuorum=&quot;10.201.0.1112:2181,10.201.0.1113:2181&quot; 
   #部署ds的机器，用逗号隔开，所有worker机器都需要写上，如果只有一台机器则写一个ip
   ips=&quot;10.201.0.112,10.201.0.113&quot; 
   #master服务部署在哪台机器上，所有master机器都需要写上并且用逗号隔开
   masters=&quot;10.201.0.112&quot;
   #worker服务部署在哪台机器上，所有worker机器都需要写上并且用逗号隔开
   workers=&quot;10.201.0.112&quot;
   #报警服务部署在哪台机器上（一般在master）
   alertServer=&quot;10.201.0.112&quot;
   #后端api服务部署在在哪台机器上（只在一台机器部署就可以）
   apiServers=&quot;10.201.0.112&quot; 
   #邮件协议
   mailProtocol=&quot;SMTP&quot; 
   # mail server host
   # 邮件配置，以qq邮箱为例
   mailServerHost=&quot;smtp.exmail.qq.com&quot; 
   # mail server port
   #邮件端口
   mailServerPort=&quot;25&quot; 
   # sender
   #发送者
   mailSender=&quot;daas@deepexi.com&quot;  
   #发送用户
   mailUser=&quot;&quot;daas@deepexi.com&quot;  
   # sender password
   #邮箱密码
   mailPassword=&quot;daas2020&quot; 
    # TLS协议的邮箱设置为true，否则设置为false
   starttlsEnable=&quot;true&quot;
   # 邮件服务地址值，参考上面 mailServerHost
   sslTrust=&quot;smtp.mxhichina.com&quot; 
   # 开启SSL协议的邮箱配置为true，否则为false。注意: starttlsEnable和sslEnable不能同时为true
   sslEnable=&quot;false&quot; 
   # 这里必须改为HDFS
   resUploadStartupType=&quot;HDFS&quot; 
   #hdfs地址
   defaultFS=&quot;hdfs://10.201.0.112:8020&quot; 
   #yarn集群的所有ip，用逗号隔开，例如&quot;10.201.0.112,10.201.0.113&quot; ，如果不是集群，则不用填
   yarnHaIps= 
   #如果yarn是集群的则不用填，如果不是集群，则填ip，例如&quot;10.201.0.112&quot;
   singleYarnIp=
   #hdfs目录
   hdfsPath=&quot;/dolphinscheduler&quot; 
   # 注意，如果开启了 kerberos ，这个选项为空
   hdfsRootUser=&quot;hdfs&quot;
   ```
   
#### 执行脚本
```
# su dolphinscheduler 切换到dolphinscheduler用户，执行install.sh脚本，然后到各个机器上执行jps命令，查看服务是否启动成功
```
#### 前端UI部署（在线、离线二选一进行部署）
- **在线部署**
  进入dolphinscheduler-ui目录下执行，切换到root用户 sh ./install-dolphinscheduler-ui.sh，执行后，会在运行中请键入前端端口，默认端口是8888，或者键入其他端口，然后会让键入跟前端ui交互的api-server的ip，接着是让键入跟前端ui交互的api-server的port，接着是操作系统选择，最后等待部署完成
  
- **离线部署**
  1. 安装nginx前首先要确认系统中安装了gcc、pcre-devel、zlib-devel、openssl-devel
  
  2. 切换到root用户下，上传nginx-1.16.1.tar.gz到/data/daas
  
  3. # tar -zxvf nginx-1.16.1.tar.gz # cd nginx-1.16.1
     #./configure --without-http_rewrite_module --without-http_gzip_module --prefix=/usr/local/nginx /usr/local/nginx是nginx的安装目录
     # make \& make install
     # cd /usr/local/nginx/sbin
     # ./nginx
     
  
  4. 修改nginx.conf配置
     ```
     # cd /usr/local/nginx/conf
     # vim nginx.conf
     server {
     listen       8888; # 访问端口(自行修改)
     server_name  ip; # api服务的ip
     location / {
     root   /data/daas/dolphinscheduler_ui/dist; # 前端解压的dist目录地址(自行修改)
     index  index.html index.html;
     }
     client_max_body_size 50m;
     location /dolphinscheduler {
     proxy_pass http://ip:12345;# API服务的接口地址(自行修改)
     proxy_set_header Host $host;
     proxy_set_header X-Real-IP $remote_addr;
     proxy_set_header x_real_ipP $remote_addr;
     proxy_set_header remote_addr $remote_addr;
     proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
     proxy_http_version 1.1;
     proxy_connect_timeout 4s;
     proxy_read_timeout 30s;
     proxy_send_timeout 12s;
     proxy_set_header Upgrade $http_upgrade;
     proxy_set_header Connection &quot;upgrade&quot;;
     }
     }
     # cd /usr/local/nginx/sbin
     ```
     重启nginx
     ```
     # ./nginx -s reload
     ```
     
  
  5. 浏览器访问http://ip:8888，出现登录页面即可
   
#### 租户用户创建
1. 使用admin/dolphinscheduler123 登录，到租户管理中创建hdfs租户，编码一定要是hdfs
   图4图示1   
   ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001862284554.png) 
2. 创建用户，并退出admin账户，登录新创建的用户,再到资源中心上传文件，将flink-sql-submit.jar，hive-sync.sh上传上去即可。
   图5图示2   
   ![](https://support.huaweicloud.com/deepexidip-dma/zh-cn_image_0000001908204473.png) 
 
