Apache DolphinScheduler大規模任務排程系統對大資料實時Flink任務支援

海豚调度發表於2024-09-02

轉載自神龍大俠

我是用olphinScheduler 3.2.1版本做原始碼編譯部署(部署方式參考我的另外一篇文件《原始碼編譯,Apache DolphinScheduler前後端分離部署解決方案》)

二進位制檔案部署本文也適用,只需要修改相對應的配置即可。

資源管理底層基座替換成hdfs

Flink程式jar包是在資源中心進行管理的,對於dolphinscheduler系統來說,資源主要包括3類

檔案管理

當在排程過程中需要使用到第三方的 jar 或者使用者需要自定義指令碼的情況,可以透過在該頁面完成相關操作。可建立的檔案型別包括:txt/log/sh/conf/py/java 等。並且可以對檔案進行編輯、重新命名、下載和刪除等操作。

UDF管理

資源管理和檔案管理功能類似,不同之處是資源管理是上傳的 UDF 函式,檔案管理上傳的是使用者程式,指令碼及配置檔案。

任務組管理

任務組主要用於控制任務例項併發,旨在控制其他資源的壓力(也可以控制 Hadoop 叢集壓力,不過叢集會有佇列管控)。您可在新建任務定義時,可配置對應的任務組,並配置任務在任務組內執行的優先順序。使用者僅能檢視有許可權的專案對應的任務組,且僅能建立或修改具有寫許可權的專案對應的任務組。

DolphinScheduler支援將資源儲存在api-server本地檔案系統或者hadoop分散式檔案系統hdfs上面(也可以支援s3,我用的hdfs),生產環境把資源存在本地檔案系統是不可靠的,所以需要將底層介質儲存平臺改成hdfs。

對於DolphinScheduler的核心元件,

  • 資源的管理是在api-server
  • 資源的使用是work-server

所以如果支援hdfs的配置修改需要對api-server和worker-server重新部署。

如果要支援hdfs需要修改(dolphinscheduler-common中的common.properties)如下配置:

resource.storage.upload.base.path=/dolphinscheduler //也可不修改
resource.hdfs.root.user=
resource.hdfs.fs.defaultFS=
hadoop.security.authentication.startup.state=true

java.security.krb5.conf.path= //krb5.conf配置檔案
login.user.keytab.username=
login.user.keytab.path=

修改完之後,重新編譯api-server, work-server部署,就可以修改資源管理檔案系統的底座了。

目前DolphinScheduler支援建立資料夾和上傳檔案的功能,實際使用如下圖所示:

file

備註:

  • 目前admin使用者可以看到所有的檔案;
  • 如果新建一個使用者的話,是看不到其他使用者建立的檔案

我以WordCount.jar包作為例子,具體可以替換成特定任務的jar包。

WordCount任務是flink的example程式碼,類似第一個hello world程式,在二進位制包examples目錄下。有batch和streaming兩種任務型別的jar包

在worker機器上部署flink環境(使用1.19版本)

我用的bin二進位制部署檔案,下載地址為
https://flink.apache.org/2024/06/14/apache-flink-1.19.1-relea...

配置Flink path可以修改機器的bash_profile檔案,也可以修改DolphinScheduler的dolphinscheduler_env.sh配置檔案。

  • bash_profile

file

  • dolphinscheduler_env.sh

file

租戶的概念

DolphinScheduler支援多個租戶,不同的租戶之間資源是隔離,租戶的實現機制是根據linux上使用者來做資源隔離,如下圖所示:

file

所以Flink的環境配置在具體的實施情況可以支援一些非常靈活的特性支援,比如可以在worker機器上建立不同的user:

  • flink119
  • flink108
  • flink112

不同user配置不同的Flink版本環境資訊,這樣Flink任務可以根據選擇租戶的不同來支援Flink多版本特性的支援。

上傳Flink任務jar包

我這直接使用Flink的example jar包了,/batch/目錄下的WrodCount.jar

file

注意,非常重要,執行的時候,需要選擇正確的租戶。

否則,要不找不到Flink,要不對於版本差異的程式碼 會有不符合預期的執行情況噢。

file

Flink任務執行對於batch和streaming任務有不同的效果,streaming任務會一直執行,batch任務執行完之後就退出了。

可以在任務例項檢視flink任務的執行日誌,如下圖所示:

file

也可以將任務的執行情況,傳送到釘釘:

file

Flink on yarn和Flink local對於hello world程式來說沒有什麼特別的不同,只是需要worker機器本身的部署使用者(我的是deploy使用者)配置好hadoop環境。

配置好 $HADOOP_HOME$HADOOP_CLASSPATH即可。

flink on yarn執行效果看圖:

file

Yarn中application執行日誌:

file

原文連結:https://segmentfault.com/a/1190000045101168

本文由 白鯨開源 提供釋出支援!

相關文章