Empathy公司平臺工程技術負責人Ramiro Alvarez Fernandez對於如何在Kubernetes上使用Spark以擺脫對雲端計算提供商的依賴,以及在Kubernetes上運行Apache Spark進行了介紹,並分
2021-08-09 12:40:30
Empathy公司平臺工程技術負責人Ramiro Alvarez Fernandez對於如何在Kubernetes上使用Spark以擺脫對雲端計算提供商的依賴,以及在Kubernetes上運行Apache Spark進行了介紹,並分享了這一過程的挑戰、架構和解決方案等詳細資訊。
面臨的挑戰
對於Empathy公司來說,生產中運行的所有程式碼都必須與雲端計算無關。Empathy公司通過使用Spark解決方案克服了之前對雲端計算提供商提供的解決方案的依賴:例如,EMR(AWS場景)、Dataproc(GCP場景)和HDInsight(Azure場景)。
這些雲端計算提供商的不同解決方案提供了一種在雲上部署Spark的簡單方法。但是,當企業在擴大規模時會面臨一些限制,從而需要解決以下這些問題:
如何編排作業?
如何分配Spark作業?
如何安排夜間工作?
工作程式碼配置在哪裡?
如何傳播更改?
可以重複使用作業定義嗎?模板是什麼?
能否通過程式碼引用作業?
可以從本地主機測試嗎?
這些是在實施Spark作業時面臨的常見問題。使用Kubernetes解決這些問題可以節省工作人員的時間和精力,並提供更好的體驗。
在Kubernetes上運行Apache Spark可以提供以下好處:
可擴展性:新解決方案應可擴展以滿足任何需求。
可靠性:新解決方案應該監控計算節點,並在出現故障時自動終止和替換例項。
可遷移性:新解決方案應該可以部署在任何雲端計算解決方案中,避免對特定雲端計算提供商的依賴。總體而言,這種方法可以節省考慮與不同雲端計算服務提供商協調、分發和排程Spark作業的時間。
成本效益:企業不需要採用雲端計算提供商的服務,因此可以節省這些成本。
監控:新解決方案應該包括特別監測。
Kubernetes生態系統:與其他工作負載一樣使用通用生態系統,並提供持續部署、RBAC、專用節點池、自動縮放等。
其好處與Empathy公司針對Kubernetes上運行的Apache Flink的解決方案相同。
在Kubernetes運行上的Apache Spark
Apache Spark是用於大資料處理的統一分析引擎,特別適用於分散式處理。Spark用於機器學習,是目前最大的技術趨勢之一。
Apache Spark架構
Spark Submit可用於將Spark應用程式直接提交到Kubernetes叢集。其流程如下:
(1)Spark Submit從客戶端傳送到主節點中的Kubernetes API伺服器。
(2)Kubernetes將排程一個新的Spark Driver pod。
(3)Spark Driver pod將與Kubernetes通訊以請求Spark executor pod。
(4)新的executor pod將由Kubernetes排程。
(5)一旦新的executor pod開始運行,Kubernetes會通知Spark Driver pod新的Spark executor pod已經準備就緒。
(6)Spark Driver pod將在新的Spark executor pod上排程任務。
Spark提交流程圖
可以使用SparkSubmit(普通方式)或使用Spark Operator來安排Spark應用程式。
Spark Submit
Spark Submit是用於提交Spark應用程式並在Spark叢集上啟動應用程式的指令碼。其具有的一些出色的功能包括:
Kubernetes版本:不依賴於Kubernetes版本。
Native Spark:它包含在Spark映像中。
非聲明性設定:需要計劃如何編排作業。
定義所需的K8s資源:掛載配置對映、卷、設定反關聯、節點選擇器等。
不需要CRD:不需要Kubernetes自定義資源。
Spark Operator
Spark Operator項目由谷歌公司開發,現在是一個開源項目。它使用Kubernetes自定義資源來指定、運行和顯示Spark應用程式的狀態。其具有的一些出色的功能包括:
聲明性:應用程式規範和通過自定義資源管理應用程式。
計劃重啟:可配置的重啟策略。
Kubernetes資源自動定義:支援掛載configmaps和volumes,設定pod關聯性等。
依賴項注入:直接注入依賴項。
指標:支援收集應用程式級指標和驅動程式/執行程式指標並將其匯出到Prometheus。
開源社群:每個人都可以做出貢獻。
Spark Submit vs Spark Operator的主要命令
上圖顯示了Spark Submit與Spark Operator的主要命令。
Empathy公司的解決方案更喜歡採用Spark Operator,因為它允許比Spark Submit更快的迭代,在Spark Submit中,必須為每個用例創建自定義Kubernetes清單。
解決方案的詳細資訊
為了解決挑戰部分提出的問題,ArgoCD和Argo Workflows可以提供幫助,同時還有CNCF項目的支援。例如,可以從Kubernete排程最喜歡的Spark應用程式工作負載,以創建Argo Workflows並定義順序作業。
流程圖如下:
在git上定義更改。
ArgoCD將git更改同步到Kubernetes叢集(例如,創建一個Argo工作流模板)。
Argo Workflows模板允許為多個Spark作業自定義輸入和重用配置,並基於Argo Workflows創建夜間作業。
解決方案流程圖
ArgoCD
ArgoCD是Kubernetes的GitOps持續交付工具。其主要好處是:
GitOps:使用git儲存庫作為定義所需應用程式狀態的真實來源。
聲明式設定:git上的一切。
可追溯性和自動化:應用程式部署可以跟蹤分支、標籤等的更新。應用程式部署將根據特定的目標環境實現自動化。
WebUI:用於檢查部署的工作負載的外觀良好的使用者介面。
Kubernetes體現了Kustomize、Helm、ksonnet、jsonnet等。可以進行選擇。
更詳細的資訊可以在其官方文件中找到。
Argo Workflows
Argo Workflows是Kubernetes的工作流解決方案。主要好處是:
作業編排:這允許按順序編排作業或創建自定義DAG。
排程工作流:Cron native.。
Spark應用程式:在任何Kubernetes叢集上輕鬆編排Spark應用程式。
工作流模板:針對不同用例重複使用模板。輸入可以參數化。
WebUI:用於檢查工作流程進度的出色視覺使用者介面。
更詳細的資訊可以在其官方文件中找到。
監測
一旦Prometheus掌握了這些指標,就需要一些Grafana儀表板進行監測。Apache Spark的自定義Grafana儀表板基於以下社群儀表板:
ArgoCD儀表板
Argo Workflow儀表板
Apache Spark操作員儀表板
Apache Spark應用程式儀表板
結語
Empathy公司選擇Spark Operator、ArgoCD和Argo Workflows在Kubernetes上創建Spark應用程式工作流解決方案,並使用GitOps傳播更改。本文所展示的設定已經在生產環境中使用了大約一個月的時間,並且反饋很好。每個使用者都對工作流程感到滿意,而擁有一個適用於任何雲提供商的單一工作流程,可以擺脫了單個雲端計算提供商的鎖定。
如果親自進行測試,需要按照這些實際操作示例並享受從本地主機部署一些Spark應用程式的樂趣,以及本指南中描述的所有設定:Hands-on Empathy Repo。
雖然還有很長的路要走,但會有更多的收穫。希望這一創新能幫助企業變得更加與雲無關。
相關文章
Empathy公司平臺工程技術負責人Ramiro Alvarez Fernandez對於如何在Kubernetes上使用Spark以擺脫對雲端計算提供商的依賴,以及在Kubernetes上運行Apache Spark進行了介紹,並分
2021-08-09 12:40:30
近年來,隨著短視訊創作、創意設計、遊戲直播等為代表的內容行業興起,吸引著越來越多的專業人才與團隊加入。英特爾做過統計,目前世界上有超過一億的人正在從事內容創作的工作,並
2021-08-09 12:39:58
在7月初,松下釋出新款M43鏡頭Leica DG Vario-Summilux 25-50mm F1.7 ASPH(H-X2550),它是繼Leica DG Vario-Summilux 10-25mm F1.7 ASPH之後業界第二款恆定F1.7光圈鏡頭,覆蓋50mm
2021-08-09 12:39:26
目前有什麼好的LCD螢幕手機值得去入手的?LCD螢幕手機到底是不是符合我們的需求呢?實際上,LCD螢幕永不為奴,在我們看來這款手機的螢幕的特點實際上是符合我們的需求。相對於OLED
2021-08-09 12:39:16
說起鴻蒙系統相信我們大家都比較熟悉了,自2019年8月9日在東莞舉行華為開發者大會上正式釋出作業系統鴻蒙OS,就備受大家關注,特別是在今年的6月2日華為正式上線了鴻蒙系統,如今兩
2021-08-09 12:39:06
【電動狗】惠普電腦再上新,現已推出兩款星 13 Air 機型,搭載 AMD R5-5600U 和 R7-5800U 的版本首發價分別為 4999 元和 5499 元。該機採用了 13.3 英寸 2.5K 解析度的 16:10
2021-08-09 12:38:55