Ubuntu系統 (我用到版本號是140.4)java
ubuntu系統是一個以桌面應用爲主的Linux操做系統,Ubuntu基於Debian發行版和GNOME桌面環境。Ubuntu的目標在於爲通常用戶提供一個最新的、同時又至關穩定的主要由自由軟件構建而成的操做系統,它可無償使用,並帶有社團及專業的支持應。編程
做爲Hadoop大數據開發測試環境, 建議你們不要在windows上安裝CgyWin來學習或研究, 直接用Vmware+ubuntu來學習。ubuntu
下載 www.vmware.com這裏下載vmware, www.ubuntu.com這裏下載ubuntu。windows
Hadoop介紹(我用到版本號是1.2.1)服務器
Hadoop是一個由Apache基金會所開發的分佈式系統基礎架構。用戶能夠在不瞭解分佈式底層細節的狀況下,開發分佈式程序。充分利用集羣的威力進行高速運算和存儲。Hadoop實現了一個分佈式文件系統(Hadoop Distributed File System),簡稱HDFS。HDFS有高容錯性的特色,而且設計用來部署在低廉的(low-cost)硬件上;並且它提供高吞吐量(high throughput)來訪問應用程序的數據,適合那些有着超大數據集(large data set)的應用程序。HDFS放寬了(relax)POSIX的要求,能夠以流的形式訪問(streaming access)文件系統中的數據。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。架構
MapReduce編程思想併發
MapReduce是一種編程模型,用於大規模數據集(大於1TB)的並行運算。概念"Map(映射)"和"Reduce(歸約)",和它們的主要思想,都是從函數式編程語言裏借來的,還有從矢量編程語言裏借來的特性。它極大地方便了編程人員在不會分佈式並行編程的狀況下,將本身的程序運行在分佈式系統上。 當前的軟件實現是指定一個Map(映射)函數,用來把一組鍵值對映射成一組新的鍵值對,指定併發的Reduce(歸約)函數,用來保證全部映射的鍵值對中的每個共享相同的鍵組。框架
Hadoop能作什麼?編程語言
不少人或許沒接觸過大量數據的開發,例如一個網站日訪問量達幾千萬以上, 網站服務器會產生大量的各類日誌, 某天上班老闆問我想要統計一下什麼區域的人訪問網站最多, 具體數據大概是多少? 我曾經在一個Hadoop羣裏提問過, 不少人說我寫個程序就能實現, 有人說我本身寫一個分佈式的系統來專門計算。 能本身寫一個出來固然能證實你的能力, 但某一天老闆又問我想知道什麼年齡段的人訪問最多, 難道又寫一個分佈式的系統來計算? 這是浪費人力物力的事情。 並且就算寫得很完美, 也沒通過市場用戶的考查, 存在不肯定性。 hadoop就徹底能夠幫你實現各方面的問題, 本身只須要編寫一些特定的java業務流程代碼就能夠, 穩定又能夠不斷的隨着業務與數據的增大而擴大。hadoop經常使用在數據統計方面, 例如在幾十G文件中統計某一個單詞出現幾回, 在無數個數字當中查找最大的值,經過你的程序收集的日誌統計出各方營銷的數據,幫助你實現市場定位與推廣方向。分佈式