標籤:
何為Sahara
The Sahara project provides a simple means to provision a Hadoop cluster on top of OpenStack
即基於OpenStack提供簡單的Hadoop叢集建立和管理方式。
Sahara提供的功能
* Hadoop cluster的建立
* Hadoop cluster的擴充
* 提供業務應用能力(Elastic Data Processing)
l 支援業務應用的類型包括mapreduce,java,hive,pig,streaming
l 在已存在的hadoop叢集上直接執行使用者的應用(job)。
l 建立一個hadoop叢集執行使用者的應用(job),執行完成後自動銷毀hadoop叢集,釋放資源。
Cluster模式
* 模板化配置
* Nodegroup template 和cluster template
* Nodegroup template:
l vm的配置參數(flavor,floating ip, volume);
l process以及其配置參數,例如namenode,jobtracker和對應的hdfs,mapreduce參數
* Cluster template:
l node group參數,包括使用的node template及其個數
l hadoop cluster參數
* 以plugin的方式支援多種hadoop發行版及hadoop版本(vanilla,hdp,cloudera,mapR,spark)
* 支援vm的資源調度策略。(anti-affinity)
* 支援Transient Clusters
* 支援手動scale hadoop Clusters (支援datanode和tasktracker的scale)
* 支援direct和heat兩種方式部署vm
* 支援Cinder
* 支援Neutron and Nova Network
* Security group management
* Multi region deployment
* Data-locality
* 使用方式
* 建立若干個Nodegroup template
* 建立cluster template
* 通過cluster template建立cluster
* Scale cluster
Swift和Hadoop的整合
Swift是OpenStack開源雲端運算項目的子項目之一,被稱為Object Storage Service,提供了強大的擴充性、冗餘和持久性。
* 極高的資料持久性(Durability)。
* 完全對稱的系統架構:“對稱”意味著Swift中各節點可以完全對等,能極大地降低系統維護成本。
* 無限的可擴充性:一是資料存放區容量無限可擴充;二是Swift效能(如QPS、輸送量等)可線性提升。
* 無單點故障:Swift的中繼資料存放區是完全均勻隨機分布的,並且與對象檔案儲存體一樣,中繼資料也會儲存多份。整個Swift叢集中,也沒有一個角色是單點的,並且在架構和設計上保證無單點業務是有效。
* 簡單、可依賴。
Swift
和
HDFS
的技術差異
* 在Swift中,中繼資料呈分布式,跨叢集複製。而在HDFS使用了中央系統來維護檔案中繼資料(Namenode,名稱節點),這對HDFS來說無異於單一故障點,因而擴充到規模非常大的環境顯得更困難。
* Swift在設計時考慮到了多租戶架構,而HDFS沒有多租戶架構這個概念。
* 在Swift中,檔案可以寫入多次;在並行作業環境下,以最近一次操作為準。而在HDFS中,檔案寫入一次,而且每次只能有一個檔案寫入。
* Swift用Python來編寫,而HDFS用Java來編寫。
* Swift被設計成了一種比較通用的儲存解決方案,能夠可靠地儲存數量非常多的大小不一的檔案;而HDFS被設計成可以儲存數量中等的大檔案(HDFS針對更龐大的檔案作了最佳化),以支援資料處理。
* Hadoop目前已經支援Swift作為自身的Distributed File System
* 使用url為swift://acontainer.aservice/path/to/files格式訪問swift
* 代替hdfs,實現hadoop叢集中計算資源和儲存資源的分離,對於需要長期保留資料,而僅僅在需要時進行計算的情境非常有用。
Sahara的優勢
* ? 提升Hadoop部署速度,簡單方便
* ? hadoop參數的模板化定義,統一組態管理
* ? 提升Hadoop環境資源使用率
* ? 安全隔離讓Hadoop落地更安全
* ? 實現Hadoop雲端多租戶
* ? 提供大資料的業務處理能力,簡化業務人員的工作。
Sahara的落地實踐