OpenStack Sahara如何構(gòu)建Hadoop和Spark系統(tǒng)
OpenStack Sahara是個命令行工具,通過簡化流程,跟蹤復(fù)雜的細(xì)節(jié),使Hadoop和 Spark的安裝、部署變得更加簡單。
OpenStack是一種云操作系統(tǒng),用于提供虛擬機,而OpenStack Sahara是一個附加組件,使管理員能夠在這些虛擬機上部署Spark和Hadoop。換句話說,你可以將OpenStack Sahara作為一個中心點,構(gòu)建Hadoop和Spark分布架構(gòu),做大數(shù)據(jù)分析。
Sahara本身提供的插件,可以用于不同供應(yīng)商分配的Hadoop和Spark:
Vanilla: Apache Hadoop;
Ambari: Hortonworks Hadoop;
Spark: Apache Spark with Cloudera HDFS、Apache Spark with Cloudera Hadoop等
MapR:MapR plugin和 MapR File System等, Hadoop和Spark 準(zhǔn)前端
Cloudera:Cloudera Hadoop分布式
從技術(shù)層面講,不需要使用Hadoop來運行Spark,但是,由于Spark被分配存儲在一個分布式架構(gòu)中,因此,使用Hadoop來運行Spark,是最佳的選擇。另外,Spark自身沒有存儲機制。
在架構(gòu)中,Sahara 運行在OpenStack控制器節(jié)點上,而Hadoop集群運行在OpenStack計算節(jié)點上。
當(dāng)然,還有其他的方法來部署Hadoop,比如說使用Docker containers,或者,還可以將Hadoop手動安裝在虛擬或物理機器上。例如通過Ansible或者Puppet工具,使得這一切變得更加簡單化。還有很多供應(yīng)商以及供應(yīng)商輔助工具可供選擇,如Cloudera和MapR。另外,可以在不同云供應(yīng)商的云中運行Hadoop。
使用OpenStack Sahara提供了一個中心點,可以部署并啟動Hadoop,給每個VM分配一個Hadoop角色。作為一個開源的產(chǎn)品—一個不依賴于任何供應(yīng)商的產(chǎn)品—能夠獲得OpenStack貢獻(xiàn)者的支持,例如RedHat、Ubuntu、Suse、惠普、Workday、SAP、英特爾等等。
開始
可以在一臺機器上安裝OpenStack,但是,在做任何承諾之前,需要對其進(jìn)行測試。有幾種測試的方法??梢允褂肦HEL或CentOS的Packstack ,也叫RDO?;蛘呖梢允褂肈evStack Fedora、Ubuntu和CentOS。還可以使用Ubuntu 的Mirantis Fuel。
第一步是將虛擬機鏡像上傳到OpenStack Glance。可以使用Horizon儀表板或者Glance命令行。對于虛擬機,需要一個具有可用cloud-init的圖像。Cloud-init便于部署到云,通過生成Secure Shell鍵,設(shè)置默認(rèn)的定位和設(shè)置主機名。
使用Sahara
通過其他OpenStack組件,可以使用命令行界面,或者可以使用Horizon儀表板。儀表板顯然更加容易。無論使用哪種方式,都需要安裝Sahara。這是一個漫長的過程,OpenStack在其網(wǎng)站上提供了這樣做的詳盡說明。
部署Hadoop的基本步驟,首先是配置及部署VM,之后,才能確定每個VM提供哪種Hadoop角色。如下:
- Namenode: Hadoop分布式文件系統(tǒng)(HDFS)的存儲細(xì)節(jié),運行JobTracker
- Datanode: 運行工作的HDFS一部分
- 二級節(jié)點名稱:作為名稱節(jié)點備份,以防名稱節(jié)點出現(xiàn)異常
- Oozie:工作流調(diào)度程序
- 資源管理器:使用Apache、Yarn或者M(jìn)esos 分配資源—內(nèi)存和CPU
- 節(jié)點管理器:定位每個服務(wù)器的角色—節(jié)點—Hadoop系統(tǒng)中
工作歷史服務(wù)器:密切關(guān)注MapReduce和其他工作的執(zhí)行情況,并且,在必要時,進(jìn)行重新安排。
繼續(xù)使用OpenStack Sahara部署Hadoop,上傳一個VM映像,例如帶cloud-init的Ubuntu。接下來,使用Safari注冊一個圖像,將你使用的插件添加匹配的標(biāo)簽,例如Vanilla。向Horizon添加Sahara時,可以使用儀表板。VM模板、節(jié)點組模板具有相同的RAM和CPU特點,例如,m1.medium。最后,將節(jié)點組模板與集群模板相結(jié)合。
一旦完成這些步驟,在Horizon創(chuàng)建實例,設(shè)置主從Hadoop節(jié)點。然后,啟動集群—實例。可以創(chuàng)建一個Hadoop job。可以是Spark、Pig、Java、MapReduce等等。然后,啟動集群工作。最后,輸出結(jié)果到Cinder或者其他存儲。
Spark、Hadoop和Sahara
OpenStack Sahara并不是Hadoop或者Spark的增強版。相反,你可以把OpenStack Sahara看作一個圖形或者命令行工具,使用OpenStack Sahara,建立一個分布式Hadoop或者Spark系統(tǒng),變得更加簡單。OpenStack Sahara不僅有助于安裝這些系統(tǒng);OpenStack Sahara還能跟蹤服務(wù)器的服務(wù)功能。因此,通過屏幕,可以看到整個布局。
沒有OpenStack Sahara的話,安裝Spark或者Hadoop存在的最大困難是,你需要手動安裝虛擬機。借助于OpenStack Sahara,可以跳過這一步,然后,你可以在上面安裝Hadoop和 Spark。
OpenStack Sahara使你能夠為每個服務(wù)器分配一個角色,因此,你要知道哪些服務(wù)器是用來存儲數(shù)據(jù)的,哪些服務(wù)器是用來收集數(shù)據(jù)的,哪些服務(wù)器是用來協(xié)調(diào)所有活動的。一旦這一切已經(jīng)敲定,當(dāng)你需要規(guī)模擴展的時候,你可以重復(fù)這個過程。這是因為,你可以將你的想法另存為模板,就像OpenStack將不同的VM配置保存為模板。
OpenStack Sahara也能夠幫助你跟蹤其他復(fù)雜的細(xì)節(jié),并且將這些復(fù)雜的細(xì)節(jié)納入決策。例如,Hadoop背后的指導(dǎo)原則是,Hadoop使得每一塊冗余數(shù)據(jù)分為三份。因此,把所有數(shù)據(jù)放置在同一臺機器上、電源或者架子上,毫無意義。Sahara能起到很大的作用,因為Sahara本身就知道數(shù)據(jù)中心架配置,為了提高性能,可以將數(shù)據(jù)集中,為了避免冗余的話,也可以將數(shù)據(jù)分開。
綜上所述,對那些已經(jīng)使用OpenStack的用戶來說,Sahara使得安裝Hadoop和Spark變得更加容易。當(dāng)然,你也可以使用Puppet、Ansible或者Docker,但是,這些都不是云的操作系統(tǒng)。