在安裝和使用Mesos之前要先去了解系統的架構,這樣才能清楚的了解到每個元件的意義和使用的方式,以下就介紹Mesos的架構和每個元件的的功能。
圖片來源:
http://mesos.apache.org/documentation/latest/architecture/
上圖是Apache Mesos在運作時主要的架構圖,主要的元件有Mesos Master、Mesos Agent、Zookeeper、另外Hadoop Scheduler和MPI Scheduler就是Mesos Framework,下面簡單的介紹一下Apache Mesos的每一個元件的功能:
Mesos Master:
Mesos Master主要是可以接收Mesos Agent所回報的目前資源狀態,並且會把資源的offer指定給frameowrk,在多台的master下正在執行active的master只會有一台,其它的master都為standby狀態,如果active的master當掉standby的master才會啟動起來。
Mesos Agent:
Mesos Agent又稱為Mesos Slave,主要的功能是定時的回報目前有多少的資源給Mesos Master,那要如何找到真正active的master?Mesos Agent會先透過查詢zookeeper的方式確認Mesos Master在哪台的host上,然後就能連上Mesos Master。
另外Mesos Agent上會啟動executor,執行framework所指派的Tasks
Framework:
執行在Mesos上的應用程式都會透過framework的方式去執行,framework主要有兩個元件scheduler和executor,以下分別介紹:
(1)scheduler:
schedule是對Mesos Master註冊,一般是long-running service負責連線到mesos master,它可以依照執行的需求決定是否要接受Mesos Master資源的offer
(2)executor:
executor是在Mesos Agent上執行tasks,executor上允許執行shell script或是可以執行docker container
另外Mesos的framework可以按照個人的需求實作出來,這樣也可以有助您了解整個Mesos的架構和執行的流程
Zookeeper:
zookeeper是拿來做預防Mesos master當掉用的,一但Mesos master有問題之後zookeeper會透過選舉的方式,從Standby的master選出一個新的master,所以zookeeper的數量要是單數,另外如果不怕Mesos master壞掉不一定要安裝zookeeper,但在production環境上建議還是要安裝zookeeper。
總結上面的元來說:
每一台Mesos Agent都會定時的回報目前有多少的資源給Mesos Master,之後Mesos Master會把資源的offer提供給Framework,Framework可以接受和拒絕資源的offer。當執行Job時Frameowrk會指派要在哪幾台的Mesos Agent上執行executor和tasks
以下舉個例子來說明:
圖片來源:Mesos in action
上圖是在Mesos上面執行Apache Spark的簡單例子,說明如下:
1、Mesos Slave會定時的回報有多少的資源給Mesos Master
2、Spark會註冊framework在master上並決定是否要執行工作
3、Spark的framework可以接受或拒絕master資源的offer
4、當使用者執行spark submit時,framework的scheduler會接受資源的offer,並且會決定要執行在哪幾台的Mesos Slave上
5、在Mesos Agent啟動container,並且執行Spark上的tasks
以上就是在Mesos上執行Spark的簡單例子,未來在實作時還會在實際demo一次,今天已經介紹完整個Apache Mesos上的架構和元件了,有了這些基本的知識之後,明天我們就來實際的感覺一下先來安裝Mesos。
參考資料:
Mesos in action
Mesos官網:http://mesos.apache.org/