1、Hadoop是什麼
Hadoop是由java語言編寫的,在分佈式服務器集羣上存儲海量數據並運行分佈式分析應用的開源框架,其核心部件是HDFS與MapReduce。
HDFS是一個分佈式文件系統:引入存放文件元數據信息的服務器Namenode和實際存放數據的服務器Datanode,對數據進行分佈式儲存和讀取。
MapReduce是一個計算框架:MapReduce的核心思想是把計算任務分配給集羣內的服務器裏執行。通過對計算任務的拆分(Map計算/Reduce計算)再根據任務調度器(JobTracker)對任務進行分佈式計算。
1.1、重點:
Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS爲海量的數據提供了存儲,則MapReduce爲海量的數據提供了計算。
把HDFS理解爲一個分佈式的,有冗餘備份的,可以動態擴展的用來存儲大規模數據的大硬盤。
把MapReduce理解成爲一個計算引擎,按照MapReduce的規則編寫Map計算/Reduce計算的程序,可以完成計算任務。
2、Hadoop能幹什麼
大數據存儲:分佈式存儲
日誌處理:擅長日誌分析
ETL:數據抽取到oracle、mysql、DB2、mongdb及主流數據庫
機器學習: 比如Apache Mahout項目
搜索引擎:Hadoop + lucene實現
數據挖掘:目前比較流行的廣告推薦,個性化廣告推薦
Hadoop是專爲離線和大規模數據分析而設計的,並不適合那種對幾個記錄隨機讀寫的在線事務處理模式。
3、怎麼使用Hadoop
3.1、Hadoop集羣的搭建
無論是在windows上裝幾臺虛擬機玩Hadoop,還是真實的服務器來玩,說簡單點就是把Hadoop的安裝包放在每一臺服務器上,改改配置,啓動就完成了Hadoop集羣的搭建。
3.2、上傳文件到Hadoop集羣
Hadoop集羣搭建好以後,可以通過web頁面查看集羣的情況,還可以通過Hadoop命令來上傳文件到hdfs集羣,通過Hadoop命令在hdfs集羣上建立目錄,通過Hadoop命令刪除集羣上的文件等等。
3.3、編寫map/reduce程序
通過集成開發工具(例如eclipse)導入Hadoop相關的jar包,編寫map/reduce程序,將程序打成jar包扔在集羣上執行,運行後出計算結果。