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