Spark支持3種集群管理器(Cluster Manager),分別為:
1. Standalone:獨立模式,Spark原生的簡單集群管理器,自帶完整的服務,可單獨部署到一個集群中,無需依賴任何其他資源管理系統,使用Standalone可以很方便地搭建一個集群;
2. Apache Mesos:一個強大的分布式資源管理框架,它允許多種不同的框架部署在其上,包括yarn;
3. Hadoop YARN:統一的資源管理機制,在上面可以運行多套計算框架,如map reduce、storm等,根據driver在集群中的位置不同,分為yarn client和yarn cluster。
編寫一個linux程序、實際上,除了上述這些通用的集群管理器外,Spark內部也提供了一些方便用戶測試和學習的簡單集群部署模式。由于在實際工廠環境下使用的絕大多數的集群管理器是Hadoop YARN,因此我們關注的重點是Hadoop YARN模式下的Spark集群部署。
Spark的運行模式取決于傳遞給SparkContext的MASTER環境變量的值,個別模式還需要輔助的程序接口來配合使用,目前支持的Master字符串及URL包括:
用戶在提交任務給Spark處理時,以下兩個參數共同決定了Spark的運行方式。
· –master MASTER_URL :決定了Spark任務提交給哪種集群處理。
· –deploy-mode DEPLOY_MODE:決定了Driver的運行方式,可選值為Client或者Cluster。
用戶使用手冊由哪些人員編寫、2.1 Standalone模式運行機制
Standalone集群有四個重要組成部分,分別是:
1) Driver:是一個進程,我們編寫的Spark應用程序就運行在Driver上,由Driver進程執行;
2) Master(RM):是一個進程,主要負責資源的調度和分配,并進行集群的監控等職責;
3) Worker(NM):是一個進程,一個Worker運行在集群中的一臺服務器上,主要負責兩個職責,一個是用自己的內存存儲RDD的某個或某些partition;另一個是啟動其他進程和線程(Executor),對RDD上的partition進行并行的處理和計算。
java編寫用戶界面程序基礎。4) Executor:是一個進程,一個Worker上可以運行多個Executor,Executor通過啟動多個線程(task)來執行對RDD的partition進行并行計算,也就是執行我們對RDD定義的例如map、flatMap、reduce等算子操作。
2.1.1 Standalone Client模式
在Standalone Client模式下,Driver在任務提交的本地機器上運行,Driver啟動后向Master注冊應用程序,Master根據submit腳本的資源需求找到內部資源至少可以啟動一個Executor的所有Worker,然后在這些Worker之間分配Executor,Worker上的Executor啟動后會向Driver反向注冊,所有的Executor注冊完成后,Driver開始執行main函數,之后執行到Action算子時,開始劃分stage,每個stage生成對應的taskSet,之后將task分發到各個Executor上執行。
2.1.2 Standalone Cluster模式
在Standalone Cluster模式下,任務提交后,Master會找到一個Worker啟動Driver進程, Driver啟動后向Master注冊應用程序,Master根據submit腳本的資源需求找到內部資源至少可以啟動一個Executor的所有Worker,然后在這些Worker之間分配Executor,Worker上的Executor啟動后會向Driver反向注冊,所有的Executor注冊完成后,Driver開始執行main函數,之后執行到Action算子時,開始劃分stage,每個stage生成對應的taskSet,之后將task分發到各個Executor上執行。
用戶用高級語言編寫的程序稱為,注意,Standalone的兩種模式下(client/Cluster),Master在接到Driver注冊Spark應用程序的請求后,會獲取其所管理的剩余資源能夠啟動一個Executor的所有Worker,然后在這些Worker之間分發Executor,此時的分發只考慮Worker上的資源是否足夠使用,直到當前應用程序所需的所有Executor都分配完畢,Executor反向注冊完畢后,Driver開始執行main程序。
2.2 YARN模式運行機制
2.2.1 YARN Client模式
在YARN Client模式下,Driver在任務提交的本地機器上運行,Driver啟動后會和ResourceManager通訊申請啟動ApplicationMaster,隨后ResourceManager分配container,在合適的NodeManager上啟動ApplicationMaster,此時的ApplicationMaster的功能相當于一個ExecutorLaucher,只負責向ResourceManager申請Executor內存。
ResourceManager接到ApplicationMaster的資源申請后會分配container,然后ApplicationMaster在資源分配指定的NodeManager上啟動Executor進程,Executor進程啟動后會向Driver反向注冊,Executor全部注冊完成后Driver開始執行main函數,之后執行到Action算子時,觸發一個job,并根據寬依賴開始劃分stage,每個stage生成對應的taskSet,之后將task分發到各個Executor上執行。
用戶編寫程序所使用的地址。2.2.2 YARN Cluster模式
在YARN Cluster模式下,任務提交后會和ResourceManager通訊申請啟動ApplicationMaster,隨后ResourceManager分配container,在合適的NodeManager上啟動ApplicationMaster,此時的ApplicationMaster就是Driver。
Driver啟動后向ResourceManager申請Executor內存,ResourceManager接到ApplicationMaster的資源申請后會分配container,然后在合適的NodeManager上啟動Executor進程,Executor進程啟動后會向Driver反向注冊,Executor全部注冊完成后Driver開始執行main函數,之后執行到Action算子時,觸發一個job,并根據寬依賴開始劃分stage,每個stage生成對應的taskSet,之后將task分發到各個Executor上執行。
(本文為系列文章,關注作者閱讀其它部分內容,總有一篇是你欠缺的,技術無止境,且學且珍惜!!!)
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态