Hadoop特點和技術介紹

Hadoop特點和技術介紹

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則為海量的數據提供了計算。

Hadoop是一個開源的框架,可編寫和運行分佈式應用處理大規模數據,是專為離線和大規模數據分析而設計的,並不適合那種對幾個記錄隨機讀寫的在線事務處理模式。Hadoop=HDFS(文件系統,數據存儲技術相關)+ Mapreduce(數據處理),Hadoop的數據來源可以是任何形式,在處理半結構化和非結構化數據上與關係型數據庫相比有更好的性能,具有更靈活的處理能力,不管任何數據形式最終會轉化為key/value,key/value是基本數據單元。用函數式變成Mapreduce代替SQL,SQL是查詢語句,而Mapreduce則是使用腳本和代碼,而對於適用於關係型數據庫,習慣SQL的Hadoop有開源工具hive代替。

Hadoop就是一個分佈式計算的解決方案。

2. 特點介紹

1. 分佈式架構,可以處理數據量非常大的數據,可實現數據性能的線性擴展;

2. 多租戶環境,實現多用戶共同加工數據,數據無需頻繁傳輸交換;

3. 文件系統採用HDFS,三份數據副本,實現文件系統的高可靠;

4. 有豐富的計算引擎,如MR、Hbase、SparkCore,基於MR可實現Hive,基於SparkCore可實現SparkSQL;

5. 基於Hadoop的Spark計算框架,未來可解決更多的數據處理計算需求。

3. 使用場景

大數據量存儲:分佈式存儲(各種雲盤,百度,360~還有云平臺均有hadoop應用) 日誌處理: Hadoop擅長這個 海量計算: 並行計算 ETL:數據抽取到oracle、mysql、DB2、mongdb及主流數據庫 使用HBase做數據分析: 用擴展性應對大量讀寫操作—Facebook構建了基於HBase的實時數據分析系統 機器學習: 比如Apache Mahout項目(Apache Mahout簡介 常見領域:協作篩選、集群、歸類) 搜索引擎:hadoop + lucene實現 數據挖掘:目前比較流行的廣告推薦 大量地從文件中順序讀。HDFS對順序讀進行了優化,代價是對於隨機的訪問負載較高。 用戶行為特徵建模 個性化廣告推薦 智能儀器推薦

4. 大數據存儲對比

Hadoop特點和技術介紹

Hadoop特點和技術介紹

5. 架構圖

Hadoop特點和技術介紹

6. 技術介紹

1. namenode

名字節點。要管理元數據信息(Metadata),注意,只存儲元數據信息。

namenode對於元數據信息的管理,放在內存一份,供訪問查詢,也會通過fsimage和edits文件,將元數據信息持久化到磁盤上。Hadoop1.0版本利用了SecondaryNamenode做fsimage和edits文件的合併,但是這種機制達不到熱備的效果。Hadoop1.0的namenode存在單點故障問題。

2. datanode

數據節點。用於存儲文件塊。為了防止datanode掛掉造成的數據丟失,對於文件塊要有備份,一個文件塊有三個副本。

3. rack

機架

4. client

客戶端,凡是通過API或指令操作的一端都可以看做是客戶端

5. blockSize

數據塊。Hadoop1.0:64MB。Hadoop2.0 :128MB。

塊大小的問題。從大數據處理角度來看,塊越大越好。所以從技術的發展,以後的塊會越來越大,因為塊大,會減少磁盤尋址次數,從而減少尋址時間

6. HDFS讀流程圖

Hadoop特點和技術介紹

1.客戶端發出讀數據請求,Open File指定讀取的文件路徑,去找namenode要元數據信息。

2.namenode將文件的元數據信息返回給客戶端。

3. 3客戶端根據返回的元數據信息,去對應的datanode去讀塊數據。

假如一個文件特別大,比如1TB,會分成好多塊,此時,namenode並是不一次性把所有的元數據信息返回給客戶端。

4. 4客戶端讀完此部分後,再去想namenode要下一部分的元數據信息,再接著讀。

5.讀完之後,通知namenode關閉流

7. HDFS寫流程

Hadoop特點和技術介紹


1.發起一個寫數據請求,並指定上傳文件的路徑,然後去找namenode。namenode首先會判斷路徑合法性,然後會判斷此客戶端是否有寫權限。然後都滿足,namenode會給客戶端返回一個輸出流。此外,namenode會為文件分配塊存儲信息。注意,namenode也是分配塊的存儲信息,但不做物理切塊工作。

2.客戶端拿到輸出流以及塊存儲信息之後,就開始向datanode寫數據。因為一個塊數據,有三個副本,所以圖裡有三個datanode。packet初學時可以簡單理解為就是一塊數據。

pipeLine:[bl1,datanode01-datanode03-datanode-07]

3.數據塊的發送,先發給第一臺datanode,然後再有第一臺datanode發往第二臺datanode,……。實際這裡,用到了pipeLine 數據流管道的思想。

4.通過ack確認機制,向上遊節點發送確認,這麼做的目的是確保塊數據複製的完整性。

5.通過最上游節點,向客戶端發送ack,如果塊數據沒有發送完,就繼續發送下一塊。如果所有塊數據都已發完,就可以關流了。

6.所有塊數據都寫完後,關流。


分享到:


相關文章: