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