如何用Hadoop搭建大型分布式應(yīng)用
Hadoop一個(gè)分布式系統(tǒng)基礎(chǔ)架構(gòu),由Apache基金會(huì)開發(fā)。用戶可以在不了解分布式底層細(xì)節(jié)的情況下,開發(fā)分布式程序。在去年Techonomy會(huì)議上參加討論時(shí),谷歌CEO Eric Schmidt引用一個(gè)驚人的事實(shí)指出,我們現(xiàn)在每兩天創(chuàng)造的信息和2003年以來整個(gè)歷史上所創(chuàng)建的信息一樣多。信息泛濫帶來了一系列的技術(shù)突破,這讓企業(yè)的數(shù)據(jù)存儲(chǔ)擴(kuò)展到數(shù)千億字節(jié)甚至是數(shù)拍字節(jié)。
谷歌在此領(lǐng)域的貢獻(xiàn)是尤其值得注意,包括它在MapReduce上的工作,它是一種大型分布式數(shù)據(jù)處理的方法,谷歌采用此方法來記錄位于索引資源(映射這些數(shù)據(jù))收藏里的關(guān)鍵字或短語,接著再把這些位置的記錄和清單返回給用戶(將映射數(shù)據(jù)減少到緊密相關(guān)的結(jié)果)。映射和減少操作可以涵蓋模式識(shí)別、圖解分析、風(fēng)險(xiǎn)管理和預(yù)測模式。
雖然谷歌的MapReduce安裝是專有的,還存在MapReduce概念的很多開源安裝,包括Apache Hadoop。事實(shí)上,Hadoop已經(jīng)是分布式數(shù)據(jù)處理的實(shí)際解決方案了,數(shù)十個(gè)國際公司已經(jīng)從執(zhí)行和開發(fā)兩個(gè)方面大力投資該項(xiàng)目。Adobe、Amazon、AOL、Baidu、EBay、Facebook、Hulu、IBM、Last.fm、LinkedIn、Ning、Twitter和Yahoo等已成為用戶,很多大學(xué)、醫(yī)院和研究中心也都成為用戶,采用并不受互聯(lián)網(wǎng)重要人物的限制。
Hadoop項(xiàng)目介紹
和Apache軟件基金會(huì)(ASF)的很多項(xiàng)目一樣,Hadoop是一個(gè)涵蓋性術(shù)語,它分配基金會(huì)的全部措施來產(chǎn)生“可信、可擴(kuò)展且分布式計(jì)算的開源軟件”?,F(xiàn)在的措施由四個(gè)子項(xiàng)目組成,包括:
Hadoop Common:Hadoop Common形成Hadoop項(xiàng)目的核心,通過緊跟著的同胞項(xiàng)目提供所需的“管道裝置”。
HDFS:Hadoop分布式文件系統(tǒng)(HDFS)是遍及計(jì)算集群負(fù)責(zé)復(fù)制和分配數(shù)據(jù)的存儲(chǔ)系統(tǒng)。
MapReduce:MapReduce是開發(fā)人員用來編寫應(yīng)用的軟件架構(gòu),這些應(yīng)用處理那些存儲(chǔ)在HDFS中的數(shù)據(jù)。
ZooKeeper:ZooKeeper負(fù)責(zé)協(xié)調(diào)配置數(shù)據(jù)、進(jìn)程同步和其它所有被分配應(yīng)用有效運(yùn)作所需的網(wǎng)絡(luò)相關(guān)服務(wù)。因此,雖然你確實(shí)會(huì)以單一檔案文件的形式下載Hadoop,記住,你正在下載的實(shí)際上是四個(gè)子項(xiàng)目,它們齊心協(xié)力來實(shí)施映射和歸算處理。
用Hadoop做實(shí)驗(yàn)
盡管Hadoop試圖解決的問題本質(zhì)復(fù)雜,從運(yùn)用這個(gè)項(xiàng)目開始會(huì)非常容易。作為一個(gè)例子,我認(rèn)為用Hadoop來完成我“用PHP簡化貝寶”一書中的詞頻率分析會(huì)很有趣。這個(gè)任務(wù)會(huì)仔細(xì)查看整本書(長度大概在130頁左右),并且產(chǎn)生一個(gè)所有書中出現(xiàn)詞語的分組列表,連同其中每個(gè)詞出現(xiàn)在頻率。
安裝Hadoop之后,我用Calibre把我的書從PDF轉(zhuǎn)成文本文檔。Hadoop wiki還包含相似的指令,但由于比較近期的Hadoop配置過程改變,以前的資源包含略有更新的指令。
接下來我用下面的命令從臨時(shí)位置把這本書復(fù)制到Hadoop分布式文件系統(tǒng):
- $ ./bin/hadoop dfs -copyFromLocal /tmp/easypaypalwithphp/ easypaypalwithphp
你可以通過運(yùn)用以下命令確認(rèn)復(fù)制成功:
- $ ./bin/hadoop dfs -ls
- rwxr-xr-x - hadoop supergroup 0 2011-01-04 12:48 /user/hadoop/easypaypalwithphp
緊接著,運(yùn)用和Hadoop一起打包的示例WordCount腳本來執(zhí)行詞頻率分析:
- $ ./bin/hadoop jar hadoop-mapred-examples-0.21.0.jar wordcount \
- > easypaypalwithphp easypaypalwithphp-output ...
- 11/01/04 12:51:38 INFO mapreduce.Job: map 0% reduce 0%
- 11/01/04 12:51:48 INFO mapreduce.Job: map 100% reduce 0%
- 11/01/04 12:51:57 INFO mapreduce.Job: map 100% reduce 100%
- 11/01/04 12:51:59 INFO mapreduce.Job: Job complete: job_201101041237_0002
- 11/01/04 12:51:59 INFO mapreduce.Job: Counters: 33
- FileInputFormatCounters
- BYTES_READ=274440
***,你可以用以下命令查看輸出內(nèi)容:
- $ ./bin/hadoop dfs -cat easypaypalwithphp-output/part-r-00000
- ...
- Next 21
- Next, 8
- No 5
- NoAutoBill 1
- Norwegian 1
- Not 2
- Notably, 2
- Note 5
- Notice 6
- Notification 13
- ...
示例WordCount頻率分析腳本非?;?,對(duì)書中文本里的每一列分配同等的重量,包括代碼。但是為了解析例如DocBook格式的文件并忽略代碼而修改腳本則會(huì)是很煩瑣的事情。無論如何,考慮一下你想要?jiǎng)?chuàng)建谷歌全球書籍詞頻統(tǒng)計(jì)器一類服務(wù)的情況,它查看超過520萬本書的關(guān)鍵詞語。
小結(jié):
如何用Hadoop搭建大型分布式應(yīng)用的內(nèi)容介紹完了,希望通過Hadoop搭建分布式應(yīng)用內(nèi)容的學(xué)習(xí)能對(duì)你有所幫助。
原文鏈接:http://www.searchsv.com.cn/showcontent_44761.htm