【本文正在參與 “擁抱開源 — Apache DolphinScheduler 有獎征稿活動】
擁開源—DolphinScheduler 有獎征稿活動 -CSDN
1.安裝篇
安裝提醒,多看官網,官網寫的很詳細,多看幾遍官網,基本問題都能解決,畢竟國人開源的專案,整體官網還是很友好的,相關安裝檔案參考官網,
Apache DolphinScheduler官網
以下根據本人解決問題思路處理,可能根據實際有些差異,供大家參考,
公司使用CDH 6.3.2為平臺,DolphinScheduler 1.3.3 從2020年12月到使用到現在,
1.運行引數修改
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_HOME1=/opt/cloudera/parcels/CDH/lib/spark1
#export SPARK_HOME2=/opt/cloudera/parcels/CDH/lib/spark2
#export PYTHON_HOME=/usr/local/python3
export JAVA_HOME=/usr/java/jdk1.8.0_172-amd64
export HIVE_HOME=/opt/cloudera/parcels/CDH/lib/hive
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
我們公司只使用shell調度模式,沒有使用dolphin自帶的spark 之類的,所以就沒配置,有需要按照這樣配置,這樣dolphin才能正常識別環境,運行相關腳本,需要特別注意
2.安裝程序中如果遇到腳本正常執行,doplphin卻顯示失敗可能原因:
a.zookeeper配置錯誤

b.yarn配置錯誤
HA 和 單 ResourceManager 需要注意以下兩個引數配置,認真讀完官網檔案

3.安裝郵箱報警無法正常使用,可能原因:
以下是官網檔案里的 我這邊添加注釋注意事項
# 郵件配置,以qq郵箱為例
# 郵件協議
mailProtocol="SMTP"
# 郵件服務地址
mailServerHost="smtp.qq.com"
(這個地址注意查找下,不要配置錯)
# 郵件服務埠
mailServerPort="25"
(如果使用阿里云這個埠默認是關閉的,需要注意,采用在自己電腦 telnet 主機ip 25 查看 )
# mailSender和mailUser配置成一樣即可
(這個注意看清,二這一樣)
# 發送者
mailSender="xxx@qq.com"
# 發送用戶
mailUser="xxx@qq.com"
# 郵箱密碼
mailPassword="xxx"
# TLS協議的郵箱設定為true,否則設定為false
starttlsEnable="true"
# 開啟SSL協議的郵箱配置為true,否則為false,注意: starttlsEnable和sslEnable不能同時為true
sslEnable="false"
(需要注意:
服務器埠如果是465
starttlsEnable="false"
sslEnable="true"
服務器埠是:587
starttlsEnable="true"
sslEnable="false")
# 郵件服務地址值,參考上面 mailServerHost
sslTrust="smtp.qq.com"
4.特別注意項
安裝好dolphinscheduler后,后期需要更改組態檔引數,都要先停止dolphinscheduler所以的服務,
在bin/目錄下,然后在原始安裝檔案里進行更改,就是第一次解壓安裝的檔案,不需要到每個服務器里去更改已經安裝的目錄,更改后再執行sh install.sh,這樣所有的機器服務器都正常配置了,這樣才能避免很多坑,
2.使用配置篇
我這里只補充寫使用的問題,正式介紹參考官網的檔案,很詳細的
https://dolphinscheduler.apache.org/zh-cn/docs/latest/user_doc/system-manual.html
1.租戶配置問題
進入安全中心配置租戶,租戶這個就是對應Liunx 用戶,這個配置的租戶在Liunx 需要給予相關權限,這個需要注意,好多時候會報權限問題,例如我們配置的調度檔案在/mnt/XXX/目錄下,我們使用 dolphinscheduler租戶調度時,會給這個目錄 dolphinscheduler用戶權限,其他同理,

2.用戶配置
這里用戶就是登錄DolphinScheduler 用戶,這里盡可能配置個主要維護人用戶,加上用戶的郵箱,用于添加在報警功能,這樣加在報警組里,整個服務掛掉,會郵件報警的,

無法創建用戶可能問題:


3.告警組配置
這里把上面用戶加進來,這樣服務就可以正常報警了,此報警配置組,用戶在作業流中報警顯示,所以請認真配置

4.Worker分組管理
這里就是的這個配置控制,它決定worker提交的機器位置,

這里會體現在節點配置中

3.專案管理
我們采用迭代方式進行維護,不同大家可按照不同業務部門進行維護各專案是相互獨立,是可以進行依賴的,不過不建議跨專案依賴,
以下僅供參考:
1.作業流定義維護
目前我們調度的專案是整個離線數倉專案
按照標準的分層 ODS, DWD ,DWS ,ADS 進行調度,
按照傳統方式把各層都放在一個作業流中,通過一個總作業流進行依賴調度

這樣整體維護行較差,所以我們這邊采用按照分層資訊不同型別的表按照不同的用處
這樣做了具體細分,做到解耦,

這個整個專案關系比較清晰,減少了不少依賴的情況,添加新腳本時候只需要按照分類加進去就行
,維護起來比較方便,
2.作業流腳本維護
我們這邊腳本都是采用shell方式調度,相關sqoop 腳本也是自己寫好的,這樣方便整個數倉ETL腳本維護,
只需要把專案腳本當在/mnt/下就行,通過git進行腳本更新迭代,
我們做了全域變數

參考事例
在全域變數中設定例如 project_address /mnt/xx/ 變數用${project_address}參考

這樣方便維護使用,
3.判斷CONDITIONS使用

此時跑的情況為 000 成功 1-23 成功 走222

此時 000成功 1-23失敗 走333
4.解決跨專案的依賴問題
如果出現相關需要專案的情況
使用DEPENDENT功能

此項可以解決許多問題,比如腳本一個小時跑一次,前一個顯示沒有跑完,后一個小時不跑情況,就利用這個功能做個判斷,檢測前一小時任務是否成功就行了,這是個很好的功能,
5.任務啟動引數配置
1.失敗策略
繼續:

如果此時A成功 ,D失敗了, 依然會運行C ;
結束:

如果此時A 成功,(B,C同時跑),D失敗了,就會暫停整個作業里,不管C 是否正常跑完,
5.資源使用情況:
DolphinScheduler調度,如果資源不足情況,會無法正常調度,相關引數在配置中,所以請保證服務器的資源充足


4.相關延伸
由于DolphinScheduler沒有對作業流具體腳本的用時整體排序統計,不利于團隊對腳本的優化,所以我們做了兩張表以下是相關SQL ,使用相關報表工具進行展示
1.最近XXX個任務排名:
SELECT
name ,
concat(
CONCAT(TIMESTAMPDIFF(SECOND,start_time,end_time) DIV 3600, '時'),
CONCAT(TIMESTAMPDIFF(SECOND,start_time,end_time) MOD 3600 DIV 60, '分'),
CONCAT(TIMESTAMPDIFF(SECOND,start_time,end_time) MOD 3600 MOD 60 DIV 1, '秒')
) as time
FROM
dolphinscheduler.t_ds_task_instance
where
task_type = "SHELL"
and state = 7
ORDER by
submit_time desc limit XXX;
2.最近5天任務用時排名
SELECT
name ,
concat(
CONCAT(TIMESTAMPDIFF(SECOND,start_time,end_time) MOD 3600 DIV 60, '分'),
CONCAT(TIMESTAMPDIFF(SECOND,start_time,end_time) MOD 3600 MOD 60 DIV 1, '秒')
) as time
FROM
dolphinscheduler.t_ds_task_instance
where
task_type = "SHELL"
and state = 7
and date_sub(curdate(), INTERVAL 5 DAY) <= start_time
group by name
ORDER BY time DESC
5.相關吐槽
由于目前版本任務才分json拆分問題,導致匯出作業流到新環境中出出現問題,需要手動重新對應作業流處理上線,目前只能人工解決,對整體維護起來不太舒服,官方說2.0版本以后會拆分處理,解決此問題,其他的問題基本都能解決,
以上是使用的相關經驗總結和吐槽,希望DolphinScheduler越來越好,
【本文正在參與 “擁抱開源 — Apache DolphinScheduler 有獎征稿活動】
擁開源—DolphinScheduler 有獎征稿活動 -CSDN
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/287344.html
標籤:其他
上一篇:使用Jenkins和dockerfile-maven-plugin部署專案
下一篇:Spark SQL 淺學筆記2
