天天看點

Hadoop叢集伸縮難?DLA Spark助力叢集快速加彈性

1. 背景介紹

大資料時代早期,Apache Hadoop 是建構具有海量存儲能力資料倉庫的首選方案,許多企業使用者采用在雲上購買ECS,自建Hadoop叢集來存儲和處理資料。Apache Spark作為一個記憶體計算架構,具有流處理、批處理,圖計算,機器學習,SQL查詢等多種能力,社群活躍度高,并且Spark天然支援Hadoop資料源,可以完美的融入Hadoop生态,提供高效的計算能力。Hadoop+Spark成為大資料領域的明星,被廣泛用于離線大資料的挖掘。

雲上的Hadoop叢集通常是以ECS加雲盤(或本地盤)配合一系列開源元件組成。随着業務的增長,對計算能力的需求不斷地提升,尤其是在業務高峰期,資料大量湧入,為保證服務的穩定性和及時性,需要及時的增加節點來滿足業務需求。業務低峰期時,希望能及時的回收多餘的計算資源,避免資源的浪費。這就要求Hadoop叢集具有一定的彈性能力,能根據業務量及時地擴(縮)容相應的計算資源。彈性能力是雲計算的趨勢,可以給使用者帶來更低成本的計算。但是如何快捷穩定地給已有的計算叢集增加彈性是一個讓使用者頭痛的問題。

2. 傳統彈性方案的問題

由于曆史原因,使用者的很多資料和業務放在自建Hadoop叢集之上。随着業務發展,或者業務高峰期到來,對叢集計算力需求增加,通常使用者會采取擴容Hadoop叢集節點,以增加可用計算資源池。雖然擴容機器可以一定程度的滿足計算力的需求,但是會遇到以下的幾個痛點。

  • 擴容慢: 通常一個比較大的叢集擴容,為了避免對已有線上業務的影響,需要選擇在業務低峰期擴容,且擴容時,由于需要在新的節點上部署各個元件,時間短則十幾分鐘,多則數小時,很難應對業務的變化。
  • 縮容難: 由于業務高峰期隻是一段時間,我們真正需要額外計算資源的時間也就隻有一段時間,或者多出來的業務并不是每時每刻的都在執行,而是按照一定的時間間隔去執行。如果不及時縮容,就造成了計算的不飽和,帶了對計算資源的浪費,增加了企業的成本開銷。而擴容出來的節點,由于已經部署上了許多元件,縮容前需要預先退出這些元件,步驟繁瑣,容易出錯。
  • 彈不出: 使用者進行擴容時,按照ECS粒度,買一批ECS節點加入到現有計算叢集的資源池。購買的ECS規格往往較大,受雲資源碎片化的影響,有時很難滿足使用者對一批大規格ECS資源的請求,導緻計算資源彈不出,無法完成對叢集的擴容。

3. DLA Spark快速彈性方案

DLA團隊将Serverless、雲原生、Spark技術優勢深度整合到一起,提供Serverless Spark産品,可以無縫連接配接使用者Hadoop叢集,快捷穩定地為傳統Hadoop叢集增加彈性算力。下面我們将介紹DLA Serverless Spark是如何解決使用者上述痛點問題的。

  • 免運維的虛拟計算叢集
Hadoop叢集伸縮難?DLA Spark助力叢集快速加彈性

上圖是傳統的Hadoop叢集中的Spark與DLA Spark的架構對比。圖中左邊部分是傳統Spark叢集,由多個ECS組成,叢集内部擁有一套完整的Spark管控,計算程序和管控程序部署在各個ECS上,每個叢集的計算資源池相對固定,如果需要更多的計算資源則需要擴容更多的計算節點,需要縮容則需要關閉對應ECS上的服務,然後釋放ECS資源。

圖中右邊是DLA Spark,相對于傳統的叢集模式,DLA Spark抽象出一個虛拟叢集的概念,虛拟叢集并沒有實際的計算資源,它隻是承載使用者對作業進行控制的一些配置,包括計算資源的配置、作業通用參數的配置等。建立虛拟叢集不需要任何費用,使用者簡單地選擇虛拟叢集記憶體和CPU的上限後,即可快速的建立一個虛拟叢集,并往虛拟叢集送出作業。DLA Spark是多租戶化的,每個使用者可擁有多個自己的虛拟叢集,無需使用者進行運維。

  • 計算程序級别的彈性粒度

DLA Spark基于Aliyun Kubernetes雲原生技術深度定制, 實作了計算程序級别的彈性粒度,可更高效地應對雲資源碎片化問題。使用者通過作業指定的資源規格彈性拉起計算程序,計算程序運作安全容器中。安全容器是基于阿裡雲的底座ECS&ACK&ECI,與阿裡雲IAAS資源大池打通,本Region跨可用區資源排程,保障計算資源的供給, 支援1分鐘内彈300個安全容器。

  • 快速擴縮容

由于DLA Spark虛拟叢集化的設計,計算程序在作業啟動過程中動态拉起,使用者可以很友善地對虛拟叢集的規格進行擴縮容,隻需要在控制台上進行資源配置即可。值得注意的是,虛拟叢集中的計算程序使用完畢後就會自動釋放,無需使用者關心計算資源的生命周期。虛拟叢集是按量付費,即隻有作業真正的送出到虛拟叢集運作之後,才開始按照資源使用時間計費,作業運作完畢即停止收費,不存在對計算資源的浪費。

  • 無縫打通使用者Hadoop叢集
Hadoop叢集伸縮難?DLA Spark助力叢集快速加彈性

如上圖所示,DLA Spark可以通過挂載使用者VPC空間下的彈性網卡,無縫對接使用者自建Hadoop叢集。DLA Spark的Driver和Executor運作在安全容器中,該容器執行個體動态挂載使用者VPC空間下的虛拟網卡,來通路使用者VPC下的服務(如 HBase,Hive,HDFS等)。挂載了彈性網卡的容器執行個體就如同運作在使用者自建Hadoop叢集中的ECS執行個體一樣,網絡帶寬同樣是VPC内網帶寬。虛拟網卡的生命周期跟Spark程序的生命周期一緻,作業結束後,所有網卡也會相應釋放。

值得一提的是,彈性網卡,是一種免費的技術,使用者使用彈性網卡通路Hadoop叢集資料不需要花費額外的費用。打通使用者Hadoop叢集配置簡單,使用者運作作業時,如需為Serverless Spark計算程序挂載虛拟網卡,隻需要在作業配置中配置上屬于該VPC的安全組和虛拟交換機即可。更友善地,如果使用者某個ECS本來就可以通路目标資料,那麼讓DLA Spark**配置該ECS所在的安全組和虛拟交換機即可。

4. DLA Spark的成本效益優勢

  • 性能相當,資源使用率高
Hadoop叢集伸縮難?DLA Spark助力叢集快速加彈性

如上圖,我們通過運作典型的ETL場景,1TB資料TeraSort,來開箱測試社群版Spark和DLA Serverless Spark的性能,需要說明的是,本測試中DLA Serverless Spark通過彈性網卡直接讀寫使用者Hadoop叢集的資料,社群版Spark部署在與Hadoop叢集相同的ECS上。從上圖中可以看到,兩者性能基本持平。

由于DLA Spark是按照計算程序拉起的,運作在安全容器中,使用者隻需要關心作業程序的規格和個數即可,拉起的資源全部用于DLA Spark的運作。而自建Hadoop叢集由于是ECS級别的,需要預留一定資源用于運作NodeManager等元件,會存在一定的資源備援。我們可以看到自建Hadoop叢集要滿足Driver 需要4核16G,20個2核8G的Executor的配置需要購買6台8核32G的ECS。 是以相比之下DLA Spark的資源使用率更高。

**

  • 快速彈性,節省使用者成本
Hadoop叢集伸縮難?DLA Spark助力叢集快速加彈性

一般而言,使用者的業務量是随着時間變化的,當自建Hadoop叢集計算資源不足時,使用者可以送出作業到虛拟叢集中,快速拉起DLA Spark進行計算,當業務低谷時,虛拟機群停止接收作業,不收取任何費用。我們還是以上述TeraSort為例,使用者自建叢集包月,DLA Spark按量付費的情況。DLA Saprk比起自建Hadoop叢集,一天運作十次TeraSort時,成本可節約72%,一天運作三十次TeraSort時,成本可節約16%。使用者可以将自建Hadoop叢集與DLA Spark混合使用,在性能不降低的情況下做到對計算資源的快速彈性伸縮,降低使用者計算成本。

5. 總結與展望

DLA團隊将Serverless、雲原生、Spark技術優勢深度整合到一起,打造計算程序級别彈性的免運維Spark計算服務,可以很好地解決自建Hadoop叢集計算資源擴(縮)容難,計算資源使用率低的問題,并且可以打通使用者VPC下的各類存儲引擎,提供極緻的彈性計算體驗,幫助使用者降低計算成本。

注意: 阿裡雲DLA Spark專家組特地建立了專門的釘釘群,幫助大家答疑解惑,用釘釘掃描左側二維碼即可加入。右側是我們雲原生資料湖的公衆号。

Hadoop叢集伸縮難?DLA Spark助力叢集快速加彈性

注:DLA Serverless Spark

控制台使用連結

,DLA Serverless Spark

幫助文檔

繼續閱讀