Hadoop 的實常式序有哪些推薦?

最近在學Hadoop,不過網上的程序大多是諸如wordcount之類的。能否推薦幾個更有實際操作的,以及相對wordcount更複雜的採用更大數據量的程序。謝謝 !


必須推薦https://github.com/intel-hadoop/HiBench 啊,大數據benchmark,涵蓋wordcount,sort,SQL,machine learning,data mining各種你想到的hadoop應用實例啊。

關鍵是簡單又強大啊,一鍵運行有木有,自動數據生成有木有,數據量可配置有木有,簡直就是居家旅行,開發測試,玩轉大數據必備神器啊。


WordCount也可以運行在很大量的數據上,比如你有整個互聯網的網頁數據。

邏輯相對更複雜的實例一般都與業務相關,公司是不會公開細節的。


GitHub - chubbyjiang/MapReduce: MapReduce Demo

自己在學習過程中收集整理的一些MapReduce場景Demo,希望有所幫助


提供一些基礎資料:

本人有關hadoop學習的技術博客,歡迎拍磚

http://blog.csdn.net/liushahe2012

本人github上的小程序用例,求star

Hadoop案例之年份溫度排序:https://github.com/liushahe2012/hadoop_yearTemperature

Hadoop案例之單表關聯輸出祖孫關係:liushahe2012/hadoop_SingleTableJoin

hadoop_wordCount:liushahe2012/hadoop_wordCount

Hadoop案例之倒排索引:liushahe2012/Hadoop_InvertedIndex

Hadoop案例之二度人脈與好友推薦:liushahe2012/Hadoop_Deg2friend

Hadoop案例之基於物品的協同過濾演算法ItemCF:liushahe2012/Hadoop_ItemCF

Hadoop案例之自定義分片策略解決大量小文件問題:liushahe2012/Hadoop_MuiltiSmallFileCombine

ApplicationMaster的簡化版,演示了YARN服務庫和事件庫的使用方法:liushahe2012/Hadoop_SimpleApplicationMaster

Hadoop源碼解析之RPC協議:liushahe2012/Hadoop_RPCDemo


理解MR很重要,這裡先不說內部原理,你目前最關心的應該是處理過程的問題

MR是一行一行數據處理的。

M,如果你讀取的是HDFS上的文件,M每次處理就會獲取一行數據,在map()方法裡面處理,至於如何處理看你喜好,基本都是字元串處理。

R,也是一行一行處理的,M的每一行來自於文件上的讀取數據,R的每一行來自於M的輸出。

所以在M的map()處理完後想丟給R的就要context.write(key, value);給R處理

注意:write時的key、value。所有相同的key會被組合成一個數據給R處理

假設M輸出write時,有

key=a,value=1

key=a,value=2

key=a,value=2

key=b,value=3

key=b,value=4

R會處理兩次,分別是

key=a,value=1,2,2

key=a,value=3,4

在R裡面,通過迭代獲取value裡面的值,至於數據如何處理個人喜好。

同樣R也有write輸出,輸出內容會放到HDFS指定位置

HDFS -&> M -&> R -&> HDFS

當然M的來源不止一個,例如可以來源於HBase等


理解了wordcount之後,可以試圖將一些經典演算法問題抽象為mapreduce模型。會對培養mapreduce思維有幫助,呵呵。


最代碼網站上有分享的hadoop代碼,有興趣的可以看看:

hadoop入門教程及其實例代碼

搜索"hadoop"的分享列表


比如分析pv、uv,比如分析熱門商品等等。可以看看hive,了解facebook是如何實現以及使用的,淘寶的可以看http://velocity.oreilly.com.cn/2010/index.php?func=sessionname=%E6%B7%98%E5%AE%9D%E4%BA%91%E6%A2%AF%E5%88%86%E5%B8%83%E5%BC%8F%E8%AE%A1%E7%AE%97%E5%B9%B3%E5%8F%B0%E6%95%B4%E4%BD%93%E6%9E%B6%E6%9E%84


有個數據挖掘的開源框架叫mahout,裡面很多演算法(如協同過濾、聚類)都有mapreduce實現的版本。可以看看mapreduce在商業領域是如何實用的。


你需要海量的數據,如果沒有可以自己造數據。複雜的程序一般都是因為業務複雜,和公司有關的程序當然不方便公開,建議你可以看看Hive是如何把HSQL轉化為MapReduce程序的。


其實沒有什麼應用,只是規模大一點,邏輯上最多是在模仿 SQL。


對Hadoop感興趣但還沒深究過,不過看到Apache網站上提到這些與Hadoop相關的項目,對你或許有幫助:

  • Avro?: A data serialization system.
  • Cassandra?: A scalable multi-master database with no single points of failure.
  • Chukwa?: A data collection system for managing large distributed systems.
  • HBase?: A scalable, distributed database that supports structured data storage for large tables.
  • Hive?: A data warehouse infrastructure that provides data summarization and ad hoc querying.
  • Mahout?: A Scalable machine learning and data mining library.
  • Pig?: A high-level data-flow language and execution framework for parallel computation.
  • ZooKeeper?: A high-performance coordination service for distributed applications.

網址就在:http://hadoop.apache.org/里


推薦閱讀:

物聯網、大數據、雲計算、人工智慧之間的關係如何?
中國為什麼沒有類似 Amazon AWS 的雲計算公司?在中國做這樣的公司會有哪些阻礙?
微軟的雲計算服務 Azure 與亞馬遜的 AWS 有什麼區別?
Google 的雲計算業務為什麼沒有 Amazon 的 AWS 成功?

TAG:雲計算 | Java | Hadoop | 程序 | MapReduce |