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

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