Apache DolphinScheduler 使用常見問題總結(持續更新中)

說明

文章中常見問題是在使用過程中發現的,如果文章沒有你遇到的問題,請到github上提交issue。

官網地址

github issue地址

使用注意事項

安裝包與安裝目錄
	安裝包:是下載的的源文件,只有在安裝時候纔會用到,相安裝好調度可以刪除該目錄。
	安裝目錄:運行install.sh後調度安裝的目錄,對調度管理都在安裝目錄下操作,比如 啓停服務,、配置、查看日誌等等。
	官網文檔中的描述如下(配置在install.sh中),**記住**任何操作都在安裝目錄下操作。
 #將DS安裝到哪個目錄,如: /opt/soft/dolphinscheduler,不同於現在的目錄
  installPath="/opt/soft/dolphinscheduler"
日誌查看目錄

假設安裝調度時候安裝配置爲 installPath="/opt/soft/dolphinscheduler",那麼日誌目錄就在
/opt/soft/dolphinscheduler/logs 下

查看worker 日誌
tail -f /opt/soft/dolphinscheduler/logs/dolphinscheduler-worker.log

查看master日誌
tail -f /opt/soft/dolphinscheduler/logs/dolphinscheduler-master.log

查看api 日誌

tail -f /opt/soft/dolphinscheduler/logs/dolphinscheduler-api-server.log

查看告警alert日誌

tail -f /opt/soft/dolphinscheduler/logs/dolphinscheduler-alert.log

查看日誌服務logger日誌

tail -f /opt/soft/dolphinscheduler/logs/dolphinscheduler-logger-server-huaweiyun.out

huaweiyun爲hostname,自行修改成你本地的

開發環境常見問題

API啓動端口是8080不是12345

在初始化環境中api默認配置12345,
解決辦法
編輯運行配置,增加如下配置

-Dserver-api-server -Dspring.profiles.active=api

在這裏插入圖片描述

找不到mysql驅動

由於DolphinScheduler 默認使用的postgresql,默認沒有引入mysql驅動依賴。需要手動修改pom。

解決辦法:
找到根目錄下pom.xml的

<dependency>
	<groupId>mysql</groupId>
	<artifactId>mysql-connector-java</artifactId>
	<version>${mysql.connector.version}</version>
	<scope>test</scope>
</dependency>

去掉 < scope>test< /scope> 就ok

在這裏插入圖片描述

重新 import maven依賴。

worker 執行失敗報NPE空指針

在這裏插入圖片描述

解決辦法:
在WorkServer vm options 添加如下參數

-Dspring.profiles.active=worker -Dlogging.config=“dolphinscheduler-server/src/main/resources/logback-worker.xml”

在這裏插入圖片描述

調度部署常見問題

ubuntu 部署報錯 source: not found

在這裏插入圖片描述

解決辦法

可以百度google 關鍵詞 ubuntu source: not found 裏面有解決方案

訪問API服務報錯404

在這裏插入圖片描述

解決辦法

上面請求少了工程名稱,完整地址是 http://ip:12345/dolphinscheduler/

API默認端口12235

調度使用常見問題

系統初始化登錄失敗

一般這個錯就是密碼記錯了,調度初始密碼如下,注意拷貝不要有空格
賬號: admin
密碼: dolphinscheduler123

監控頁面Master Worker 頁面一直都在努力加載中或者查詢無數據

通過命令jps,能看到WorkerServer和MasterServer進程。有可能的原因zk掛掉了。
在這裏插入圖片描述

解決辦法

查看zk是否啓動。如果沒有啓動就把zk服務啓動好。再監控頁面看看Master Worker 狀態

工作流手動運行成功,但是任務實例頁面沒有數據

這個問題因素比較多,先假設 zk,worker master 都啓動成功情況下
通過查看worker日誌,發現有日誌 load or availablePhysicalMemorySize(G) is too high,問題同後面的問題load or availablePhysicalMemorySize(G) is too high。解決辦法參考該問題。

任務實例狀態爲提交成功,但一直不運行

這個問題因素比較多,先分析當前情況就是在worker日誌文件dolphinscheduler-worker.log 中一直打印如下日誌consume tasks: [],there still have 1 tasks need to be executed,任務數沒有減少。這種情況可能是任務關聯的Worker分組配置的ip和Worker服務ip不一致。導致任務不能執行。

在這裏插入圖片描述

解決辦法:

進入安全中心->Worker分支管理,修改分組IP,與Worker服務的ip一致。
**加粗樣式**

文件上傳失敗

假設前提文件存儲服務都已配置好,上傳出現如下問題Nginx:413 Request Entity Too Large。原因是Nginx上傳文件限制。
在這裏插入圖片描述

解決辦法:

修改/etc/nginx/nginx.conf.增加上傳文件大小限制,在 http{} 段中增大nginx上傳文件大小限制

client_max_body_size 200M

重啓ngnix

ps:如果說明不詳細,可以百度谷歌關鍵詞 413 nginx

SQL查詢成功,任務實例結果卻失敗

失敗日誌如下,原因是SQL查詢會將結果將通過郵件發送,日誌報錯是沒有配置郵件服務
在這裏插入圖片描述
解決辦法

配置郵件服務配置文件爲conf/alert.properties

配置樣例如下,163郵箱配置
在這裏插入圖片描述
郵箱詳情配置可以參考這篇

SQL插入數據任務執行失敗

[ERROR] 2020-06-05 10:20:07.756  - [taskAppId=TASK-9-493-494]:[336] - Can not issue data manipulation statements with executeQuery().
java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1084)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:987)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:973)
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:918)
	at com.mysql.jdbc.StatementImpl.checkForDml(StatementImpl.java:501)
	at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2150)
	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.executeFuncAndSql(SqlTask.java:295)
	at org.apache.dolphinscheduler.server.worker.task.sql.SqlTask.handle(SqlTask.java:176)
	at org.apache.dolphinscheduler.server.worker.runner.TaskScheduleThread.run(TaskScheduleThread.java:142)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

解決辦法:

報錯原因是sql類型爲查詢執行非查詢的事情, 解決辦法是更新任務,將sql類型改爲非查詢
在這裏插入圖片描述

load or availablePhysicalMemorySize(G) is too high

worker後臺日誌一直出現如下日誌,原因服務器內存或者CPU已經不夠用(由於調度啓動默認堆大小爲1G,如果5個服務全部啓動,就要消耗5G內存)。這是worker的自我保護機制,不會接新的任務,等現在的任務運行完或CPU、內存富餘的時候再繼續接新任務
在這裏插入圖片描述

解決辦法

1 如果是有其他程序正在執行(消耗內存大),可以等待其他任務執行完成,再觀察worker是否還有容量不夠日誌。

2 如果是土豪,就直接擴容內存

3 如果物理機內存不沒有5G,有下面兩種處理方式

  • 可以先關閉一些服務,比如直接kill alert,logger等。
  • 可以調整啓動參數,修改配置文件 bin/dolphinscheduler-daemon.sh,修改-Xms 值改小點
export DOLPHINSCHEDULER_OPTS="-server -Xmx16g -Xms1g -Xss512k -XX:+DisableExplicitGC -XX:+UseConcMarkSweepGC -XX:+CMSParallelRemarkEnabled -XX:LargePageSizeInBytes=128m -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly -XX:CMSInitiatingOccupancyFraction=70"

源碼參考

zookeeper監控狀態異常

zk啓動正常,Master Worker 啓動正常。但是zk 節點自檢狀態異常,這是由於獲取zk的FourLetterWord失敗

在這裏插入圖片描述
解決辦法

首先執行命令,localhost是服務地址

 echo ruok|nc localhost 2181

如果出現如下提示,就需要修改配置zoo.cfg配置

ruok is not executed because it is not in the whitelist.

增加如下配置在zoo.cfg中

  4lw.commands.whitelist=*

重啓zk

如果沒有nc命令需要先安裝yum install nc

源碼參考

創建租戶失敗

創建租戶需要使用HDF,一般錯誤都發生操作HDFS時候。
可能的錯誤有沒有配置hdfs、hdfs操作沒權限等。

比如下面是沒權限提示
在這裏插入圖片描述

解決辦法

遇到這問題是先看api日誌,根據日誌錯誤提示做出修改,
反正是首先要確保你的HDFS已經配置好。(目前主流是hdfs類型,其他類型還沒嘗試)

ps: hdfs配置文件修改參考這個issue

Master和Worker異常停止

原因

Master和Worker要上報心跳給zookeeper,如果在指定時間內沒有上報心跳,Master和Worker機會自動停止
就會出現如下日誌

[INFO] 2020-04-30 06:48:28.032 org.apache.dolphinscheduler.server.master.MasterServer:[180] - master server is stopping ..., cause : i was judged to death, release resources and stop myself
[INFO] 2020-04-30 06:48:29.425 org.apache.dolphinscheduler.server.master.runner.MasterSchedulerThread:[143] - master server stopped...
[INFO] 2020-04-30 06:48:31.033 org.apache.dolphinscheduler.server.master.MasterServer:[197] - heartbeat service stopped

所以如果zookeeper失聯(掛了),Master和Worker也就掛了。

解決辦法

1 確保zookeeper服務能正常訪問
2 可以修改zookeeper超時配置
在1.2版本中超時是300ms。可以改大點
配置文件爲 conf/zookeeper.properties,根據實際情況自行修改

參考issue

Data truncation: Data too long for column ‘app_link’ at row 1

原因是app_link 字段太長了

解決辦法

1) 1.3版本之前 t_ds_task_instance.app_link長度255。可以修改字段長度,官方腳本

ALTER TABLE t_ds_task_instance ALTER COLUMN app_link type text

2) 可以升級最新版本,已經解決改問題,

參考issue

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章