毫無(wú)疑問,Apache Hadoop軟件庫(kù)擁有當(dāng)今最多的大數(shù)據(jù)分析思想。Gartner在2012年三月的報(bào)告中指出Hadoop作為一個(gè)流行的搜索詞,在網(wǎng)站上的搜索量已經(jīng)比2011年增加了601.8%。Hadoop逐漸普及的背后主要的驅(qū)動(dòng)力在于大數(shù)據(jù)和社交計(jì)算的炒作,廣泛的企業(yè)級(jí)開源軟件應(yīng)用,擁有Hadoop熟練技能的開發(fā)人員資源池以及Hadoop可以用預(yù)期達(dá)成的性能以低廉的商業(yè)服務(wù)器集群成本交付高可用性。后面的這個(gè)性能讓企業(yè)能夠?qū)adoop工作負(fù)載部署到IaaS和PaaS提供商的云上,代替數(shù)據(jù)中心資本投資中的幾次付費(fèi)費(fèi)用。
Apache軟件基金會(huì)將Hadoop描述為:
Apache Hadoop項(xiàng)目是用以開發(fā)可靠、可擴(kuò)展且分布式的計(jì)算的開源軟件。
Apache Hadoop軟件庫(kù)是一種通過使用簡(jiǎn)單的編程模型,跨計(jì)算機(jī)集群的大型數(shù)據(jù)集分布式處理框架。旨在從單一服務(wù)器擴(kuò)展到成千上萬(wàn)的機(jī)器,每一個(gè)產(chǎn)品本地計(jì)算并存儲(chǔ)。而不是依賴于硬件來(lái)交付高可用性,該軟件庫(kù)本身旨在檢測(cè)和處理應(yīng)用層的失敗,從而交付計(jì)算機(jī)集群頂層的高可用性服務(wù),每一個(gè)都可能發(fā)生故障。
商業(yè)開源分布式軟件,像紅帽Enterprise Linux,屬于企業(yè)級(jí)不可或缺的。Cloudera領(lǐng)先的商業(yè)Hadoop分布式用免費(fèi)增值模式,提供了免費(fèi)的Cloudera Distribution for Hadoop (CDH),但是需要對(duì)支持和Cloudera Manager應(yīng)用許可證。因?yàn)槠渖虡I(yè)模式和市場(chǎng)支配,Cloudera成為很多“紅帽Hadoop”的使用者的考慮對(duì)象。Yahoo!經(jīng)典的Hadoop開發(fā)者,已經(jīng)改變了野蠻,但是Cloudera卻在出售其“Hadoop圣經(jīng)。”因此Yahoo!于2011年六月甩掉了其Hadoop工程師團(tuán)隊(duì),進(jìn)入Hortonworks,Benchmark資本投資的一個(gè)新的實(shí)體,來(lái)獲取Hadoop的收益,從而與Cloudera競(jìng)爭(zhēng)。Cloudera2012年三月宣布同IBM合作,將其CDH、Cloudera Manager同本地的IBM BigInsights平臺(tái)整合,并放入IBM的公有SmartCloud服務(wù)中。
亞馬遜的彈性MapReduce
亞馬遜Web服務(wù)(AWS)于2009年4月2日引入了彈性MapReduce服務(wù)(EMR),讓AWS成為基于云的Hadoop服務(wù)的祖父。EMR使用按需的EC2實(shí)例集群處理存儲(chǔ)于S3或者DynamoDB中的數(shù)據(jù)。專業(yè)的按需EMR實(shí)例陳本范圍從小型的每小時(shí)0.105美元到每小時(shí)0.864美元的大型Hi-CPU實(shí)例,包括EMR額外的費(fèi)用。S3和Dynamo DB存儲(chǔ)為標(biāo)準(zhǔn)的按月付費(fèi),每GB數(shù)據(jù)傳輸?shù)絹嗰R遜數(shù)據(jù)中或者從亞馬遜數(shù)據(jù)中心輸出都適用。你可以按每小時(shí)付費(fèi)或者你實(shí)際運(yùn)行的實(shí)例付費(fèi)。
AWS在EMR開始手冊(cè)中提供了代碼示例和教程,介紹在Linux、UNIX以及Windows語(yǔ)法中,通過EMR Command Line Interface (CLI)創(chuàng)建Streaming Job Flow?;蛘吣憧梢赃m用Hive和亞馬遜EMR工作流創(chuàng)建和執(zhí)行一個(gè)簡(jiǎn)單的Contextual Advertising,如圖一所示,EMR Management Console,鏈接中的博客描述了細(xì)節(jié)。
圖一圖解自動(dòng)化彈性MapReduce和Hive工作流。你可以從CLI或者AWS管理控制臺(tái)運(yùn)行交互的Hive會(huì)話。
這篇文章對(duì)比了用AWS Management Console(圖二)創(chuàng)建Hive工作流,而不是CLI,因?yàn)槲④浀腁pache Hadoop>
圖二,AWS Management Console下Elastic MapReduce選項(xiàng)創(chuàng)建Job Flow頁(yè)面。點(diǎn)擊Create New Job Flow按鈕,可以選擇Contextual Advertising示例HiveQL聲明,轉(zhuǎn)換ad-server impression數(shù)據(jù)到Hive表中。此外,MapReduce操作生成匯總廣告效率的順序文件。
2012年5月31日,AWS升級(jí)EMR到最新的Hive版本(0.8.1)中。Hive能夠翻譯HiveQL聲明到MapReduce操作中并在執(zhí)行這個(gè)操作,相反本地文件中湖綜合公有云數(shù)據(jù)存儲(chǔ)(比如亞馬遜 S3或者Windows Azure blobs)的Hive表中的數(shù)據(jù)也是。例如,下面示例的HiveQL聲明創(chuàng)建了一個(gè)名為impressions的Hive表,在SerializeDeserialize (serde)格式中有七個(gè)字段,從S3中JavaScript Object Notation (JSON)格式存儲(chǔ)的ad-server impression日志文件……/表/ impressions folder:
CREATE EXTERNAL TABLE impressions (
requestBeginTime string
adId string,
impressionId string,
referrer string,
userAgent string,
userCookie string,
ip string )
PARTITIONED BY (dt string)
ROW FORMAT
serde 'com.amazon.elasticmapreduce.JsonSerde'
with serdeproperties ( 'paths'='requestBeginTime, adId,
impressionId, referrer,
userAgent, userCookie, ip' )
LOCATION '${SAMPLE}/tables/impressions' ;
Contextual Advertising工作流運(yùn)行之前的聲明,存儲(chǔ)在S3腳本文件中,從而為后來(lái)的分析創(chuàng)建Hive表。第二個(gè)CREATE EXTERNAL TABLE聲明生成一個(gè)點(diǎn)擊表,從ad click日志數(shù)據(jù)和另一個(gè)impressions和clicks聯(lián)合的表。如果你使用推薦的大型實(shí)例,每個(gè)實(shí)例每小時(shí)0.42美元,需要一個(gè)關(guān)鍵或者兩個(gè)核心實(shí)例,成本是1.26美元。使用默認(rèn)的小型實(shí)例,成本降到0.315美元。小型實(shí)例整個(gè)執(zhí)行時(shí)間大約是20分鐘。整個(gè)執(zhí)行完成后,管理控制臺(tái)停止運(yùn)行所有實(shí)例。
進(jìn)一步的操作會(huì)生成一個(gè)功能主頁(yè)表,可以用于計(jì)算一個(gè)廣告的點(diǎn)擊估價(jià)。以S3腳本的形式存儲(chǔ)這些估價(jià)HiveQL聲明,選擇一個(gè)而你不是第二步中的工作流處理示例腳本,在管理控制臺(tái)的S3選擇項(xiàng)中查看作為結(jié)果生成的S3文件。
微軟的Apache Hadoop>
圖三,AhoWA網(wǎng)站的Metro-ized Create a New Cluster頁(yè)面。制定一個(gè)唯一的DNS命名,選擇一個(gè)集群大小并提供管理認(rèn)證,啟用Request Cluster按鈕。分配一個(gè)大型集群的一個(gè)集群頭和四個(gè)工作結(jié)點(diǎn)只需要幾分鐘。
創(chuàng)建了集群后你可以運(yùn)行九個(gè)示例Apache MapReduce中的一個(gè),Pig、Sqoop和Mahout項(xiàng)目?;蛘吣憧梢栽O(shè)置Windows Azure Marketplace Datamarket產(chǎn)品,Windows Azure對(duì)象容器或者亞馬遜S3文件所謂數(shù)據(jù)源,放入Hive表中,具體的介紹詳見鏈接的博客(圖四)。
圖四,從亞馬遜S3表格上傳。Manage Cluster頁(yè)面的啟動(dòng)S3按鈕打開這個(gè)表格,需要你的AWS Access Key和Secret Key進(jìn)行驗(yàn)證。你為S3數(shù)據(jù)源文件選定具體的URL進(jìn)入到HiveQL聲明中。
下面的HiveQL聲明鍵入在文本框中的數(shù)據(jù)顯示區(qū)域,創(chuàng)建了一個(gè)本地功能主頁(yè)Hive表,以Hadoop SEQUENCEFILE的格式有四列,用于后來(lái)的查詢:
CREATE EXTERNAL TABLE feature_index (
feature STRING,
ad_id STRING,
clicked_percent DOUBLE )
COMMENT 'Amazon EMR Hive Output'
STORED AS SEQUENCEFILE
LOCATION 's3n://oakleaf-emr/hive-ads/output/2012-05-29/feature_index';
點(diǎn)擊Evaluate按鈕執(zhí)行這個(gè)聲明,大約四秒的時(shí)間內(nèi)清空文本框并創(chuàng)建一個(gè)鏈接到數(shù)據(jù)源(見圖五)。從S3數(shù)據(jù)源中選擇查詢下載數(shù)據(jù)。
圖五,去人HiveQL查詢的執(zhí)行。查看工作日志需要一個(gè)遠(yuǎn)程桌面協(xié)議(RDP)連接到Azure High Performance Cluster中。
創(chuàng)建一個(gè)Hive表,增加其名稱到表格列表中,命名列到列列表中,執(zhí)行SELECT * FROM feature_index LIMIT ,20個(gè)查詢結(jié)果顯示出來(lái),這是最先的20個(gè)結(jié)果(見圖六)。
圖六,第一個(gè)20行?;?.265秒來(lái)執(zhí)行一個(gè)簡(jiǎn)單的HiveQL SELECT查詢,由于互聯(lián)網(wǎng)延遲和相對(duì)較低的DSL連接。
AWS的Contextual Advertisin中的“Applying the Heuristic”部分建議執(zhí)行下面的示例HiveQL查詢對(duì)抗功能主頁(yè)表“功能'us:safari' and 'ua:chrome'如何執(zhí)行”:
SELECT ad_id, -sum(log(if(0.0001 > clicked_percent, 0.0001, clicked_percent))) AS value
FROM feature_index
WHERE feature = 'ua:safari' OR feature = 'ua:chrome'
GROUP BY ad_id
ORDER BY value DESC
LIMIT 100;
根據(jù)文章:
結(jié)果就是通過試探性的偶然點(diǎn)擊排序廣告。在這一點(diǎn)上,我們查閱廣告,假設(shè)蘋果產(chǎn)品的優(yōu)勢(shì)。
圖七展示了執(zhí)行之前查詢的結(jié)果,展示了最高點(diǎn)擊率的廣告:
圖七,返回的100個(gè)最高點(diǎn)擊率的第一個(gè)15行。Hive History數(shù)據(jù)并沒有顯示出來(lái),期間兩個(gè)MapReduce工作已經(jīng)執(zhí)行。
如果你對(duì)于集成PowerPivot和Excel,通過交互Hive控制臺(tái)生產(chǎn)數(shù)據(jù)感興趣,看看我的《Using Excel 2010 and the Hive ODBC Driver to Visualize Hive Data Sources in Apache Hadoop>