1.簡介
Apache Hadoop是目前被廣泛使用的主流大數據處理計算框架,Sahara項目旨在使用用戶能夠在Openstack平台上便於創建和管理Hadoop以及其他計算框架集群,實現類似AWS的EMR(Amazon Elastic MapReduce service)服務。用戶只需要提供簡單的參數,如版本信息、集群拓撲、節點硬件信息等,利用Sahara服務能夠在數分鍾時間內快速地部署Hadoop、Spark、Storm集群。Sahara還支持節點的彈性擴展,能夠方便地按需增加或者減少計算節點,實現彈性數據計算服務。它特別適合開發人員或者QA在Openstack平台上快速部署大數據處理計算集群。
它特效包括:
- Openstack的標准組件之一;
- 通過REST API和Dashboard UI界面管理集群;
- 支持多種數據處理計算框架,包括:
- 多種Hadoop廠商發行版,比如CDH等;
- Apache Spark和Storm;
- 可插除的Hadoop安裝引擎;
- 集成廠商的特定管理工具,如Apache Ambari and Cloudera Management Console。
- 支持配置模板。
它和其他Openstack組件交互,如圖:
2.工作流程
sahara提供兩個層次的API,分別為集群管理(cluster provisioning)和任務管理(analytics as a service)。
集群管理工作流包括:
- 選擇Hadoop發行版本;
- 選擇base鏡像,base鏡像用於生成工作節點,base鏡像或者已經預先安裝了Hadoop的必要組件,或者提供可插除的可自動快速部署Hadoop的工具。base鏡像可以自己制作,也可以直接下載: http://sahara-files.mirantis.com/images/upstream/liberty/
- 集群配置,包括集群大小、集群拓撲(配置組件角色)和一些附加參數(如堆大小、HDFS冗余份數等);
- 創建集群,sahara將自動創建虛擬機、部署和配置數據分析計算框架集群;
- 集群管理,如增加或者刪除節點;
- 集群銷毀,用戶不需要時,可以刪除集群,釋放所有的資源。
任務管理工作流包括:
-
選擇預先定義的數據處理計算框架以及版本;
-
任務配置:
- 選擇任務類型: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架構如圖所示:
主要包括以下幾個組件:
- 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