国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

這篇 DolphinScheduler on k8s 云原生部署實踐,值得所有大數(shù)據(jù)人看!

這篇具有很好參考價值的文章主要介紹了這篇 DolphinScheduler on k8s 云原生部署實踐,值得所有大數(shù)據(jù)人看!。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

在當(dāng)前快速發(fā)展的技術(shù)格局中,企業(yè)尋求創(chuàng)新解決方案來簡化運(yùn)營并提高效率成為一種趨勢。

Apache DolphinScheduler作為一個強(qiáng)大的工具,允許跨分布式系統(tǒng)進(jìn)行復(fù)雜的工作流任務(wù)調(diào)度。本文將深入探討如何將Apache DolphinScheduler適配并整合進(jìn)現(xiàn)代IT環(huán)境,提升其在云原生部署中的表現(xiàn)。

前言

Apache DolphinScheduler 的高效云原生部署模式,比原始部署模式節(jié)省了95%以上的人力資源和工作時間,提升了部署效率和成本效益。

通過集成 GitOps 技術(shù),我們提升了Apache DolphinScheduler 的 DevOps 管理能力,改善了軟件交付效率和安全審計能力。

通過集成新的云原生技術(shù),我們?yōu)?Apache DolphinScheduler 增加了水平擴(kuò)展、健康探測和滾動部署等功能,提升了其靈活性和適應(yīng)性。

將 Prometheus 等可觀測性技術(shù)整合到基礎(chǔ)設(shè)施和服務(wù)網(wǎng)格中,顯著提升了 DolphinScheduler 的監(jiān)控功能,為其性能和健康狀態(tài)提供了更深入的洞察。

與 Kubernetes 作業(yè)技術(shù)深度整合,實現(xiàn)了 DolphinScheduler 的混合調(diào)度器,適用于傳統(tǒng)虛擬機(jī)和基于容器的運(yùn)行環(huán)境,提升了其多樣性和兼容性。

項目特點(diǎn)

Apache DolphinScheduler 是由 Analysys 開源的分布式、易于擴(kuò)展的可視化工作流任務(wù)調(diào)度平臺,解決了需要企業(yè)級問題:

  • 多源數(shù)據(jù)連接和訪問:技術(shù)領(lǐng)域中最常見的數(shù)據(jù)源都可以訪問,添加新數(shù)據(jù)源不需要太多改動。

  • 多樣化、專業(yè)化和大規(guī)模數(shù)據(jù)任務(wù)管理:這涉及到大數(shù)據(jù)(Hadoop 系列、Flink 等)任務(wù)調(diào)度的問題,與傳統(tǒng)調(diào)度器有著顯著區(qū)別。

  • 圖形化任務(wù)編排:提供了方便的用戶體驗,與商業(yè)產(chǎn)品具有競爭力,尤其是對于大多數(shù)無法通過拖放直接生成數(shù)據(jù)任務(wù)的國外開源產(chǎn)品而言。

  • 任務(wù)細(xì)節(jié):豐富的任務(wù)、日志和運(yùn)行時間軸顯示,滿足了開發(fā)人員對精細(xì)化數(shù)據(jù)任務(wù)管理的需求,快速定位慢 SQL 和性能瓶頸。

  • 支持各種分布式文件系統(tǒng):豐富了用戶對非結(jié)構(gòu)化數(shù)據(jù)的選擇。

  • 本地多租戶管理:滿足了大型組織對數(shù)據(jù)任務(wù)管理和隔離的需求。

  • 完全自動化的分布式調(diào)度算法來平衡所有調(diào)度任務(wù)。

  • 本地集群監(jiān)控:可以監(jiān)控 CPU、內(nèi)存、連接數(shù)和 Zookeeper 狀態(tài),適用于中小企業(yè)的一站式運(yùn)維。

  • 本地任務(wù)告警功能:最大程度地減少任務(wù)操作的風(fēng)險。

  • 強(qiáng)大的社區(qū)運(yùn)營:傾聽客戶的真實聲音,不斷添加新功能,持續(xù)優(yōu)化客戶體驗。

分布式集群

基于早期的微服務(wù)技術(shù),Apache DolphinScheduler采用了服務(wù)注冊表的概念,通過使用Zookeeper進(jìn)行集群的分布式管理(許多大數(shù)據(jù)技術(shù)使用Zookeeper作為分布式集群管理)。

Worker主節(jié)點(diǎn)可以任意添加,或者可以獨(dú)立部署API管理和告警管理。作為一個企業(yè)級技術(shù)模塊,它實現(xiàn)了微服務(wù)分離、獨(dú)立部署和模塊化管理的良好技術(shù)特性。然而,在容器化云原生應(yīng)用迅速發(fā)展的時代,這種基本的技術(shù)模式存在一些不足之處:

  • 需要從頭開始部署,無論是安裝在物理機(jī)還是虛擬機(jī)上,DolphinScheduler都需要數(shù)百個shell操作,一個節(jié)點(diǎn)集群可能需要數(shù)千個shell操作。

  • 標(biāo)準(zhǔn)化的企業(yè)級DolphinScheduler涉及到管理大量基本環(huán)境,并且通常需要超過八個節(jié)點(diǎn)、主機(jī)和IP地址。這些基礎(chǔ)設(shè)施信息帶來了一定的管理難度。

  • 添加節(jié)點(diǎn)時,還需要進(jìn)行數(shù)十個操作(安裝Java、配置主機(jī)、設(shè)置DS Linux用戶、設(shè)置免密碼登錄、修改安裝節(jié)點(diǎn)配置文件),并且整個集群需要停止和重新啟動。

  • 大型企業(yè)通常有多個集群來支持不同的業(yè)務(wù)單元,這將在工作負(fù)載中帶來大量的重復(fù)。

  • 調(diào)度器具有一些可觀察性功能,但無法與主流工具集成。

  • 整體而言,調(diào)度器仍然需要日常例行檢查工作,例如調(diào)查核心Java進(jìn)程異常退出。

  • 在不同的需求和場景下,調(diào)度器的配置設(shè)置缺乏有效的管理機(jī)制或工具。

核心技術(shù)思路

解決這些技術(shù)缺陷的核心思路包括:

  • 如何將Apache DolphinScheduler集成到當(dāng)今主流的云原生技術(shù)中;

  • 如何在減少人力資源的情況下部署DolphinScheduler,是否能實現(xiàn)完全自動化的集群安裝和部署模式;

  • 如何實現(xiàn)完全無服務(wù)器的DolphinScheduler,并大幅降低配置管理的管理成本;

  • 如何標(biāo)準(zhǔn)化技術(shù)組件的實現(xiàn)規(guī)范;

  • 是否可以實現(xiàn)無人監(jiān)管運(yùn)行,并且系統(tǒng)具備自我修復(fù)能力;

  • 如何構(gòu)建并將其集成到現(xiàn)有的可觀測性平臺中。

利用Kubernetes技術(shù)

作為云原生系統(tǒng)技術(shù)的事實標(biāo)準(zhǔn),Kubernetes已經(jīng)給整個IT應(yīng)用技術(shù)系統(tǒng)帶來了革命性的變化。Kubernetes主要基于服務(wù)注冊和發(fā)現(xiàn)、負(fù)載均衡、自動化軟件發(fā)布和回滾、容器化隔離、軟件自愈和分布式配置管理等核心技術(shù)特性。

不僅如此,還可以整合 Cloud Native Computing Foundation(CNCF)的許多優(yōu)秀項目至 ds on k8s 部署:

  • Apache DolphinScheduler的部署技術(shù)得到了改進(jìn)。我們使用了Helm和Argo CD來大大簡化和實現(xiàn)一鍵部署。

  • 通過Argo CD實現(xiàn)了配置內(nèi)容的GitOps管理機(jī)制,從而實現(xiàn)了現(xiàn)代DevOps的完整審計能力。

  • Kubernetes的水平Pod自動縮放技術(shù)大大簡化了應(yīng)用擴(kuò)展的操作難度。

  • Kubernetes的標(biāo)準(zhǔn)化健康探針技術(shù)使得調(diào)度器的所有技術(shù)組件都具備了強(qiáng)大的自愈能力。

  • Kubernetes和Argo CD的滾動發(fā)布技術(shù)實現(xiàn)了DolphinScheduler工具的優(yōu)雅簡單升級。

  • 使用Kube-Prometheus技術(shù)為DolphinScheduler帶來了標(biāo)準(zhǔn)化的可觀測性能力。

  • 強(qiáng)大的UI技術(shù)簡化了CMDB可視化管理、基于Kubernetes的組件配置管理、應(yīng)用日志管理等。

還可以向DolphinScheduler引入了更強(qiáng)大的工具,以獲取更豐富的云原生特性:

  • 通過Kubernetes服務(wù)注冊發(fā)現(xiàn)和Ingress技術(shù)實現(xiàn)了更輕松的服務(wù)訪問;

  • 引入了Linkerd,將服務(wù)網(wǎng)格的功能引入DolphinScheduler,提高了所有API的管理和監(jiān)控能力;

  • 將DolphinScheduler與Argo Workflows或標(biāo)準(zhǔn)的Kubernetes作業(yè)結(jié)合起來;

  • 引入對象存儲技術(shù)MinIO,將存儲非結(jié)構(gòu)化數(shù)據(jù)的技術(shù)與DolphinScheduler統(tǒng)一起來。

云原生平臺初始化遷移

部署步驟

  1. 從 GitHub 存儲庫的 dolphinscheduler-1.3.9.tar.gz 文件中的 ./dolphinscheduler-1.3.9/docker/kubernetes/dolphinscheduler 文件夾中獲取 Helm 包:

    https://github.com/apache/dolphinscheduler/archive/refs/tags/1.3.9.tar.gz

  2. 使用以下命令來部署一個由 Kubernetes 管理的 DolphinScheduler 實例:

    kubectl create ns ds139
    helm install dolphinscheduler . -n ds139
    
    
  3. 有時,Apache DolphinScheduler 用戶需要集成 DataX、SeaTunnel、MySQL JDBC 驅(qū)動程序或 Oracle JDBC 驅(qū)動程序以進(jìn)行 ETL 和數(shù)據(jù)庫連接。

我們可以下載必要的組件,構(gòu)建新的 Docker 鏡像,然后升級 Kubernetes 管理的 DolphinScheduler 實例:

#Download the additional components
https://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.49/mysql-connector-java-
5.1.49.jar
https://repo1.maven.org/maven2/com/oracle/database/jdbc/ojdbc8/
https://github.com/alibaba/DataX/blob/master/userGuid.md

#Create a new docker image with new tag by this Dockerfile
FROM apache/dolphinscheduler:1.3.9
COPY *.jar /opt/dolphinscheduler/lib/
RUN mkdir -p /opt/soft/datax
COPY datax /opt/soft/datax

#Edit image tag of helm value.yaml file, and execute helm upgrade.
helm upgrade dolphinscheduler -n ds139

一般建議在生產(chǎn)環(huán)境中使用獨(dú)立的外部 PostgreSQL 作為 DolphinScheduler 的管理數(shù)據(jù)庫。

這樣,切換到外部數(shù)據(jù)庫后,即使在 Kubernetes 中完全刪除并重新部署 DolphinScheduler,也不需要重新創(chuàng)建 Apache DolphinScheduler 的應(yīng)用數(shù)據(jù)(例如用戶定義的數(shù)據(jù)處理任務(wù))。

這再次證明了高可用性和數(shù)據(jù)完整性。此外,建議為Apache DolphinScheduler 組件配置 PersistentVolume,因為如果 pod 重新啟動或升級,歷史 DolphinScheduler 應(yīng)用日志將會丟失。

與傳統(tǒng)模式下執(zhí)行數(shù)百個 shell 命令相比,只需修改一個配置文件,并使用單行安裝命令,就可以自動安裝八個 Apache DolphinScheduler 組件,節(jié)省了大量人力成本和操作錯誤。

對于多個 DolphinScheduler 集群,這將大大降低人力成本,業(yè)務(wù)部門的等待時間將從幾天減少到不到一個小時,甚至可能十分鐘內(nèi)完成。

基于Argo CD添加GitOps

Argo CD 是一個基于 Kubernetes 的聲明式 GitOps 持續(xù)交付工具,是 CNCF 的孵化項目,也是 GitOps 的最佳實踐工具。

GitOps 對 Apache DolphinScheduler 的實現(xiàn)帶來了以下優(yōu)勢:

  • 集群軟件的圖形化和一鍵式安裝

  • Git 記錄了完整的發(fā)布過程,實現(xiàn)一鍵回滾

  • 方便的 DolphinScheduler 工具日志查看

一旦實施完成,我們可以看到由 Argo CD 自動部署的 Pod、ConfigMap、Secret、Service、Ingress 等資源,它還顯示了清單提交信息和用戶名,完全記錄了所有發(fā)布事件信息。同時,還可以通過一鍵點(diǎn)擊回滾到歷史版本。

相關(guān)資源信息可以通過kubectl命令查看:

[root@tpk8s-master01 ~]# kubectl get po -n ds139
                           NAME                               READY   STATUS  RESTARTS           AGE
Dolphinscheduler-alert-96c74dc84-72cc9	1/1	Running	0		22m
Dolphinscheduler-api-78db664b7b-gsltq	1/1	Running	0		22m
Dolphinscheduler-master-0			1/1	Running	0		22m
Dolphinscheduler-master-1			1/1	Running	0		22m
Dolphinscheduler-master-2			1/1	Running	0		22m
Dolphinscheduler-worker-0			1/1	Running	0		22m
Dolphinscheduler-worker-1			1/1	Running	0		22m
Dolphinscheduler-worker-2			1/1	Running	0		22m

[root@tpk8s-master01 ~]# kubectl get statefulset -n ds139
              NAME                                READY              AGE
Dolphinscheduler-master		3/3		22m
Dolphinscheduler-worker		3/3		22m

[root@tpk8s-master01 ~]# kubectl get cm -n ds139
          NAME                                     DATA                AGE
Dolphinscheduler-alert		15		23m
Dolphinscheduler-api			1		23m
Dolphinscheduler-common		29		23m
Dolphinscheduler-master		10		23m
Dolphinscheduler-worker		7		23m

[root@tpk8s-master01 ~]# kubectl get service -n ds139
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
Dolphinscheduler-api	ClusterIP	10.43.238.5	<none> 12345/TCP 23m
Dolphinscheduler-master-headless ClusterIP None	<none> 5678/TCP 23m
Dolphinscheduler-worker-headless ClusterIP None 	<none> 1234/TCP,50051/TCP 23m

[root@tpk8s-master01 ~]# kubectl get ingress -n ds139
      NAME                               CLASS                       HOSTS ADDRESS
Dolphinscheduler		<none>		ds139.abc.com

還可以看到 Kubernetes 集群中所有 Pod 都部署在不同的主機(jī)上,例如,worker1 和 worker2 分別部署在不同的節(jié)點(diǎn)上。

一旦配置了 Ingress,我們就可以使用域名在公司的內(nèi)部網(wǎng)絡(luò)中訪問 Apache DolphinScheduler 的 Web 用戶界面,讓我們以 DNS 子域名 abc.com 為例:

http://ds139.abc.com/dolphinscheduler/ui/#/home,我們可以在Argo CD 中查看 Apache DolphinScheduler 的每個組件的內(nèi)部日志:

使用 Argo CD,修改主節(jié)點(diǎn)、工作節(jié)點(diǎn)、API 或警報等組件的副本數(shù)量非常方便。Apache DolphinScheduler 的Helm配置還保留了 CPU 和內(nèi)存的設(shè)置信息。在 value.yaml 文件中修改副本的設(shè)置。

修改后,我們可以將其推送到公司的內(nèi)部源代碼系統(tǒng):

master:
  podManagementPolicy: "Parallel"
  replicas: "5"
worker:
  podManagementPolicy: "Parallel"
  replicas: "5"
alert:
  replicas: "3"
api:
  replicas: "3"

只需在 Argo CD 上點(diǎn)擊同步即可進(jìn)行同步,所需的相應(yīng) pod 將被添加。

[root@tpk8s-master01 ~]# kubectl get po -n ds139
                   NAME                                      READY   STATUS              RESTARTS            AGE
Dolphinscheduler-alert-96c74dc84-72cc9	1/1	Running		0		43m
Dolphinscheduler-alert-96c74dc84-j6zdh	1/1	Running		0		2m27s
Dolphinscheduler-alert-96c74dc84-rn9wb	1/1	Running		0		2m27s
Dolphinscheduler-api-78db664b7b-6j8rj	1/1	Running		0		2m27s
Dolphinscheduler-api-78db664b7b-bsdgv	1/1	Running		0		2m27s
Dolphinscheduler-api-78db664b7b-gsltq	1/1	Running		0		43m
Dolphinscheduler-master-0			1/1	Running		0		43m
Dolphinscheduler-master-1			1/1	Running		0		43m
Dolphinscheduler-master-2			1/1	Running		0		43m
Dolphinscheduler-master-3			1/1	Running		0		2m27s
Dolphinscheduler-master-4			1/1	Running		0		2m27s
Dolphinscheduler-worker-0			1/1	Running		0		43m
Dolphinscheduler-worker-1			1/1	Running		0		43m
Dolphinscheduler-worker-2			1/1	Running		0		43m
Dolphinscheduler-worker-3			1/1	Running		0		2m27s
Dolphinscheduler-worker-4			1/1	Running		0		2m27s

不僅如此,基于 Argo CD 的 GitOps 技術(shù)為整個 DolphinScheduler 工具提供了圖形化、自動化、可追溯、可審計和強(qiáng)大的 DevOps、回滾和監(jiān)控功能,而無需對 DolphinScheduler 進(jìn)行任何代碼修改。

Apache DolphinScheduler 在 k8s 上的服務(wù)自愈

眾所周知,當(dāng)代的IT環(huán)境總是處于不穩(wěn)定狀態(tài)。換句話說,我們的技術(shù)系統(tǒng)將服務(wù)器、操作系統(tǒng)和網(wǎng)絡(luò)的各種故障視為集群中的常規(guī)事件。當(dāng)最終用戶無法通過瀏覽器正常訪問 Apache DolphinScheduler 的任務(wù)管理頁面,或者 DolphinScheduler 無法運(yùn)行常規(guī)的大數(shù)據(jù)任務(wù)時,已經(jīng)為時已晚。

技術(shù)現(xiàn)狀

然而,在 Apache DolphinScheduler 轉(zhuǎn)向云原生之前,它只能依靠日常監(jiān)控來檢查主節(jié)點(diǎn)/工作節(jié)點(diǎn)/API等組件是否正常運(yùn)行,通過 DolphinScheduler 管理UI,或者通過 jps 檢查Java進(jìn)程是否存在。

當(dāng)企業(yè)擁有數(shù)百個調(diào)度環(huán)境時,這不僅會花費(fèi)大量時間,而且更重要的是,系統(tǒng)的可用性將面臨巨大風(fēng)險。

值得注意的是,Kubernetes 技術(shù)本身可以自動重啟和恢復(fù)標(biāo)準(zhǔn)化應(yīng)用程序的有狀態(tài)和部署類型,甚至 CRD 本身也可以自動重啟和恢復(fù)。

當(dāng)應(yīng)用程序失敗時,會記錄異常事件,并重新拉取應(yīng)用程序以重新啟動應(yīng)用程序,Kubernetes 將記錄 pod 重新啟動的次數(shù),以便技術(shù)人員可以快速定位故障。

除了標(biāo)準(zhǔn)化的自愈機(jī)制外,還有主動的健康監(jiān)控方法。通過構(gòu)建一個服務(wù)接口來主動探測正在運(yùn)行 DolphinScheduler 的 pod,使用 livenessProbe 機(jī)制,當(dāng)檢測次數(shù)超過失敗重試次數(shù)時,該機(jī)制可以自動重啟 pod。

此外,通過使用 readinessProbe,Kubernetes 集群可以在探測器捕獲異常時自動切斷對異常 pod 的流量,并在異常事件消失后自動恢復(fù)對 pod 的流量請求。

livenessProbe:
  enabled: true
  initialDelaySeconds: "30"
  periodSeconds: "30"
  timeoutSeconds: "5"
  failureThreshold: "3"
  successThreshold: "1"
readinessProbe:
  enabled: true
  initialDelaySeconds: "30"
  periodSeconds: "30"
  timeoutSeconds: "5"
  failureThreshold: "3"
  successThreshold: "1"

可觀測性

我們知道,Prometheus 已經(jīng)成為云原生系統(tǒng)中監(jiān)控工具的事實標(biāo)準(zhǔn),將 Apache DolphinScheduler 的標(biāo)準(zhǔn)監(jiān)控整合到 Prometheus 系統(tǒng)中對我們來說是最合理的選擇。

  • Kube-Prometheus 技術(shù)可以監(jiān)控 Kubernetes 集群中的所有資源。
  • StatefulSet、命名空間和 Pod 是 DolphinScheduler 的三個主要資源特性。
  • 通過 Kube-Prometheus 技術(shù),可以自動進(jìn)行 CPU、內(nèi)存、網(wǎng)絡(luò)、IO、副本等方面的常規(guī)監(jiān)控,無需額外的開發(fā)或配置。

我們在 Kubernetes 中使用 Kube-Prometheus operator 技術(shù),在部署后自動監(jiān)控 Apache DolphinScheduler 的每個組件的資源。

但請注意Kube-Prometheus 的版本需要與 Kubernetes 的主版本對應(yīng)。

集成服務(wù)網(wǎng)格

作為數(shù)據(jù)服務(wù)提供商,Apache DolphinScheduler 通過服務(wù)網(wǎng)格技術(shù)實現(xiàn)了服務(wù)鏈接的可觀察性管理,并將其納入內(nèi)部服務(wù)治理系統(tǒng)中。
不僅需要通用資源監(jiān)控,還需要服務(wù)調(diào)用鏈的監(jiān)控技術(shù)。通過服務(wù)網(wǎng)格技術(shù),可以實現(xiàn) Apache DolphinScheduler 的內(nèi)部服務(wù)調(diào)用以及 DolphinScheduler API 的外部調(diào)用的可觀察性分析,優(yōu)化 DolphinScheduler 產(chǎn)品的服務(wù)。

此外,作為數(shù)據(jù)工具的服務(wù)組件,Apache DolphinScheduler 可以通過服務(wù)網(wǎng)格工具無縫集成到企業(yè)的內(nèi)部服務(wù)模式中。

使得具有 TLS 服務(wù)通信能力、客戶端服務(wù)通信重試機(jī)制和跨集群服務(wù)注冊發(fā)現(xiàn)等功能成為可能,而無需修改 DolphinScheduler 的代碼。通過服務(wù)網(wǎng)格技術(shù),可以實現(xiàn)對 Apache DolphinScheduler 的 API 外部服務(wù)調(diào)用和內(nèi)部調(diào)用的可觀察性分析,從而優(yōu)化 Apache DolphinScheduler 產(chǎn)品服務(wù)。

我們使用了 Linkerd 作為服務(wù)網(wǎng)格產(chǎn)品進(jìn)行集成,這也是 CNCF 出色的畢業(yè)項目之一。通過修改 Apache DolphinScheduler Helm 中 value.yaml 文件中的注釋,并重新部署,可以快速將網(wǎng)格代理 sidecar 注入到 DolphinScheduler 的 master、worker、API、alert 等組件中。

annotations:
  linkerd.io/inject: enabled

還可以觀察組件之間通信的服務(wù)質(zhì)量,包括每秒請求的數(shù)量:

云原生工作流調(diào)度

要成為真正的云原生調(diào)度工具,Apache DolphinScheduler需要能夠調(diào)度云原生作業(yè)流程。

調(diào)度的任務(wù)都是在固定的Pod中執(zhí)行。在這種模式下,任務(wù)開發(fā)技術(shù)的隔離要求相對較高。

特別是在Python語言環(huán)境下,團(tuán)隊中會存在不同版本的Python基礎(chǔ)和依賴包,甚至版本之間的差異可能會出現(xiàn)數(shù)百種組合。

依賴包的輕微差異就會導(dǎo)致Python程序運(yùn)行錯誤。這也是阻止DolphinScheduler運(yùn)行大量Python應(yīng)用程序的障礙。

建議采取以下方法,以便DolphinScheduler能夠快速與Kubernetes作業(yè)系統(tǒng)集成,并具有強(qiáng)大的任務(wù)隔離和并發(fā)能力:

  • 使用標(biāo)準(zhǔn)的Kubernetes API系統(tǒng)進(jìn)行作業(yè)提交??梢酝ㄟ^kubectl命令行或REST API直接提交任務(wù)。

  • 將kubectl命令文件上傳到DolphinScheduler,并通過DolphinScheduler的shell任務(wù)提交。

  • 使用Argo Workflows項目的Argo CLI命令或REST API命令進(jìn)行提交。

無論是Kubernetes還是Argo Workflows,都需要添加watch功能,因為Kubernetes是一種異步技術(shù),需要等待任務(wù)完成。

在這里,我們以Argo Workflows為例,我們可以在DolphinScheduler中創(chuàng)建一個新的shell任務(wù)或步驟,并將以下命令粘貼到其中。

結(jié)果,我們可以將常規(guī)的數(shù)據(jù)作業(yè)(例如數(shù)據(jù)庫SQL作業(yè)、Spark作業(yè)或Flink作業(yè))和云原生作業(yè)結(jié)合起來,執(zhí)行更全面的作業(yè)流程。例如,這個作業(yè)是一個Hive SQL任務(wù),用于導(dǎo)出Web應(yīng)用的用戶點(diǎn)擊數(shù)據(jù):

beeline -u "jdbc:hive2://192.168.1.1:10006" --outputformat=csv2 -e "select * from database.user-click" > user-click.csv 

這個示例作業(yè)是一個Python Tensorflow任務(wù),用于通過訓(xùn)練數(shù)據(jù)構(gòu)建機(jī)器學(xué)習(xí)模型。

該作業(yè)通過HTTP方式運(yùn)行。首先,我們運(yùn)行該作業(yè):
通過HTTP方式運(yùn)行Python Tensorflow作業(yè)

curl --request POST -H "Authorization: ${ARGO_TOKEN}" -k \
       --url https://argo.abc.com/api/v1/workflows/argo \
       --header 'content-type: application/json' \
       --data '{
                "namespace": "argo",
                "serverDryRun": false,
                "workflow": {
                "metadata": {
                    "name": "python-tensorflow-job",
                    "namespace": "argo"
                },
                "spec": {
                    "templates": [
                    {
                        "name": "python-tensorflow",
                        "container": {
                        "image": "tensorflow/tensorflow:2.9.1",
                        "command": [
                            "python"
                        ],
                        "args": [
                            "training.py"
                        ],
                        "resources": {}
                        }
                    }
                    ],
                    "entrypoint": "python-tensorflow",
                    "serviceAccountName": "argo",
                    "arguments": {}
                   }
                }
               }'

然后我們可以檢查工作信息和狀態(tài):

#Http way to check the Python Tensorflow job information and status
curl --request GET -H "Authorization: ${ARGO_TOKEN}" -k \
       --url https:/argo.abc.com/api/v1/workflows/argo/python-tensorflow-job

從HDFS升級到S3文件技術(shù)

分布式算法是云原生技術(shù)領(lǐng)域之一,比如谷歌的Kubeflow技術(shù),它完美地結(jié)合了TensorFlow和Kubernetes。分布式算法通常使用文件,而S3是存儲大型數(shù)據(jù)文件的事實標(biāo)準(zhǔn),這些文件可以很容易地訪問。

當(dāng)然,Apache DolphinScheduler還集成了MinIO技術(shù),通過簡單的配置可以實現(xiàn)S3文件管理。

首先,通過修改Helm value.yaml文件中的configmap部分,將其指向一個MinIO服務(wù)器。

configmap:
  DOLPHINSCHEDULER_OPTS: ""
  DATA_BASEDIR_PATH: "/tmp/dolphinscheduler"
  RESOURCE_STORAGE_TYPE: "S3"
  RESOURCE_UPLOAD_PATH: "/dolphinscheduler"
  FS_DEFAULT_FS: "s3a://dfs"
  FS_S3A_ENDPOINT: "http://192.168.1.100:9000"
  FS_S3A_ACCESS_KEY: "admin"
  FS_S3A_SECRET_KEY: "password"

在MinIO中存儲文件的桶的名稱稱為“dolphinscheduler”。用戶通過DolphinScheduler UI上傳的共享文件存儲在這個文件夾中。

總結(jié)

作為一款新一代的云原生大數(shù)據(jù)工具,Apache DolphinScheduler 有望在將來與 Kubernetes 生態(tài)系統(tǒng)中更多優(yōu)秀的工具和功能集成,以滿足多樣化的用戶群體和場景需求。

將來的規(guī)劃路線包括下邊:

  • 使用 sidecar 定期刪除 worker 作業(yè)日志,實現(xiàn)輕松的運(yùn)維管理

  • 與 Argo Workflows 更深入地集成,用戶可以通過 API、CLI 等在 Apache DolphinScheduler 中調(diào)用 Argo Workflows 進(jìn)行單一作業(yè)、DAG 作業(yè)和定期作業(yè)

  • 使用 HPA(Horizontal Pod Autoscaling)自動調(diào)整 DolphinScheduler 的任何組件的規(guī)模,實現(xiàn)更具彈性的運(yùn)行環(huán)境,并處理不確定的工作負(fù)載

  • 集成 Spark 操作器和 Flink 操作器,進(jìn)行全面的云原生分布式計算

  • 實現(xiàn)多云和多集群的分布式作業(yè)調(diào)度,并加強(qiáng)無服務(wù)器和 FAAS 類架構(gòu)屬性。

通過引入云原生技術(shù)和GitOps流程,Apache DolphinScheduler不僅提升了其部署和運(yùn)維的效率,也增強(qiáng)了其在多樣化和高變性任務(wù)處理上的能力。

未來,隨著與Kubernetes生態(tài)系統(tǒng)中更多優(yōu)秀工具和功能的集成,Apache DolphinScheduler預(yù)計將為廣泛的用戶群體和場景需求提供支持。

本文由 白鯨開源 提供發(fā)布支持!文章來源地址http://www.zghlxwxcb.cn/news/detail-854713.html

到了這里,關(guān)于這篇 DolphinScheduler on k8s 云原生部署實踐,值得所有大數(shù)據(jù)人看!的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 3.2.0 終極預(yù)告!云原生支持新增 Spark on k8S 支持

    3.2.0 終極預(yù)告!云原生支持新增 Spark on k8S 支持

    視頻貢獻(xiàn)者 | 王維饒 視頻制作者 | 聶同學(xué) 編輯整理 | Debra Chen Apache DolphinScheduler 3.2.0 版本將發(fā)布,為了讓大家提前了解到此版本更新的主要內(nèi)容,我們已經(jīng)制作了幾期視頻和內(nèi)容做了大致介紹,包括《重磅預(yù)告!Apache DolphinScheduler 3.2.0 新功能“劇透”》、《3.2.0 版本預(yù)告!

    2024年02月11日
    瀏覽(17)
  • 云原生之深入解析Flink on k8s的運(yùn)行模式與實戰(zhàn)操作

    Flink 核心是一個流式的數(shù)據(jù)流執(zhí)行引擎,并且能夠基于同一個 Flink 運(yùn)行時,提供支持流處理和批處理兩種類型應(yīng)用。其針對數(shù)據(jù)流的分布式計算提供了數(shù)據(jù)分布,數(shù)據(jù)通信及容錯機(jī)制等功能。 Flink 官網(wǎng) 不同版本的文檔 flink on k8s 官方文檔 GitHub 地址 官方文檔 Flink on yarn 有三

    2024年02月13日
    瀏覽(95)
  • doris on k8s 的安裝部署

    doris on k8s 的安裝部署

    官方已更新Operator部署方式,最新部署方式參考 官方文檔 1. 按照官網(wǎng)提供地址下載部署文件 2. 修改內(nèi)核配置 3. 根據(jù)服務(wù)器環(huán)境,修改doris_be.yml文件。 4. 根據(jù)服務(wù)器環(huán)境,修改doris_follower.yml文件 5. 創(chuàng)建服務(wù)用于外部連接doris-svc.yaml 6. 部署 7. 訪問及使用, 默認(rèn)賬號為root,無密

    2024年02月15日
    瀏覽(44)
  • Raft Kafka on k8s 部署實戰(zhàn)操作

    Raft Kafka on k8s 部署實戰(zhàn)操作

    部署 Raft Kafka(Kafka 3.3.1 及以上版本引入的 KRaft 模式)在 Kubernetes (k8s) 上,可以簡化 Kafka 集群的管理,因為它不再依賴于 Zookeeper。 關(guān)于Raft Kafka 介紹和物理機(jī)部署可以參考我以下文章: 為何Kafka在2.8版本開始會“拋棄”Zookeeper? 深度解析 Raft 協(xié)議與KRaft實戰(zhàn)演示 以下是部署

    2024年04月09日
    瀏覽(31)
  • 【云原生】k8s組件&架構(gòu)介紹與K8s最新版部署

    【云原生】k8s組件&架構(gòu)介紹與K8s最新版部署

    ? ? ? 個人主頁: 征服bug-CSDN博客 kubernetes專欄: kubernetes_征服bug的博客-CSDN博客? 目錄 1 集群組件 1.1 控制平面組件(Control Plane Components) 1.2 Node 組件 1.3 插件 (Addons) 2 集群架構(gòu)詳細(xì) 3 集群搭建[重點(diǎn)] 3.1 minikube 3.2 裸機(jī)安裝 集群組件 核心概念 集群安裝 集群 cluster : 將同一個

    2024年02月14日
    瀏覽(89)
  • 【云原生】Kubeadm部署k8s

    【云原生】Kubeadm部署k8s

    在所有節(jié)點(diǎn)上安裝Docker和kubeadm 部署Kubernetes Master 部署容器網(wǎng)絡(luò)插件 部署 Kubernetes Node,將節(jié)點(diǎn)加入Kubernetes集群中 部署 Dashboard Web 頁面,可視化查看Kubernetes資源 實驗環(huán)境 服務(wù)器 IP地址 主要組件 master 192.168.10.130 docker/kubeadm/kubelet/kubectl/flannel node01 192.168.10.133 docker/kubeadm/kubel

    2024年02月04日
    瀏覽(23)
  • Flink 內(nèi)容分享(十九):理想汽車基于Flink on K8s的數(shù)據(jù)集成實踐

    Flink 內(nèi)容分享(十九):理想汽車基于Flink on K8s的數(shù)據(jù)集成實踐

    目錄 數(shù)據(jù)集成的發(fā)展與現(xiàn)狀 數(shù)據(jù)集成的落地實踐 1. 數(shù)據(jù)集成平臺架構(gòu) 2. 設(shè)計模型 3. 典型場景 4. 異構(gòu)數(shù)據(jù)源 5. SQL 形式的過濾條件 數(shù)據(jù)集成云原生的落地實踐 1. 方案選型 2. 狀態(tài)判斷及日志采集 3. 監(jiān)控告警 4. 共享存儲 未來規(guī)劃 理想汽車數(shù)據(jù)集成的發(fā)展經(jīng)歷了四個階段:

    2024年02月01日
    瀏覽(24)
  • 【云原生K8s】二進(jìn)制部署單master K8s+etcd集群

    【云原生K8s】二進(jìn)制部署單master K8s+etcd集群

    ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? mater節(jié)點(diǎn) master01 192.168.190.10 kube-apiserver kube-controller-manager kube-scheduler etcd ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? node節(jié)點(diǎn) node01 192.168.190.20 kubelet kube-proxy docker (容器引擎) node02 192.168.190.30 kubelet kube-proxy do

    2024年02月14日
    瀏覽(30)
  • 【云原生篇】K8S部署全面指南

    部署Kubernetes(K8s)有多種方式,可以根據(jù)組織的需求、基礎(chǔ)設(shè)施和資源來選擇最合適的部署方法。以下是一些主流的Kubernetes部署方式: 1. 手動部署 kubeadm :Kubernetes官方提供的工具,可以幫助你快速部署和配置Kubernetes集群。它適合于學(xué)習(xí)和小規(guī)模生產(chǎn)環(huán)境,但對于大規(guī)模部

    2024年04月10日
    瀏覽(19)
  • 37.云原生之springcloud+k8s+GitOps+istio+安全實踐

    37.云原生之springcloud+k8s+GitOps+istio+安全實踐

    云原生專欄大綱 安裝gitlab,將https://gitee.com/zhouwei1996/spring-cloud-bookinfo.git遷移至gitlab gitlab中創(chuàng)建全局變量,如鏡像倉庫賬號密碼,保證gitlab-ci.yaml中內(nèi)容安全 共享runner創(chuàng)建,獲取token如下:glrt-wfzAecJmszsZb3GorS8J 安裝gitlab-runner,參考:22.云原生之GitLab CICD實戰(zhàn)及解析 修改ConfigM

    2024年03月22日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包