說明
文章中常見問題是在使用過程中發現的,如果文章沒有你遇到的問題,請到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