上帝有個夢想-主從結構

從前上帝有個夢想,為了完成它,就創造了人類並給了他們夢想。

作為一個有夢想的程序你想用電腦實現創造新世界的夢想。

零、主從結構

上帝看在你是個程序員的分上給了你一些機器幫你完成夢想。

0.1 你是個牛B的程序員

你是個牛B的程序員你充分利用自己的大腦,把你的夢想細分成了很多很多小任務,每個機器都給它分配點任務,然後收集結果完成你的千年大計。這時你得知道所有機器得信息,和你分配的所有的任務狀態。


上帝有個夢想-主從結構


0.2 大腦不夠用

雖然你是個牛B的程序員但是你發現你的大腦不夠用了,不僅要細分任務,還要管理那麼多機器的死活,還有任務的完成情況。於是你自然的想到可以找了個機器幫你分擔工作,這個機器稱它為master,它幫你分配任務到其他機器,管理任務回收結果,你只需要專心考慮你的夢想應該劃分成什麼樣的任務來完成,並把任務交代給機器master。


上帝有個夢想-主從結構


0.3 master 會掛

你發現機器master可能會掛掉,掛掉了你交代給它的任務就丟了,你還得重新規劃任務,於是你找了個機器master_backup,讓master把所有數據都和它同步,這樣一旦master掛了,master_backup就能馬上頂替master的工作,等master恢復再和master_backup同步數據,保證總是有個機器替你幹活,讓你安心了許多。

0.4 主從

由於個體能力有限,社會為了發展都會朝著分工協作的方向發展。

機器多了也一樣需要分工協作,但機器不像人那麼智能,分工可以,協作就很難了。

最簡單的協作模式就是有個統一的master來分配任務,也就是協作點集中在了一臺中心節點,它和其他節點互聯,它擁有所有機器的信息。其他的機器只接收來自master的指令,master讓它幹啥就幹啥。

這樣的模式優點在於分工明確實現起來方便簡單。所有的機器只需要和master保持連接。

但是缺點是集中到了一臺機器上,機器多了容易master壓力會很大,master故障那麼其他的機器也做不了什麼事了。

一、hadoop中的主從結構

hadoop 包含HDFS、YARN、MapReduce這三個核心組件,其實都是主從結構的。

1.1 HDFS:分佈式文件系統。

主節點叫namenode儲存元數據,擁有所有機器的信息,所有數據的元數據,比如這個數據存在哪些節點、存了多少副本等這些信息。集中的管理數據,比如新來的數據應該放哪兒。

從節點datanode管理自己機器上數據的存放,負責讀寫數據。

當你使用client去讀取hdfs的文件的時候,會先去namenode拿到相關的信息,再到對應的節點上讀取數據。

1.2 YARN:資源管理器

Yarn就像操作系統一樣需要管理計算機資源(cpu,內存、磁盤、網絡等),還需要管理上面使用資源的任務。那我們就分系統層(資源和應用管理)和應用層(單個應用的運行)來說,

1.2.1 yarn系統層面的主從結構。

主節點ResourceManager(RM),有兩個主要的組件 分別管理資源和應用。

1). Scheduler 調度器,管理資源,給應用分配資源,讓任務滿足各種資源的限制。也就是它會有所有機器的資源信息,等待應用申請資源,並將資源抽象成一個個container分配下去。


上帝有個夢想-主從結構


2). ApplicationsManager :接受client提交的應用,為應用向RM申請一個container做ApplicationMaster,之後就只管理ApplicationMaster了。


上帝有個夢想-主從結構


從節點NodeManager(NM),管理好自己機器上運行的container,主動上報自己的資源,以及container的狀態等信息。

1.2.2 Yarn上的應用層面的主從結構

上面說到一個AppManager會給一個應用申請第一個container做AppMaster,而AppMater對於單個應用來說就是主節點了,它會去RM申請其他的container做它的從節點,然後和它們通信,給它們指派任務,管理它們上面運行的任務。


上帝有個夢想-主從結構


1.2.3 MapReduce 和spark的主從結構

MapReduce強依賴於yarn和hdfs所以它就原封不動的滿足yarn應用的結構。

而spark 可以運行於多個平臺,它抽象出了自己的主從結構。driver是主節點管理其他executor,分配任務收集結果。cluster Manager就是抽象出來的集群資源管理者,可以是yarn 、Messo等。


上帝有個夢想-主從結構

spark on yarn有client 模式和cluster 模式

1).client模式:driver運行在client上Yarn的AppMaster就只是一個申請資源的代理,申請到了container就給client,client進行任務分配。

2).cluster模式 :driver運行在AppMaster上,資源申請任務調度,都由它自己負責。

最後、總結

文章主要介紹了分佈式結構中的主從結構,總結起來就是主節點長官所有從節點的相關信息,協作點都發生在主節點上,從節點只會被動的執行主節點發來的命令。


分享到:


相關文章: