Apache Mesos:讓你資源利用率更高、擴展性更好
Apache Mesos已經(jīng)成為主要企業(yè)一種流行的手段,來進行線性擴展的能力、減少浪費資源消耗,以及抽象存儲、CPU和內(nèi)存。
由加利福尼亞大學(xué)伯克利分校的開發(fā)人員創(chuàng)建,由包括Twitter、Apple和Netflix在內(nèi)的主要企業(yè)所擁護的Apache Mesos,它是一個開源軟件,可以在一組機器上抽象出存儲、CPU和內(nèi)存 Apache Mesos的主要吸引力之一是它線性擴展,這意味著隨著負載水平的增加,響應(yīng)時間可以成比例地增加——基本上是***制的擴展。Mesos將自己稱為“分布式系統(tǒng)內(nèi)核”,因為它采用了Linux內(nèi)核的核心原則,但卻應(yīng)用在不同的抽象級別。
停止浪費虛擬機資源
數(shù)據(jù)中心管理員頻繁地利用虛擬機(VM),導(dǎo)致企業(yè)浪費大量資金用于沒有使用的資源上。這個問題通常通過分區(qū)來解決,通過分配一組特定的服務(wù)器來運行特定的功能。在傳統(tǒng)環(huán)境中,你可以使用分區(qū)來定義需求,例如需要特定數(shù)量的服務(wù)器,然后相應(yīng)地分配VM和存儲。在公有云中—用戶以資源使用為基礎(chǔ)計費,無法訪問云操作系統(tǒng)——分區(qū)將更大或更小的模板用于VM配置上。
雖然這種方法足夠有效了,但這對協(xié)調(diào)服務(wù)(colocate services )更實際,這一服務(wù)是Apache Mesos輸入圖片的所在地。分區(qū)將機器用于特定任務(wù),例如數(shù)據(jù)庫服務(wù)器,另一個則用于運行,例如Web服務(wù)器。協(xié)調(diào)更有效率,因為它允許你在VM或服務(wù)器上運行多個服務(wù)。它也降低了成本,因為在同一臺服務(wù)器上運行多個服務(wù)減少了所需的服務(wù)器數(shù)量。 Mesos不是依靠分區(qū)來運行服務(wù)的,而是使用托管方式來允許軟件根據(jù)需要獲取資源。就技術(shù)術(shù)語而言,Mesos用自己的框架替代你正在使用的資源管理器,并實現(xiàn)調(diào)度和執(zhí)行接口的功能。
Mesos與個人軟件、Docker容器,和配置為使用Mesos作為資源管理器的大型數(shù)據(jù)集群協(xié)同工作。Apache Mesos不是VM的業(yè)務(wù)流程系統(tǒng)。Mesos還使用Linux控制組(也稱為cgroups)來限制資源,優(yōu)先處理進程并進行計算。這在公有云中很有用,因為它允許供應(yīng)商根據(jù)使用的資源來對客戶收費。Cgroups在傳統(tǒng)環(huán)境中也很有用,因為它們可以限制進程,從而不會占用機器資源。
Mesos和YARN解決分區(qū)問題
Apache Hadoop還有另一個資源協(xié)調(diào)器YARN,它是Apache Hadoop MapReduce的資源管理員,執(zhí)行與Mesos大致相同的功能。事實上,Myriad是一個開源項目,它可以讓數(shù)據(jù)中心同時使用這兩種產(chǎn)品。例如,如果你想使用Mesos運行容器應(yīng)用,又想使用YARN來運行Hadoop,那么可以一起使用Mesos和YARN。
如果我們仔細看看雅虎重寫了Hadoop添加了YARN的原因,我們就可以更好地了解Mesos和YARN的功能。
為YARN編寫框架是一項復(fù)雜的任務(wù),這更適合于大型軟件產(chǎn)品的工程師,如Apache Spark,而不是最終用戶。Hadoop的配置使得使用YARN更容易。在集群環(huán)境中,你可以簡單地編輯名稱節(jié)點上的配置文件,然后把整個Hadoop安裝復(fù)制到日期節(jié)點上——YARN可以在不需要任何進一步更改配置的情況下工作。
Hadoop早期版本的主要問題是分區(qū)。通過分區(qū),你可以指定插槽來運行映射作業(yè)或?qū)⒆鳂I(yè)減少到Hadoop集群中的機器上。一旦你分配了一個插槽來運行一個映射作業(yè),你就不能使用它來運行減少作業(yè),反之亦然。假設(shè)你已經(jīng)分配了10個插槽來運行映射作業(yè),10個插槽來在Hadoop集群的機器上減少作業(yè)?,F(xiàn)在,我們假設(shè)Hadoop需要運行11個映射 作業(yè),你會發(fā)現(xiàn)你限制了自己,因為你沒有為映射 作業(yè)分配足夠的插槽,而且你了不能使用任何額外的插槽分配給減少 工作。這個問題清楚地表明,我們需要一個更好的方式來共同服務(wù),并取消分區(qū)。對此,Apache做出了回應(yīng),從而讓YARN和Mesos可以排除服務(wù)。
Apache Mesos架構(gòu)
Apache Mesos架構(gòu)由一個主守護進程組成,可以管理每個群集節(jié)點上運行的代理守護程序。代理程序也使用了cgroup來確保它們在已分配的內(nèi)存、CPU和存儲空間中工作。每個代理使用一個Mesos框架運行任務(wù)。該框架由兩個組件組成:調(diào)度程序——其向主機注冊以接收資源;執(zhí)行器——其從調(diào)度器接收這些資源并使用它們運行框架的任務(wù)。實際上,執(zhí)行器 會識別出哪正在運行的應(yīng)用程序資源可用。
Mesos和容器編排
像Kubernetes和Docker Swarm一樣,Mesos也執(zhí)行容器編排。Mesos使用三種類型的容器技術(shù):Composing,它允許不同的容器技術(shù)一起運行;Docker和Mesos自己的容器化,這是默認(rèn)配置。
Apache Mesosphere
Apache Mesosphere是向原始Apache Mesos框架添加附加功能的軟件; 它包括Aurora 、Chronos和Marathon。
由Twitter開發(fā)運行無狀態(tài)服務(wù),如Java VM和Web服務(wù)器,Apache Aurora是為長期運行和cron工作而設(shè)計的框架。Apache Chronos是一個彈性分布式系統(tǒng),表示作業(yè)之間的依賴關(guān)系。由Mesosphere撰寫,Apache Marathon是一個可以擴展到數(shù)千個物理服務(wù)器的容器編排系統(tǒng)。Aurora、Chronos和Marathon都使用JSON和REST API與Mesos接口。
幫助創(chuàng)建Mesos的Twitter工程師之一在DockerCon上表示,他建議Mesos用戶在家庭實驗室中要至少使用三臺機器來運行工作中的Mesos原型。Apache為有興趣嘗試Mesos的用戶提供了minimesos實驗和測試工具。Minimesos包括一個bash shell,你可以在其中部署Mesos Elasticsearch框架。
主流企業(yè)牛擁抱Mesos
你可以想像,像Uber那樣的企業(yè)有一些重要的數(shù)據(jù)處理需求。Uber使用Apache Cassandra數(shù)據(jù)庫——一個NoSQL面向列的數(shù)據(jù)庫來存儲位置數(shù)據(jù)。面向列的數(shù)據(jù)庫一次寫入一行/列組合,而不是寫入整行列,因此它不會在空列中浪費空間。面向列的數(shù)據(jù)庫還將列保持在一起,以便快速檢索。
除了依靠Mesos跟蹤數(shù)據(jù),Uber還定期向Mesos提供代碼。在2016年,Uber寫了一個名為DC / OS Apache Cassandra的擴展,這使得在DC / OS上部署Mesos更容易。DC / OS協(xié)調(diào)主代理關(guān)系中的多個Mesos代理。像Mesos一樣,DC / OS是分布式操作系統(tǒng),但具有配置管理Marathon和Chronos等其他功能。你可以在DC / OS的頂部運行Hadoop、Spark、Cassandra等等,因為它是可擴展的。最近,DC / OS Apache Cassandra被集成到了Mesosphere DC / OS中。
Netflix也是Apache Mesos的主要用戶和貢獻者。Netflix表示,它運行在亞馬遜彈性云計算(EC2)上,并使用Mesos提供“細粒度的資源分配到可以打包到單個EC2實例的各種大小的任務(wù)上。2015年,Netflix開發(fā)了Fenzo,這是Apache Mesos框架的開源調(diào)度程序。Fenzo管理部署的調(diào)度和資源分配,并向Mesos添加集群自動縮放功能。





















