掃二維碼與項(xiàng)目經(jīng)理溝通
我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
譯文
作者:李睿 2021-08-09 09:00:00
開發(fā)
前端
云計(jì)算
Spark Empathy公司平臺工程技術(shù)負(fù)責(zé)人Ramiro Alvarez Fernandez對于如何在Kubernetes上使用Spark以擺脫對云計(jì)算提供商的依賴,以及在Kubernetes上運(yùn)行Apache Spark進(jìn)行了介紹,并分享了這一過程的挑戰(zhàn)、架構(gòu)和解決方案等詳細(xì)信息。

創(chuàng)新互聯(lián)擁有網(wǎng)站維護(hù)技術(shù)和項(xiàng)目管理團(tuán)隊(duì),建立的售前、實(shí)施和售后服務(wù)體系,為客戶提供定制化的網(wǎng)站建設(shè)、成都網(wǎng)站制作、網(wǎng)站維護(hù)、四川雅安電信機(jī)房解決方案。為客戶網(wǎng)站安全和日常運(yùn)維提供整體管家式外包優(yōu)質(zhì)服務(wù)。我們的網(wǎng)站維護(hù)服務(wù)覆蓋集團(tuán)企業(yè)、上市公司、外企網(wǎng)站、商城網(wǎng)站建設(shè)、政府網(wǎng)站等各類型客戶群體,為全球數(shù)千家企業(yè)提供全方位網(wǎng)站維護(hù)、服務(wù)器維護(hù)解決方案。
【51CTO.com快譯】Empathy公司平臺工程技術(shù)負(fù)責(zé)人Ramiro Alvarez Fernandez對于如何在Kubernetes上使用Spark以擺脫對云計(jì)算提供商的依賴,以及在Kubernetes上運(yùn)行Apache Spark進(jìn)行了介紹,并分享了這一過程的挑戰(zhàn)、架構(gòu)和解決方案等詳細(xì)信息。
對于Empathy公司來說,生產(chǎn)中運(yùn)行的所有代碼都必須與云計(jì)算無關(guān)。Empathy公司通過使用Spark解決方案克服了之前對云計(jì)算提供商提供的解決方案的依賴:例如,EMR(AWS場景)、Dataproc(GCP場景)和HDInsight(Azure場景)。
這些云計(jì)算提供商的不同解決方案提供了一種在云上部署Spark的簡單方法。但是,當(dāng)企業(yè)在擴(kuò)大規(guī)模時(shí)會(huì)面臨一些限制,從而需要解決以下這些問題:
這些是在實(shí)施Spark作業(yè)時(shí)面臨的常見問題。使用Kubernetes解決這些問題可以節(jié)省工作人員的時(shí)間和精力,并提供更好的體驗(yàn)。
在Kubernetes上運(yùn)行Apache Spark可以提供以下好處:
其好處與Empathy公司針對Kubernetes上運(yùn)行的Apache Flink的解決方案相同。
Apache Spark是用于大數(shù)據(jù)處理的統(tǒng)一分析引擎,特別適用于分布式處理。Spark用于機(jī)器學(xué)習(xí),是目前最大的技術(shù)趨勢之一。
Spark Submit可用于將Spark應(yīng)用程序直接提交到Kubernetes集群。其流程如下:
(1)Spark Submit從客戶端發(fā)送到主節(jié)點(diǎn)中的Kubernetes API服務(wù)器。
(2)Kubernetes將調(diào)度一個(gè)新的Spark Driver pod。
(3)Spark Driver pod將與Kubernetes通信以請求Spark executor pod。
(4)新的executor pod將由Kubernetes調(diào)度。
(5)一旦新的executor pod開始運(yùn)行,Kubernetes會(huì)通知Spark Driver pod新的Spark executor pod已經(jīng)準(zhǔn)備就緒。
(6)Spark Driver pod將在新的Spark executor pod上調(diào)度任務(wù)。
Spark提交流程圖
可以使用SparkSubmit(普通方式)或使用Spark Operator來安排Spark應(yīng)用程序。
Spark Submit是用于提交Spark應(yīng)用程序并在Spark集群上啟動(dòng)應(yīng)用程序的腳本。其具有的一些出色的功能包括:
Spark Operator項(xiàng)目由谷歌公司開發(fā),現(xiàn)在是一個(gè)開源項(xiàng)目。它使用Kubernetes自定義資源來指定、運(yùn)行和顯示Spark應(yīng)用程序的狀態(tài)。其具有的一些出色的功能包括:
Spark Submit vs Spark Operator的主要命令
上圖顯示了Spark Submit與Spark Operator的主要命令。
Empathy公司的解決方案更喜歡采用Spark Operator,因?yàn)樗试S比Spark Submit更快的迭代,在Spark Submit中,必須為每個(gè)用例創(chuàng)建自定義Kubernetes清單。
為了解決挑戰(zhàn)部分提出的問題,ArgoCD和Argo Workflows可以提供幫助,同時(shí)還有CNCF項(xiàng)目的支持。例如,可以從Kubernete調(diào)度最喜歡的Spark應(yīng)用程序工作負(fù)載,以創(chuàng)建Argo Workflows并定義順序作業(yè)。
流程圖如下:
解決方案流程圖
ArgoCD是Kubernetes的GitOps持續(xù)交付工具。其主要好處是:
更詳細(xì)的信息可以在其官方文檔中找到。
Argo Workflows是Kubernetes的工作流解決方案。主要好處是:
更詳細(xì)的信息可以在其官方文檔中找到。
一旦Prometheus掌握了這些指標(biāo),就需要一些Grafana儀表板進(jìn)行監(jiān)測。Apache Spark的自定義Grafana儀表板基于以下社區(qū)儀表板:
Empathy公司選擇Spark Operator、ArgoCD和Argo Workflows在Kubernetes上創(chuàng)建Spark應(yīng)用程序工作流解決方案,并使用GitOps傳播更改。本文所展示的設(shè)置已經(jīng)在生產(chǎn)環(huán)境中使用了大約一個(gè)月的時(shí)間,并且反饋很好。每個(gè)用戶都對工作流程感到滿意,而擁有一個(gè)適用于任何云提供商的單一工作流程,可以擺脫了單個(gè)云計(jì)算提供商的鎖定。
如果親自進(jìn)行測試,需要按照這些實(shí)際操作示例并享受從本地主機(jī)部署一些Spark應(yīng)用程序的樂趣,以及本指南中描述的所有設(shè)置:Hands-on Empathy Repo。
雖然還有很長的路要走,但會(huì)有更多的收獲。希望這一創(chuàng)新能幫助企業(yè)變得更加與云無關(guān)。

我們在微信上24小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流