本發(fā)明屬于計算集群中計算資源的配置與調度方法,具體地涉及一種支持多大數據計算框架的集群資源配置與調度方法。
背景技術:
隨著云計算、大數據等行業(yè)的發(fā)展,越來越多的數據中心被建立起來,他們需要更有效的方式來為數據中心節(jié)省成本,像Facebook、谷歌和亞馬遜公司的數據中心都快速的擴張,他們也在尋找技術,幫助他們降低數據中心的建設和維護更新成本。
數據中心(Data Center)是全球協(xié)作的特定設備網絡,用來在internet網絡基礎設施上傳遞、加速、展示、計算、存儲數據信息。數據中心大部分電子元件都是由低壓直流電源驅動運行的。數據中心面臨的物理問題是服務器本身和用來連接這些服務器到其他應用環(huán)境的電纜。
集群是指集群通信系統(tǒng)是一種計算機系統(tǒng),它通過一組松散集成的計算機軟件和/或硬件連接起來高度緊密地協(xié)作完成計算工作。在某種意義上,他們可以被看作是一臺計算機。集群系統(tǒng)中的單個計算機通常稱為節(jié)點,通常通過局域網連接,但也有其它的可能連接方式。集群計算機通常用來改進單個計算機的計算速度和/或可靠性。一般情況下集群計算機比單個計算機,比如工作站或超級計算機性能價格比要高得多。
大數據計算框架用于處理大數據的分布式計算系統(tǒng)的運行和編程框架,例如,Storm用于處理高速、大型數據流的分布式實時計算系統(tǒng)。為Hadoop添加了可靠的實時數據處理功能;Spark采用了內存計算。從多迭代批處理出發(fā),允許將數據載入內存作反復查詢,此外還融合數據倉庫,流處理和圖形計算等多種計算范式。Spark構建在HDFS上,能與Hadoop很好的結合。Hadoop用戶海量數據的批處理和離線數據處理,是當前大數據計算標準之一,運用在當前很多商業(yè)應用系統(tǒng)??梢暂p松地集成結構化、半結構化甚至非結構化數據集。
當前流行的虛擬化技術可以讓多個應用或虛擬機共享一臺機器來提高服務器資源的利用率。但是這種共享會帶來資源競爭, 進而干擾應用程序的性能,影響在線應用的響應時間。然而快速的服務響應時間是衡量服務質量的關鍵指標,是讓用戶滿意、留住用戶的關鍵。因此,這種方法勢必會影響客戶滿意度,降低服務質量。
當前數據中心為了保障服務質量,采用過量提供資源的方式,但是犧牲了資源利用率。資源浪費表現(xiàn)為兩種形式,一種是關鍵在線應用獨占數據中心。比如采用一個數據中心專門運行某個或某幾個在線應用,其他作業(yè)運行在其他數據中心上,以減少對在線業(yè)務的干擾。另一種是夸大資源需求。
數據中心中的計算集群已經成為大數據所依賴的主要計算平臺,隨著分布式計算的發(fā)展,各種大數據計算框架被用來解決不同的業(yè)務問題,比如適合大規(guī)模離線批處理的Hadoop,適合實時流計算的Storm,這些大數據框架的提出為開發(fā)者解決了分布式計算的基本要求,包括可擴展和容錯。為了適應業(yè)務創(chuàng)新,新的計算框架將會繼續(xù)產生,企業(yè)和組織需要在同一個計算集群上運行多個計算框架,通過多個計算框架的組合適應業(yè)務的需求。
現(xiàn)有的共享計算集群的解決方案主要有兩種:
1)對數據中心的計算資源進行靜態(tài)分區(qū),每個分區(qū)的計算集群指定運行一種計算框架,比如Hadoop集群,Spark集群,Storm集群等等;
2)通過云計算基礎架構即服務管理所有的計算資源,通過虛擬化技術為每一種計算框架提供一組虛擬機,比如KVM。
以上方案存在以下缺點:
1)不同的計算框架對計算資源的需求偏重是不同的,靜態(tài)分區(qū)造成整體資源利用率低下,擴展性和可靠性低,維護成本高;
2)沒有考慮企業(yè)用戶特定的調度需求;
3)無法支持未來新的計算框架;
4)沒有考慮計算能力和數據存儲的位置優(yōu)化,不同的計算框架無法共享同一個本地數據源,網絡傳輸負載較高,無法讓計算主動尋找數據以提高數據訪問效率;
造成這些缺點的根本的原因在于,以上靜態(tài)分區(qū)或者虛擬主機的方案和已有的大數據計算框架自身在分布式計算資源分配的粒度上存在差異,框架通常采用的是細粒度的資源共享模型,一個單獨的計算節(jié)點上可以同時運行多個計算任務以提高資源利用率和數據訪問的效率。這些計算框架都是獨立開發(fā)的,現(xiàn)有方案無法實現(xiàn)不同的計算框架之間細粒度的資源共享。
技術實現(xiàn)要素:
針對上述技術問題,本發(fā)明旨在提供一種支持多大數據計算框架的集群資源配置與調度方法,通過一組統(tǒng)一的接口使得不同的大數據計算框架可以對集群的計算資源進行訪問,通過動態(tài)分配和契約交易的方式實現(xiàn)不同計算框架之間對計算資源細粒度的共享,可擴展的分配方式可以適配不同企業(yè)的業(yè)務需求。
為達到上述目的,本發(fā)明的技術方案是:
一種支持多大數據計算框架的集群資源配置與調度方法,其特征在于,包括以下步驟:
S01:為每一種計算框架添加一個對應的計算框架調度器并部署到整個系統(tǒng),通過主控制節(jié)點收集計算節(jié)點所有的可交易計算資源推送給計算框架調度器,由相應的計算框架調度器以契約交易的方式決定是否接受資源并使用;
S02:如果計算框架接受分配的資源,則上升到第二層分配調度,通過計算框架自身的分布式調度把計算任務分配到相應的計算資源并通知主控制節(jié)點,再由主控制節(jié)點通知相應的計算節(jié)點啟動對應的計算框架執(zhí)行器來執(zhí)行計算任務;
S03:如果計算框架拒絕接受當前分配的計算資源,則主控制節(jié)點把資源重新進行分配,繼續(xù)向計算框架發(fā)送資源交易的信息;
S04:對多種計算資源類型進行細粒度分配的公平調度,對每個計算框架的資源分配由該框架的側重資源來決定,每個計算框架獲得的各種計算資源的占比中,側重資源的占比應占據最大份額,且每一個計算框架獲得的側重資源的占比應該盡可能相同。
優(yōu)選的,所述步驟S04包括:
S11:查詢已注冊的計算框架調度器,單個計算任務所需的計算資源向量,并對向量中每個資源計算在集群所有資源中的占比;
S12:對所有資源的占比進行排序,其中占比最大的為側重資源,當有新注冊的計算框架時,重復步驟S11;否則繼續(xù)執(zhí)行;
S13:計算各個計算框架已分配的側重資源的占比,對側重資源占比排序,對占比最小的計算框架進行資源分配,當該計算框架所需的全部資源都滿足時,把該計算框架移出并進行下一輪分配;
S14:重復步驟S13,直至集群計算資源全部分配完畢。
與現(xiàn)有技術相比,本發(fā)明的有益效果是:
1、本發(fā)明通過雙層調度架構和契約交易使得多個大數據計算框架可以共享集群的計算資源,實現(xiàn)了集群資源的動態(tài)分配,通過重用計算框架已有的分布式調度保證了對新的計算框架的支持,面向細粒度資源分配的公平調度方法使得不同的計算框架的計算需求被盡可能的滿足并提高了集群整體的資源利用率,從而提高了數據中心的整體效率。
2、該方法可以動態(tài)高效的分配集群中的計算資源給不同的計算框架,提高了集群整體的資源利用率和計算服務的可靠性/可擴展性。
附圖說明
圖1為本發(fā)明支持多大數據計算框架的集群資源配置與調度方法的跨調度架構圖;
圖2為本發(fā)明支持多大數據計算框架的集群資源配置與調度方法的資源分配時序圖;
圖3為本發(fā)明支持多大數據計算框架的集群資源配置與調度方法的調度流程圖。
具體實施方式
為使本發(fā)明的目的、技術方案和優(yōu)點更加清楚明了,下面結合具體實施方式以及附圖,對本發(fā)明進一步詳細說明。應該理解,這些描述只是示例性的,而并非要限制本發(fā)明的范圍。此外,在以下說明中,省略了對公知結構和技術的描述,以避免不必要地混淆本發(fā)明的概念。
實施例:
本發(fā)明的技術方案主要包括兩個方面:
1)基于主/從雙層調度機制和契約交易的調度架構
如圖1所示,有N種已有的分布式大數據計算框架需要共享集群計算資源,需要為每一種計算框架添加一個對應的計算框架調度器并部署到整個系統(tǒng)中,該調度器負責和主控制節(jié)點的資源分配模塊進行資源契約交易,根據計算框架的要求決定接受或者拒絕分配的計算資源;
有K個主控制節(jié)點,通過負載均衡的方式提供服務,每個節(jié)點上都包含資源分配模塊,負責收集來自各個計算節(jié)點的資源使用情況,并把相應的資源推送到各個計算框架調度器;
有M個計算節(jié)點,每個計算節(jié)點負責匯報本地的資源使用情況,并根據需要啟動相應的計算框架執(zhí)行器來執(zhí)行計算框架的計算任務。
如圖2所示,本發(fā)明采用了雙層調度機制,第一層通過主控制節(jié)點收集計算節(jié)點所有的可交易計算資源推送給計算框架調度器,由相應的計算框架調度器以契約交易的方式決定是否接受資源并使用。如果計算框架接受分配的資源,則上升到第二層分配調度,通過計算框架自身的分布式調度把計算任務分配到相應的計算資源并通知主控制節(jié)點,再由主控制節(jié)點通知相應的計算節(jié)點啟動對應的計算框架執(zhí)行器來執(zhí)行計算任務;如果計算框架拒絕接受當前分配的計算資源,則主控制節(jié)點把資源重新進行分配,繼續(xù)向計算框架發(fā)送資源交易的信息。
)面向細粒度資源分配的公平調度方法
在一個共享集群中,不同的大數據計算框架對資源的要求有所側重,有的需要大量的磁盤和網絡,有的基于內存計算需要大量的物理內存,有的屬于計算密集型需要大量的CPU。考慮在一個針對多種計算資源類型的細粒度分配的公平調度,對每個計算框架的資源分配應該由該框架的側重資源來決定,每個計算框架獲得的各種計算資源的占比(相對集群總體資源)中,側重資源的占比應該占據最大份額??紤]到公平性,每一個計算框架獲得的側重資源的占比應該盡可能相同。
該算法的流程圖如圖3所示:
S11:查詢已注冊的計算框架調度器,單個計算任務所需的計算資源向量,并對向量中每個資源計算在集群所有資源中的占比;
S12:對所有資源的占比進行排序,其中占比最大的為側重資源,當有新注冊的計算框架時,重復步驟S11;否則繼續(xù)執(zhí)行;
S13:計算各個計算框架已分配的側重資源的占比,對側重資源占比排序,對占比最小的計算框架進行資源分配,當該計算框架所需的全部資源都滿足時,把該計算框架移出并進行下一輪分配;
S14:重復步驟S13,直至集群計算資源全部分配完畢。
應當理解的是,本發(fā)明的上述具體實施方式僅僅用于示例性說明或解釋本發(fā)明的原理,而不構成對本發(fā)明的限制。因此,在不偏離本發(fā)明的精神和范圍的情況下所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。此外,本發(fā)明所附權利要求旨在涵蓋落入所附權利要求范圍和邊界、或者這種范圍和邊界的等同形式內的全部變化和修改例。