Hadoop 筆記

2016.08.06 筆記

《Hadoop 權威指南》

初識Hadoop

MapReduce 和 關係型數據庫

Hadoop爲我們提供了一個可靠的共享存儲和分析系統
HDFS實現數據的存儲
MapReduce實現數據的分析和處理

如果數據庫系統只更新一小部分記錄,那麼B樹更有優勢(關係型數據庫中使用的一種數據結構,受限於尋址的比例)

但數據庫系統如果有大量數據更新時,B樹的效率就明顯落後於MapReduce,因爲需要使用排序合併來重建數據庫。

在許多情況下,可以將MapReduce視爲關係型數據庫管理系統的補充

MapReduce比較適合以批處理方式處理需要分析整個數據集的問題,尤其是動態分析;適合一次寫入、多次讀取數據的應用
RDBMS(關係型數據庫)適用於點查詢和更新;適合持續更新的數據集

基於MapReduce的高級查詢語言:
Pig
Hive

Hadoop發展歷史

MapReduce由谷歌的工程師開發,用於構建搜索引擎的索引

HadoopApache Lucene創始人創建的
(Lucene是一個開放源代碼的全文檢索引擎工具包,)

Hadoop起源於開源網絡搜索引擎Apache NutchNutch是基於Lucene的)

Nutch是一個可以運行的網頁爬取工具和搜索引擎系統

NutchGFS(谷歌分佈式文件系統)論文啓發,開發了NDFSNutch分佈式文件系統)

NDFS 後來改名HDFS

2004年穀歌發表論文介紹MapReduce
Nutch完成移植,使用MapReduceNDFS來運行

開發人員將NDFSMapReduce移出Nutch形成Lucence的一個子項目,命名爲Hadoop

Hadoop在雅虎發展成能夠處理Web數據的系統

紐約時報案例:
他們把1851年到1980年的存檔掃描之後得到4T的文件並用亞馬遜的EC2雲服務將文件存爲PDF格式放到網上共享,整個過程一共使用了100臺計算機,所花時間不到24小時。

Hadoop在209秒內完成了對1TB數據的排序

Hadoop已經是公認的大數據通用存儲和分析平臺

雅虎搜索引擎主要組成部分
Crawler 從網頁服務器爬取網頁
WebMap 構建一個已知網頁的鏈接圖(生成的鏈接圖非常大,需要大批計算機很長時間運行來創建和分析)
Indexer 爲最佳頁面構建一個反向索引
Runtime 處理用戶的查詢

關於MapReduce

MapReduce是一種可用於數據處理的編程模型

Hadoop可以運行各種語言版本的MapReduce程序

傳統按行存儲數據的工具是awk

爲了充分利用Hadoop提供的並行處理優勢,我們需要將查詢表示成MapReduce作業。完成某種本地端的小規模測試之後,就可以把作業部署到集羣上運行。

map函數的輸出經由MapReduce框架處理後,最後發送到reduce函數

繼承Mapper類,重寫map()函數
繼承Reducer類,重寫reduce()函數

運行MapReduce作業
main函數中:

Job job = new Job;
job.setJarByClass(...);
job.setJobName("...");
job.setMapperClass(...);
job.setReducerClass(...);
job.setOutputKeyClass(...);
job.setOutputValueClass(...);
job.waitForCompletion(...);  // 提交作業並等待執行完成

Hadoop集羣上運行一個作業時,要把代碼打包成一個jar文件,在集羣上發佈這個文件。

使用hadoop執行程序

每個reducer都有一個輸出文件

發佈了34 篇原創文章 · 獲贊 21 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章