dolphinscheduler叢集搭建1.3.2版本【步驟詳細,且有說明,配備安裝包下載連線及配套軟體安裝連結】

Smile to everyday發表於2020-12-18

dolphinscheculer叢集搭建前期鋪墊

dolphinscheduler簡單介紹

Apache DolphinScheduler是一個分散式去中心化,易擴充套件的視覺化DAG工作流任務排程系統。致力於解決資料處理流程中錯綜複雜的依賴關係,使排程系統在資料處理流程中開箱即用。

  • 高可靠性: 其中新華的多Master和多Worker,自身支援HA功能,採用任務佇列來避免過載,不會造成機器卡死。
  • 簡單易用: DAG監控介面,所有流程定義都是視覺化,通過拖拽任務定製DAG,通過API方式與第三方系統對接,一鍵部署
  • 豐富的使用場景: 支援暫停恢復操作,支援多租戶,更好的應用大資料的使用場景,支援更多的任務型別,對1.3.2版本的有 spark、hive、mr、python、sub_process,shell、以及ETL工具sqoop、dataX。
  • 高擴充套件性: 支援自定義任務型別,排程器使用分散式排程,排程能力隨叢集線性增長,Master和Worker支援動態上下線。

結合官網檢視搭建文件

官網叢集部署連線

基礎軟體安裝要求

  • PostgreSQL (8.2.15+) or MySQL (5.6或者5.7系列) : 兩者任選其一即可
  • JDK (1.8+) : 必裝,請安裝好後在/etc/profile下配置 JAVA_HOME 及 PATH 變數
  • ZooKeeper (3.4.6+) :必裝
  • Hadoop (2.6+) or MinIO :選裝,如果需要用到資源上傳功能,可以選擇上傳到Hadoop or MinIO上

注意: DolphinScheduler本身不依賴Hadoop、Hive、Spark,僅是會呼叫他們的Client,用於對應任務的提交
這裡提供了小編搭建的軟體包,親測可用
dolphinscheduler相關軟體安裝包
提取碼:g7up

jdk安裝(這裡部落格有mysql安裝,請勿操作,版本不符合官網要求,我們儘量與官網一致)

jdk安裝,解壓配置環境即可

mysql5.6或5.7系列操作(任選其一即可,這裡小編選的是5.7)

mysql5.6,這裡是hive的安裝,但是裝hive前是mysql5.6安裝,按步驟弄好即可
mysql5.7,這裡部落格不是小編自己的,如後期找不到,可以找小編要相應文件,評論區聯絡

hadoop安裝(這裡安裝的hadoop高可用)

zookeeper 安裝

zookeeper安裝,配有時間同步,如有需要可以參考

正式安裝dolphinscheduler叢集(以三臺機器為例)

注意 因為dolphinscheduler軟體安裝包有點特殊,他的tar.gz包解壓了之後仍然是一個安裝包,這點需要注意。

上傳安裝包,解壓出安裝包放入相應位置(每臺機器都要上傳,下面的操作三臺也都要操作)

  • 建立一個資料夾專門放置各種軟體tar包等mkdir install,下載好的安裝包一開始就放在這裡面在這裡插入圖片描述
  • 建立一個放置dolphinscheduler解壓後的安裝包資料夾mkdir -p /lyqds/software
  • 建立一個dolphinscheduler軟體安裝位置mkdir -p /lyqds/app
  • 解壓安裝包放到/lyqds/software資料夾中
    cd install
    tar -xzvf apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin.tar.gz -C /lyqds/software/
  • 進入/lyqds/software資料夾中,建立軟連線,也可以直接使用mv命令改名字,一般來說開發環境使用軟連線
    cd /lyqds/software
    ln -s apache-dolphinscheduler-incubating-1.3.2-dolphinscheduler-bin dolphinscheduler-bin
    在這裡插入圖片描述

建立部署使用者和hosts對映(每臺都要操作)

  • 設定使用者名稱,請自行修改,後面以dolphinscheduler為例 useradd dolphinscheduler;
  • 設定使用者密碼,請自行修改,後面以dolphinscheduler123為例 echo "dolphinscheduler123" | passwd --stdin dolphinscheduler
  • 配置sudo免密
    echo 'dolphinscheduler 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檔案中有"Default requiretty"這行,也請註釋掉
 - 如果用到資源上傳的話,還需要在`HDFS或者MinIO`上給該部署使用者分配讀寫的許可權

配置hosts對映和ssh打通及修改目錄許可權vi /etc/hosts(每臺都要操作)

最後一行新增如下內容,一般來說hadoop高可用的時候就已經做過相應操作,這時只需要看看檢查下即可

192.168.xxx.xxx 相應主機名
192.168.xxx.xxx 相應主機名
192.168.xxx.xxx 相應主機名
192.168.xxx.xxx 相應主機名

對建立的dolphinscheduler使用者三臺機器進行免密登入(注意這裡沒有跟官網採用同樣的方法,看你們自己喜好)(每臺機器都要操作)

  • 生成私鑰: ssh-keygen -t rsa -P "" ,輸入命令後直接回車,再按回車。
  • 輸入: cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys將金鑰變成公鑰
  • 遠端免登入配置: ssh-copy-id -i .ssh/id_rsa.pub -p22 dolphinscheduler@192.168.56.121(有n個機器,每臺機器就要配n-1次)
  • 驗證免登入: ssh dolphinscheduler@192.168.xxx.xxx 或 ssh dolphinscheduler@需要登入的主機名,無需密碼驗證即當前機器對121機器免登入配置成功(有多少臺機器都要驗證)
  • 修改目錄許可權sudo chown -R dolphinscheduler:dolphinscheduler /lyqds
  • 檢視修改目錄許可權結果ll /lyqds
    在這裡插入圖片描述

資料庫初始化(這裡只需要對首臺機器操作即可)

  • mysql-connector-java驅動包到DolphinScheduler的lib目錄(這個小編三臺都上傳了,一臺也是可以的,選用jar包為mysql-connector-java-5.1.48-bin.jar)
    jar包獲取連線
    提取碼:10zq
  • 進入dolphinscheduler資料夾上傳jar包cd /lyqds/software/dolphinscheduler-bin/lib/,拖入jar包即可
  • 建立db和使用者和賦予許可權,進入mysql
    設定資料使用者 dolphinscheduler 的訪問密碼為 dolphinscheduler,並且不對訪問的 ip 做限制
    測試環境將訪問設定為所有,如果是生產,可以限制只能子網段的ip才能訪問(‘192.168.1.%’)
CREATE DATABASE dolphinscheduler DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'%' IDENTIFIED BY 'dolphinscheduler';
GRANT ALL PRIVILEGES ON dolphinscheduler.* TO 'dolphinscheduler'@'localhost' IDENTIFIED BY 'dolphinscheduler';
flush privileges;

建立表和匯入基礎資料(首臺機器操作就可,執行只需要首臺機器上執行)

  • 修改datasource.properties中的下列屬性
# 進入dolphinscheduler的conf資料夾
cd /lyqds/software/dolphinscheduler-bin/conf
# 開啟datasource.properties檔案
vi datasource.properties

#修改原本的pgsql配置
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.url=jdbc:mysql://xxx:3306/dolphinscheduler?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true
spring.datasource.username=dolphinscheduler
spring.datasource.password=dolphinscheduler
  • 執行 script 目錄下的建立表及匯入基礎資料指令碼
    sh script/create-dolphinscheduler.sh

修改執行引數(首臺機器操作即可)

  • 進入dolphinscheduler下的conf/env目錄下cd /lyqds/software/dolphinscheduler-bin/conf/env/
  • 開啟dolphinscheduler_env.sh檔案vi dolphinscheduler_env.sh 新增如下內容
export HADOOP_HOME=/opt/software/hadoop
export HADOOP_CONF_DIR=/opt/software/hadoop/etc/hadoop
export SPARK_HOME2=/opt/software/spark220
export JAVA_HOME=/opt/software/jdk1.8.0_221
export HIVE_HOME=/opt/software/hive110

export PATH=$HADOOP_HOME/bin:$SPARK_HOME2/bin:$JAVA_HOME/bin:$HIVE_HOME/bin:$PATH

修改一鍵部署配置檔案(首臺機器修改就可以)

  • 進入配置檔案資料夾/lyqds/software/dolphinscheduler-bin/conf/config
  • 修改配置檔案
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#


# NOTICE :  If the following config has special characters in the variable `.*[]^${}\+?|()@#&`, Please escape, for example, `[` escape to `\[`
# postgresql or mysql
#這裡填dolphinscheduler後設資料儲存資料庫型別
dbtype="mysql"

# db config
# db address and port
# 資料庫連線地址
dbhost="lyqds01:3306"

# db username
# 資料庫使用者名稱
username="dolphinscheduler"

# database name
# 資料庫名
dbname="dolphinscheduler"

# db passwprd
#資料庫密碼,如果有特殊字元,請使用\轉義,需要修改為上面設定的{passowrd}具體值
# NOTICE: if there are special characters, please use the \ to escape, for example, `[` escape to `\[`
password="dolphinscheduler"

# zk cluster
# Zookeeper地址,單機本機是localhost:2181,記得把2181埠帶上
zkQuorum="lyqds01:2181,lyqds02:2181,lyqds03:2181"

# Note: the target installation path for dolphinscheduler, please not config as the same as the current path (pwd)
#將DS安裝到哪個目錄
installPath="/lyqds/app/dolphinscheduler"

# deployment user
# Note: the deployment user needs to have sudo privileges and permissions to operate hdfs. If hdfs is enabled, the root directory needs to be created by itself
# 使用哪個使用者部署,使用之前建立的使用者
deployUser="dolphinscheduler"


# alert config
# mail server host
# 郵件配置,以qq郵箱為例
# 郵件協議 如果是企業qq郵箱則不用改動,如果是個人qq郵箱則按下面的方式填寫
mailServerHost="smtp.qq.com"

# mail server port
# note: Different protocols and encryption methods correspond to different ports, when SSL/TLS is enabled, make sure the port is correct.
# 郵件服務埠 如果是阿里雲伺服器則需要改成587,若是自己的則使用25即可
mailServerPort="25"

# 傳送者
# sender
mailSender="1469128493@qq.com"

# user
# 傳送使用者
mailUser="1469128493@qq.com"

# sender password
# 郵箱密碼,這裡是開啟協議後服務商提供的密碼
# note: The mail.passwd is email service authorization code, not the email login password.
mailPassword="郵箱授權碼如何生成,後面會有說明,看完後面說明將雙引號內容改掉即可"

# TLS mail protocol support
# TLS協議的郵箱設定為true,否則設定為false。  這裡設定為true
starttlsEnable="true"

# SSL mail protocol support
# only one of TLS and SSL can be in the true state.
# 開啟SSL協議的郵箱配置為true,否則為false。注意: starttlsEnable和sslEnable不能同時為true
sslEnable="false"

#note: sslTrust is the same as mailServerHost
# 郵件服務地址值,參考上面 mailServerHost
sslTrust="smtp.qq.com"


# resource storage type:HDFS,S3,NONE
#業務用到的比如sql等資原始檔上傳到哪裡,可以設定:HDFS,S3,NONE,單機如果想使用本地檔案系統,請配置為HDFS,因為HDFS支援本地檔案系統;如果不需要資源上傳功能請選擇NONE。強調一點:使用本地檔案系統不需要部署hadoop
resourceStorageType="HDFS"

# if resourceStorageType is HDFS,defaultFS write namenode address,HA you need to put core-site.xml and hdfs-site.xml in the conf directory.
# if S3,write S3 address,HA,for example :s3a://dolphinscheduler,
# Note,s3 be sure to create the root directory /dolphinscheduler
# 這裡以儲存到HDFS為例
#注:但是如果你想上傳到HDFS的話,NameNode啟用了HA,則需要將hadoop的配置檔案core-site.xml和hdfs-site.xml放到conf目錄下,並配置namenode cluster名稱;如果NameNode不是HA,則修改為具體的ip或者主機名即可
#     本地檔案系統:"file:///data/dolphinscheduler"   或    HDFS叢集: hdfs://{具體的ip/主機名}:8020
defaultFS="hdfs://mycluster"

# if resourceStorageType is S3, the following three configuration is required, otherwise please ignore
s3Endpoint="http://192.168.xx.xx:9010"
s3AccessKey="xxxxxxxxxx"
s3SecretKey="xxxxxxxxxx"

# if resourcemanager HA enable, please type the HA ips ; if resourcemanager is single, make this value empty
# 如果yarn配置的是高可用則填寫yarn所有節點,如果不是則將其註釋掉,用下面單點模式,因為我搭的是yarn高可用所以用這個
yarnHaIps="lyqds01,lyqds02"

# if resourcemanager HA enable or not use resourcemanager, please skip this value setting; If resourcemanager is single, you only need to replace yarnIp1 to actual resourcemanager hostname.
# 正因如此所以yarn單點模式我就需要註釋掉
#singleYarnIp="yarnIp1"

# resource store on HDFS/S3 path, resource file will store to this hadoop hdfs path, self configuration, please make sure the directory exists on hdfs and have read write permissions。/dolphinscheduler is recommended
resourceUploadPath="/dolphinscheduler"

# who have permissions to create directory under HDFS/S3 root path
# Note: if kerberos is enabled, please config hdfsRootUser=
# 具備許可權建立resourceUploadPath的使用者,這裡用的是Hadoop搭建的使用者,我是用的是root使用者搭建的。也有人會建立hdfs使用者進行搭建。
hdfsRootUser="root"

# kerberos config
# whether kerberos starts, if kerberos starts, following four items need to config, otherwise please ignore
kerberosStartUp="false"
# kdc krb5 config file path
krb5ConfPath="$installPath/conf/krb5.conf"
# keytab username
keytabUserName="hdfs-mycluster@ESZ.COM"
# username keytab path
keytabPath="$installPath/conf/hdfs.headless.keytab"


# api server port
apiServerPort="12345"


# install hosts
# Note: install the scheduled hostname list. If it is pseudo-distributed, just write a pseudo-distributed hostname
# 在哪些機器上部署DS服務,本機選localhost(如下配置為單機配置,需要叢集配置,直接參考預設值即可)
ips="lyqds01,lyqds02,lyqds03"

# ssh port, default 22
# Note: if ssh port is not default, modify here
#ssh埠,預設22
sshPort="22"

# run master machine
# Note: list of hosts hostname for deploying master
# master服務部署在哪臺機器上
masters="lyqds01,lyqds02"

# run worker machine
# note: need to write the worker group name of each worker, the default value is "default"
# worker服務部署在哪臺機器上
workers="lyqds01:default,lyqds02:default,lyqds03:default"

# run alert machine
# note: list of machine hostnames for deploying alert server
#報警服務部署在哪臺機器上
alertServer="lyqds01"

# run api machine
# note: list of machine hostnames for deploying api server
# 後端api服務部署在在哪臺機器上
apiServers="lyqds01,lyqds02"
  • xml檔案不要忘記,將hadoop中的hdfs-site.xml和core-site.xml檔案軟連線或者拷貝到dolphinscheduler的conf目錄下。

一鍵部署

  • 進入指令碼目錄cd /lyqds/software/dolphinscheduler-bin
  • 執行指令碼sh install.sh

登入系統

  • 訪問前端頁面地址,介面ip(自行修改) http://192.168.xx.xx:12345/dolphinscheduler

  • 賬號:admin

  • 密碼:dolphinscheduler123

相關文章