本篇在hadoop上實踐了幾個hadoop程序。
分別是:詞頻統計(wordcount)、數據去重、數據排序、平均成績、單表關聯、多表關聯、倒排索引。
對hadoop程序的運行機制,特別是mapreduce的運行過程、接口規範、shuffle有了進一步瞭解。
對mapper、combine、reducer三個重要函數進行了重寫。
對輸入輸出文件夾input、output文件的刪除、更新、上載下載有了實踐操作。
程序一:wordcount.hadoop的hello world程序。
程序二:depulication.數據去重。對多個文件中,重複的數據及整理,只輸出出現一次的數據。
程序三:sort.數據排序。對多個文件中的數據,進行排序,輸出到一個文件中,並給出數據在原文件位次。
程序四:singleTableCorrelation.單表關聯。對單個文件內的數據關聯進行挖掘,輸出有關係的數據組合。
程序五:doubleTableCorrelation.多表關聯。對多個文件內,數據之間的關係進行挖掘,輸出有關係的數據之間的組合。它是單表關聯的擴展,邏輯上更加清晰。
程序六:average.平均值。對多個文件內,同一個人、商品的多個維度的值求均值。輸出一個列出所有人、商品平均值的文件。
程序七:invertedindex:倒排索引。倒排索引是文件檢索系統常用的數據結果,能夠快速找出與查找字符相關的文件。
小結:
hadoop編程主要集中在map、combine、reduce三個函數的編寫。
hadoop需要經常讀寫文件,所以效率並不高。
優點是能夠利用hadoop集羣,實現高吞吐量。
參考文章:
1、http://penghuaiyi.iteye.com/blog/1943464(詳細列出了上述程序的源碼java實現,思路、相關input\output文件)