天天看點

初識Hadoop,入門基礎篇簡介核心特點HDFS的master/slave構架HDFS的關鍵元素MapReduce檔案系統

簡介

官方的對Hadoop的解釋是:大量的資料一定要通過分布式的方式并行執行,如果采用單機的方式,一定是存儲不行,計算也不行。

首先,Hadoop是由Apache基金所開發的分布式系統。其次,可以在不了解分布式底層原理的前提下,開發分布式程式。還可以利用叢集的威力進行高速的運算和讀寫操作。

核心

Hadoop實作了一個分布式檔案系統(Hadoop Distributed File System),簡稱HDFS。HDFS提供高吞吐量應用程式資料通路,并具有高容錯性;并且它可以部署在廉價的機器上,放寬了對POSIX的要求,以流式的方式通路檔案系統中的資料。一方面HDFS提供了海量資料的存儲,另一方面MapReduce則為海量的資料提供了運算。

總結,Hadoop的核心是HDFS和MapReduce。

特點

1、大資料檔案,特别适合T級以上檔案的存儲。

2、檔案分塊存儲,HDFS會将檔案平分存儲到不同計算機上,是以,在讀取檔案的時候可以從不同的區塊計算機中同時讀取下來,多主機讀取比單主機讀取要快得多。

3、流式資料通路,一次寫入多次讀寫。和傳統檔案内容不同的是,HDFS不支援對已經寫入的檔案進行改變,而是在檔案末尾添加内容。

4、使用廉價的硬體,可以在公司使用十幾台廉價的計算機組成一個大資料叢集。

5、硬體故障,HDFS認為所有計算機都可能會出問題,為了防止某個主機失效讀取不到該主機的塊檔案,它将同一個檔案塊副本配置設定到其它某幾個主機上,如果其中一台主機失效,可以迅速找另一塊副本取檔案。

HDFS的master/slave構架

1.x的HDFS是有一個Namenode和一定數量的Datanode組成,是以會單點失敗。

2.x的HDFS是有兩個Namenode和一定數量的Datanode組成,單點成功。

Namenode是一個中心伺服器,主要負責檔案存儲系統的namespace和客戶機對檔案的通路。而Datanode是每一個節點上的一個資料存儲點,主要負責管理被拆分存儲的每一個檔案的的管理。在内部通路的時候,一個檔案其實被分成了多個block,這些block存儲在不同的Datanode集合裡。Namenode負責對不同檔案的重命名、打開、關閉等操作,同時決定了不同的block到不同的Datanode的節點映射,Namenode指揮着Datanode進行block的建立、删除和複制。最後,Namenode和Datanode都是可以設計運作在十幾台廉價的運作linux的機器上。

HDFS的關鍵元素

1、Block:将一個檔案進行分塊,通常是64M。

2、NameNode:儲存整個檔案系統的目錄資訊、檔案資訊及分塊資訊,這是由唯一一台主機專門儲存,當然這台主機如果出錯,NameNode就失效了。在Hadoop2.*開始支援activity-standy模式----如果主NameNode失效,啟動備用主機運作NameNode。

3、DataNode:分布在廉價的計算機上,用于存儲Block塊檔案。

MapReduce檔案系統

MapReduce是一種程式設計模型,用于大規模資料集(大于1TB)的并行運算。MapReduce将分成兩個部分"Map(映射)“和"Reduce(歸約)”。

當你向MapReduce架構送出一個計算作業時,它會首先把計算作業拆分成若幹個Map任務,然後配置設定到不同的節點上去執行,每一個Map任務處理輸入資料中的一部分,當Map任務完成後,它會生成一些中間檔案,這些中間檔案将會作為Reduce任務的輸入資料。Reduce任務的主要目标就是把前面若幹個Map的輸出彙總到一起并輸出。例如查找最大值,先分成若幹個map,然後再每個map擷取最大值,最後再把每個map的最大值拿到一起做比較,最後查找出最大值。

繼續閱讀