Project Savanna:讓Hadoop運行在OpenStack之上
Apache Hadoop基本上已經(jīng)成為MapReduce實現(xiàn)的產(chǎn)業(yè)標準,并且被各個機構廣泛采用,而Savanna項目旨在讓用戶可以在OpenStack上運行和管理Hadoop集群。值得一提的是,Amazon通過EMR(Elastic MapReduce)提供Hadoop服務已達數(shù)年之久。
用戶需要給Savanna提供一些信息來建立集群,比如Hadoop版本、集群拓撲、節(jié)點硬件詳情以及一些其它的信息。在用戶提供這些參數(shù)之后,Savanna將幫助用戶在幾分鐘之內(nèi)建立起集群,同樣還可以幫助用戶根據(jù)需求對集群進行擴展(增加或者刪除工作節(jié)點)。
方案針對以下幾種用例:
為Dev和QA快速配置Hadoop集群
利用通用OpenStack IaaS云中從未使用過的計算能力
為專用或突發(fā)性的分析負載提供“分析即服務”(類似AWS中的EMR)。
主要特性如下:
作為OpenStack組件出現(xiàn)
通過REST API進行管理,用戶界面作為OpenStack Dashboard的一部分。
支持多種Hadoop分布:
作為Hadoop安裝引擎的可插拔系統(tǒng)。
集成了提供商特定的管理工具,比如Apache Ambari或者Cloudera Managent Console。
Hadoop配置的預定義模板來,具備配置參數(shù)功能。
細節(jié)說明
Savanna產(chǎn)品主要于以下幾個OpenStack組件進行通信:
Horizon——提供GUI以使用所有Savanna的特性。
Keystone——認證用戶并提供安全令牌,用以與OpenStack通信,用以給用戶分配特定的OpenStack權限。
Nova——為Hadoop集群配置虛擬機。
Glance——用于儲存Hadoop虛擬機鏡像,每個鏡像都包含了已安裝的OS和Hadoop;預安裝的Hadoop應該給予我們在節(jié)點布置上的便利。
Swift——可以作為需要進行Hadoop作業(yè)的預存儲。

常規(guī)工作流
Savanna會根據(jù)用例給用戶提供兩種不同抽象等級的API和UI:集群配置和分析作為服務。
集群快速配置的工作流程包括以下選項:
選擇Hadoop版本
選擇包含或者不包含預安裝Hadoop的基礎鏡像
對于未預安裝Hadoop的基礎鏡像,Savanna將提供整合了供應商工具的可插拔部署引擎。
定義集群配置,包括集群的大小和拓撲,并且設置不同的Hadoop參數(shù)(比如heap大小)。
將提供可配置的模板用以簡易參數(shù)配置機制。
集群的配置:Savanna將提供虛擬機,安裝和配置Hadoop。
集群上的操作:添加和移除節(jié)點。
在不需要時終止集群。
對于分析即服務的工作流程包括以下選項:
選擇一個預定義版本
配置作業(yè):
選擇作業(yè)的類型:pig、hive、jar-file等等
提供作業(yè)腳本源或者是jar路徑
選擇輸入和輸出數(shù)據(jù)路徑(最初只支持Swift)
為日志選擇路徑
設置集群大小限制
執(zhí)行作業(yè):
所有集群配置和作業(yè)執(zhí)行都會清楚的呈現(xiàn)給用戶
作業(yè)結(jié)束后會自動移除集群
取回計算結(jié)果(比如從Swift)
用戶方面
在使用Savanna配置集群時,用戶在兩種類型實體上進行操作:Node Template和Cluster。
Node Template用于描述集群中的節(jié)點,包含了幾個參數(shù)。節(jié)點類型就屬于Node Template的屬性之一,這將決定Hadoop將在節(jié)點上運行什么樣的處理,確定節(jié)點在集群中的扮演的角色,它可以是Job Tracker、NameNode、TaskTracker、DataNode或者這些節(jié)點的邏輯組合。Node Template同樣還保存了硬件參數(shù),這些參數(shù)用于節(jié)點虛擬機以及Hadoop在節(jié)點上的工作內(nèi)容。
Cluster實體用于描述Hadoop Cluster,描述了預裝Hadoop虛擬機特征,用于集群的部署和集群拓撲。拓撲是節(jié)點模板和每個模板該部署節(jié)點數(shù)量的列表。關于拓撲,Savanna會驗證集群中的NameNode和JobTracker是否唯一。
每個節(jié)點模板和集群都歸屬于用戶給其分配的tenant,用戶只能訪問已接入tenant里面的對象。用戶只能編輯或刪除他們建立的對象,當然管理員用戶可以訪問所有的對象,Savanna需要遵守同樣的OpenStack訪問策略。
Savanna提供了多種Hadoop集群拓撲,Job Tracker和NameNode進程可以選擇在一或兩個獨立的虛擬機上運行。同樣集群可以包含多種類型的工作節(jié)點,工作節(jié)點可以同時充當TaskTracker和DataNode,同樣也可以扮演一個角色。Savanna允許用戶任意選項的組合去建立集群。
與Swift整合
在OpenStack中,Swift作為標準對象存儲,類似Amazon S3。通常部署在實體主機上,Swift被作為“OpenStack上的HDFS”,具備很多使用的增強功能。
首先為Swift實現(xiàn)的文件系統(tǒng): HADOOP-8545,這樣的話Hadoop作業(yè)就可以運行在Swift上。在Swift方面,我們必須將請求更改為 Change I6b1ba25b。它將端點映射為Object、Account或者是Container列表,這樣就可以將Swift與依賴數(shù)據(jù)位置信息的軟件整合,從而達到避免網(wǎng)絡開銷。
可插拔部署和監(jiān)控
監(jiān)視功能來自供應商定制的Hadoop管理工具,Savanna整合了類似Nagios及Zabbix可插拔外部監(jiān)視系統(tǒng)。
部署和監(jiān)控工具都將被安裝在獨立的虛擬機上,從而允許單一的實例同時管理或監(jiān)控不同的集群。