1.簡介
Apache Hadoop是目前被普遍使用的主流大數據處理計算框架,Sahara項目旨在使用用戶可以在Openstack平臺上便於建立和管理Hadoop以及其餘計算框架集羣,實現相似AWS的EMR(Amazon Elastic MapReduce service)服務。用戶只須要提供簡單的參數,如版本信息、集羣拓撲、節點硬件信息等,利用Sahara服務可以在數分鐘時間內快速地部署Hadoop、Spark、Storm集羣。Sahara還支持節點的彈性擴展,可以方便地按需增長或者減小計算節點,實現彈性數據計算服務。它特別適合開發人員或者QA在Openstack平臺上快速部署大數據處理計算集羣。html
它特效包括:java
- Openstack的標準組件之一;
- 經過REST API和Dashboard UI界面管理集羣;
- 支持多種數據處理計算框架,包括:
- 多種Hadoop廠商發行版,好比CDH等;
- Apache Spark和Storm;
- 可插除的Hadoop安裝引擎;
- 集成廠商的特定管理工具,如Apache Ambari and Cloudera Management Console。
- 支持配置模板。
它和其餘Openstack組件交互,如圖:
node
2.工做流程
sahara提供兩個層次的API,分別爲集羣管理(cluster provisioning)和任務管理(analytics as a service)。ios
集羣管理工做流包括:數據庫
- 選擇Hadoop發行版本;
- 選擇base鏡像,base鏡像用於生成工做節點,base鏡像或者已經預先安裝了Hadoop的必要組件,或者提供可插除的可自動快速部署Hadoop的工具。base鏡像能夠本身製做,也能夠直接下載: http://sahara-files.mirantis.com/images/upstream/liberty/
- 集羣配置,包括集羣大小、集羣拓撲(配置組件角色)和一些附加參數(如堆大小、HDFS冗餘份數等);
- 建立集羣,sahara將自動建立虛擬機、部署和配置數據分析計算框架集羣;
- 集羣管理,如增長或者刪除節點;
- 集羣銷燬,用戶不須要時,能夠刪除集羣,釋放全部的資源。
任務管理工做流包括:ubuntu
- 選擇預先定義的數據處理計算框架以及版本;
任務配置:swift
- 選擇任務類型:pig,hive,java-jar等;
- 提供任務腳本源或者jar包地址;
- 選擇輸入、輸出地址。
- 限制集羣大小;
- 執行任務,注意全部底層的集羣管理和任務執行流程對用戶是徹底透明的,當任務執行完後,集羣將會自動移除提交的任務;
獲取處理結果(如Swift)。安全
3.用戶視角
經過sahara管理集羣,用戶主要須要操做如下三個實體對象:Node Group Templates, Cluster Templates and Clusters:架構
- Node Group Templates:設置單一節點的模板,包括啓動虛擬機的flavor、安全組、可用域、鏡像等,以及配置Hadoop角色,好比namenode、secondarynamenode、resourcemanager。好比咱們能夠建立Master節點模板,flavor爲m1.large,啓動鏡像爲sahara-mitaka-vanilla-hadoop-2.7.1-ubuntu-14.04,配置namenode、resourcemanager、secondarynamenode角色,建立Slave節點模板,flavor爲m1.large,鏡像爲sahara-mitaka-vanilla-hadoop-2.7.1-ubuntu-14.04,配置角色爲datanode、nodemanager等。
- Cluster Templates:即集羣拓撲,包括節點數量(如Master數量、Slave數量)、Hadoop參數配置,好比HDFS配置、YARN配置等。
- Clusters:集羣管理,包括集羣擴容、集羣啓動、集羣刪除等。
sahara容許用戶自由組合節點角色,好比Job Tracker和NameNode能夠運做在同一個虛擬機中,也能夠分離在不一樣的虛擬機中。可是sahara會檢查集羣是否有效,好比不容許建立只有一系列DataNode節點但不存在NameNode節點的集羣。框架
sahara聽從Openstack的通用訪問策略,即支持租戶、用戶等權限管理。
4.集成對象存儲服務
sahara支持從Swift對象存儲讀取數據和保存結果數據,集成文檔參考http://docs.openstack.org/developer/sahara/userdoc/hadoop-swift.html。
5.集羣監控
除了支持Hadoop廠商提供的監控工具,sahara還提供可插除集成其餘外部監控工具,好比Nagios Zabbix,這些外部工具徹底和集羣分離,能夠單獨部署在一個單獨的虛擬機,所以能夠同時監控多個集羣。
6.架構
sahara架構如圖所示:
![sahara架構圖](http://static.javashuo.com/static/loading.gif)
主要包括如下幾個組件:
- Auth component(認證組件) - 負責和認證服務交互完成客戶認證。
- DAL - 數據訪問層, 負責爲持久化數據提供數據庫訪問接口。
- Secure Storage Access Layer(安全存儲訪問層) - 保存用戶認證信息,好比用戶密碼、密鑰等。
- Provisioning Engine - 該組件負責和Openstack其餘組件交互,好比Nova組件、Heat組件、Cinder組件以及Glance組件等。
- Vendor Plugins(廠商插件) - 負責配置和啓動計算框架,不一樣的計算框架啓動方式和配置都不同,所以提供插件機制,使sahara同時可支持多種計算框架。已經完成集成的插件包括Apache Ambari和Cloudera Management Console等。
- EDP - Elastic Data Processing,負責調度和管理任務。
- REST API - 經過REST HTTP API接口暴露sahara管理功能。
- Python Sahara Client - sahara命令行管理工具。
- Sahara pages - Openstack Dashboard顯示頁面。
參考
- sahara開發文檔:http://docs.openstack.org/developer/sahara