審查“大數(shù)據(jù)”時(shí)代的PaaS狀態(tài)
諸如Amazon公司、Google公司、Heroku、IBM公司以及微軟公司等主要的PaaS廠商將今年定為云計(jì)算的“大數(shù)據(jù)”之年一事已得到了大肆宣傳。但是,實(shí)際上在公共云計(jì)算中又是哪一家供應(yīng)商提供了最為完整的Apache Hadoop實(shí)施呢?
隨著企業(yè)越來(lái)越多地采用平臺(tái)即服務(wù)(PaaS)云計(jì)算模式作為企業(yè)的數(shù)據(jù)倉(cāng)庫(kù)應(yīng)用解決方案,Apache Hadoop以及HDFS、MapReduce、Hive、Pig與其他的子組件正在成為大數(shù)據(jù)分析的主力軍,這一趨勢(shì)也變得逐漸明朗化。為了表明Hadoop已經(jīng)成熟并已可用于生產(chǎn)分析云計(jì)算環(huán)境的商用化應(yīng)用,Apache Foundation已升級(jí)至具有里程碑性質(zhì)的Hadoop v1.0版本。
在供應(yīng)商的數(shù)據(jù)中心為批處理托管MapReduce處理創(chuàng)建高擴(kuò)展性、即付即用Hadoop集群的能力可允許企業(yè)IT部門避免因內(nèi)部自有服務(wù)器的零星使用而造成的資本支出。其結(jié)果就是,Hadoop已成為財(cái)大氣粗PaaS供應(yīng)商們(Amazon、Google、IBM和微軟)的必需品,以打包Hadoop、MapReduce或這兩者作為其預(yù)建服務(wù)。
AWS的彈性MapReduce
2009年四月Amazon網(wǎng)絡(luò)服務(wù)(AWS)成為了彈性MapReduce(EMR)的始作俑者。EMR處理Hadoop集群配置、運(yùn)行和終止任務(wù)以及在Amazon EC2和Amason S3(簡(jiǎn)單存儲(chǔ)服務(wù))之間實(shí)現(xiàn)數(shù)據(jù)傳輸。EMR還提供了Apache Hive,它可建立在Hadoop之上以用于數(shù)據(jù)倉(cāng)庫(kù)服務(wù)。
圖1
Amazon網(wǎng)絡(luò)服務(wù)的彈性MapReduce功能,對(duì)CloudWatch工作的工作流指標(biāo)進(jìn)行采樣。(圖片由AWS提供)
對(duì)于從機(jī)故障,EMR是有故障容錯(cuò)機(jī)制的;Amazon建議以Spot Instances只運(yùn)行任務(wù)實(shí)例組,從而實(shí)現(xiàn)在利用更低成本優(yōu)勢(shì)的同時(shí)仍然保持可用性。但是,在2011年八月之前AWS并不支持Spot Instances。
Amazon為EMR定出了每小時(shí)0.015至0.05美元的附加費(fèi)標(biāo)準(zhǔn),并將其作為小型云主機(jī)至超強(qiáng)集群云主機(jī)EC2實(shí)例的額定值。根據(jù)AWS的官方說(shuō)法:一旦你開始了工作流,Amazon彈性MapReduce就處理Amazon EC2的實(shí)例配置、安全設(shè)置、Hadoop配置以及設(shè)置、日志收集、健康監(jiān)控以及其他與硬件相關(guān)的復(fù)雜性,例如從你正在運(yùn)行的工作流中自動(dòng)移除故障實(shí)例。AWS于近期為EMR實(shí)例發(fā)布了免費(fèi)CloudWatch指標(biāo)。(圖1)
Google公司的AppEngine-MapReduce
根據(jù)Google公司開發(fā)人員Mike Aizatskyi的說(shuō)法,所有Google團(tuán)隊(duì)都在使用于2004年首次推出的MapReduce。Google公司發(fā)布了一個(gè)作為“MapReduce API的早期實(shí)驗(yàn)性發(fā)布版本”的AppEngine-MapReduce API以支持在Google App Engine上運(yùn)行Hadoop 0.20程序。之后,該開發(fā)團(tuán)隊(duì)于2011年三月發(fā)布了低層次API v1.4.3版,以便于為Blob和改進(jìn)開源用戶空間Shuffler功能的中間結(jié)果提供一個(gè)類文件的系統(tǒng)(圖2)?!?/p>
圖2
Google AppEngine-MapReduce的Shuffle在一個(gè)I/O 2012會(huì)話中進(jìn)行處理。
Google AppEngine-MapReduce API通過(guò)一個(gè)Google Pipeline API精心安排Map、Shuffle和Reduce操作。在一段視頻短片中該公司為I/O 2012介紹了AppEngine-MapReduce的目前狀態(tài)。但是,直至2012年春季Google公司還沒(méi)有改變對(duì)其“早期實(shí)驗(yàn)性發(fā)布版本”的描述。AppEngine-MapReduce的主要目標(biāo)對(duì)象是Java和Python程序員,而不是大數(shù)據(jù)科學(xué)家和分析專家。Shuffler受限于約100MB的數(shù)據(jù)集,很明顯這不屬于大數(shù)據(jù)應(yīng)用的范疇。對(duì)于更大的數(shù)據(jù)集,你可以請(qǐng)求訪問(wèn)Google的BigShuffler。
Heroku的Treasure Data Hadoop附件
Heroku的Treasure Data Hadoop附件可使開發(fā)運(yùn)行人員使用Hadoop和Hive來(lái)分析托管應(yīng)用程序的日志和事件,這是該技術(shù)的主要功能之一。其他的Heroku大數(shù)據(jù)附件包括Cloudant的Apache CouchBase實(shí)施、源自于 MongoLab 和 MongoHQ的MongoDB、Redis To Go、Neo4j (Java圖形數(shù)據(jù)庫(kù)的公共版本)以及RESTful指標(biāo)。被稱為“.NET Heroku”的AppHarbor提供了類似的附件選擇,其中包括了Cloudant、MongoLab、MongoHQ 和 Redis To Go,再加上RavenHQ NoSQL 數(shù)據(jù)庫(kù)加載項(xiàng)。Heroku和AppHarbor都不支持通用Hadoop實(shí)施。
SmartCloud中的IBM Apache Hadoop
IBM公司于2011年十月開始以IBM SmartCloud企業(yè)版中InfoSphere BigInsights Basic的形式提供基于Hadoop的數(shù)據(jù)分析??晒芾矶噙_(dá)10TB數(shù)據(jù)的BigInsights Basic還有可用于Linux系統(tǒng)的免費(fèi)下載版本;BigInsights企業(yè)版是一個(gè)收費(fèi)的下載版本。這兩個(gè)下載版本都提供了Apache Hadoop、HDFS、MapReduce框架,以及一整套的Hadoop子項(xiàng)目??上螺d企業(yè)版包括了一個(gè)可用于編寫文本分析、類似電子表格的數(shù)據(jù)發(fā)現(xiàn)與挖掘工具、以及JDBC連接至Netezza和DB2的基于Eclipse插件。兩個(gè)版本都提供了集成的安裝與管理工具(圖3)。

圖3
IBM的大數(shù)據(jù)平臺(tái)和使用界面。(圖片由IBM提供)
我的測(cè)試——驅(qū)動(dòng)IBM的SmartCloud企業(yè)基礎(chǔ)設(shè)施作為服務(wù):第一部分和第二部分的教程介紹了于2011年四月發(fā)布的SmartCloud企業(yè)免費(fèi)試用版的管理功能。從IBM的技術(shù)出版物來(lái)看,目前還不清楚公共云計(jì)算中可下載BigInsight版中可提供些什么功能。他們的云計(jì)算:IT專業(yè)人士社區(qū)資源頁(yè)面中只列出了一個(gè)BigInsights Basic 1.1:Hadoop Master 和數(shù)據(jù)節(jié)點(diǎn)鏡像;一個(gè)IBM公司的代表證實(shí),SmartCloud版并不包括MapReduce或其他的Hadoop子項(xiàng)目。Hadoop提供的SmartCloud教程解釋了如何在SmartCloud企業(yè)版中配置和測(cè)試一個(gè)三節(jié)點(diǎn)的集群。由此可見,IBM當(dāng)前的BigInsights云計(jì)算版本正在錯(cuò)失數(shù)據(jù)分析中的關(guān)鍵元素。
微軟公司W(wǎng)indows Azure的Apache Hadoop
微軟公司聘請(qǐng)了Hortonworks(一個(gè)專門提供Hadoop咨詢的Yahoo! Spinoff)以幫助實(shí)施Windows Azure的Apache Hadoop或Azure的Hadoop(HoA)。自2011年12月14日以來(lái),HoA已進(jìn)入只接受邀請(qǐng)加入的社區(qū)技術(shù)預(yù)演階段(CTP或私人測(cè)試)。
在加入Hadoop的行列之前,微軟公司依靠由微軟研究院開發(fā)的圖形數(shù)據(jù)庫(kù)Dryad和一個(gè)高性能計(jì)算附件(LINQ至HPC)來(lái)進(jìn)行大數(shù)據(jù)分析處理。Azure CTP的Hadoop提供了一個(gè)從小型(有4TB存儲(chǔ)容量的四計(jì)算節(jié)點(diǎn))到超大(16TB的32節(jié)點(diǎn))的預(yù)定義Hadoop集群選擇,簡(jiǎn)化了MapReduce操作。加入CTP預(yù)發(fā)布計(jì)算節(jié)點(diǎn)或存儲(chǔ)是不收取費(fèi)用的。

圖4
微軟公司提供了四個(gè)Hadoop/MapReduce項(xiàng)目示例:計(jì)算圓周率л的值、執(zhí)行Terasort和WordCount基準(zhǔn),以及演示如何使用C#語(yǔ)言編寫一個(gè)供流數(shù)據(jù)使用的MapReduce程序。
微軟公司還提供了新的JavaScript運(yùn)行庫(kù)以便于使JavaScript成為Hadoop的一流編程語(yǔ)言。這意味著JavaScript程序員可以使用JavaScript編寫MapReduce程序,并從網(wǎng)絡(luò)瀏覽器運(yùn)行這些任務(wù)程序,從而減少Hadoop/MapReduce條目的障礙。CTP還包括了一個(gè)用于Excel的Hive附件,它可讓用戶與Hadoop中的數(shù)據(jù)進(jìn)行交互。用戶可以從附件發(fā)出Hive查詢以便于在熟悉的Excel用戶界面中分析Hadoop的非結(jié)構(gòu)化數(shù)據(jù)。預(yù)覽版還包括了一個(gè)Hive ODBC驅(qū)動(dòng)器,它可實(shí)現(xiàn)Hadoop與其他微軟商業(yè)智能工具的集成。在近期關(guān)于Windows Azure的Apache Hadoop服務(wù)帖子中,我解釋了如何運(yùn)行Terasort基準(zhǔn),即四個(gè)MapReduce任務(wù)示例之一(圖4)。
HoA本應(yīng)計(jì)劃在2012年中Windows Azure“春潮”中實(shí)現(xiàn)新功能和改進(jìn)功能的升級(jí)。此次升級(jí)將使HoA團(tuán)隊(duì)為CTP吸引更多的測(cè)試人員,并可能包括內(nèi)部或私有云計(jì)算以及混合云計(jì)算實(shí)施所使用Windows Server 2008 R2的Apache Hadoop。在2011年底和2012年初,微軟公司一直在積極努力以降低Windows Azure計(jì)算實(shí)例和存儲(chǔ)的費(fèi)用;與Amazon彈性MapReduce相比,Azure發(fā)布版本的Hadoop定價(jià)可能也具有一定的競(jìng)爭(zhēng)力。
大數(shù)據(jù)對(duì)Hadoop和MapReduce意味著更多
我同意Forrester Research的分析師James Kobielus在博客中發(fā)表的博文,“在大數(shù)據(jù)的世界中,Hadoop/MapReduce將是一個(gè)關(guān)鍵的發(fā)展框架,但并不是唯一的一個(gè)。”微軟公司還為.NET框架提供了代號(hào)為“Cloud Numerics”的CTP,它允許開發(fā)運(yùn)行團(tuán)隊(duì)在Windows Azure中對(duì)大型分布式數(shù)據(jù)集執(zhí)行數(shù)字密集型計(jì)算。
微軟研究院還公布了在Windows Azure中實(shí)施Excel云計(jì)算數(shù)據(jù)分析及其“Daytona”項(xiàng)目MapReduce迭代實(shí)施的源代碼。但是有跡象表明,在可預(yù)見的未來(lái),開源Apache Hadoop及其相關(guān)子項(xiàng)目將主宰云計(jì)算托管應(yīng)用。
提供最自動(dòng)化Hadoop、MapReduce和Hive實(shí)施的PaaS供應(yīng)商將獲得大數(shù)據(jù)科學(xué)家和數(shù)據(jù)分析從業(yè)者最密切的關(guān)注。微軟公司專為商業(yè)智能(BI)應(yīng)用配置Excel前端,使該公司的大數(shù)據(jù)產(chǎn)品在日益增長(zhǎng)自助服務(wù)BI用戶中游刃有余。目前,Amazon和微軟公司提供了最完整和自動(dòng)化的云計(jì)算Hadoop大數(shù)據(jù)分析服務(wù)。