Hadoop架構的初略總結(2)
回顧一下前文,我們總結了以下幾個方面。我們為什麼需要Hadoop;Hadoop2.0生態系統的構成;Hadoop1.0中HDFS和MapReduce的結構模型。
我們大致瞭解了1.0,現在我們來說說2.0。
首先,我們需要理清以下幾個問題:
1.Hadoop1.0自身有哪些缺陷呢?
解:從兩個大的方面來說,HDFS和MapReduce。
HDFS:
1) NameNode中的單點故障問題。
針對Hadoop1.0中HDFS單點故障進行以下解釋:
HDFS仿照google GFS實現的分散式儲存系統,由NameNode和DataNode兩種服務組成,其中NameNode是儲存了後設資料資訊(fsimage)和操作日誌(edits),由於它是唯一的,其可用性直接決定了整個儲存系統的可用性。因為客戶端對HDFS的讀、寫操作之前都要訪問name node伺服器,客戶端只有從name node獲取後設資料之後才能繼續進行讀、寫。一旦NameNode出現故障,將影響整個儲存系統的使用。
這裡需要提到一點,在Hadoop架構的初略總結(2)中提到的SecondaryNameNode,其作用合併NameNode節點中的fsimage和edits。首先,SecondaryNameNode從NameNode中通過網路拷貝一份fsimage(後設資料資訊)與edits(操作日誌)到自己程式的那一塊,然後將fsimage與edits進行合併,生成新的fsimage,並將新生成的fsimage推送到NameNode節點中一份,並將NameNode中edits的內容進行清空。
2) 不能進行大量的小檔案存取(佔用namenode大量記憶體,浪費磁碟空間)擴充套件性差。也就是說,Hadoop1.0單NameNode制約HDFS擴充套件性,因為NameNode含有我們使用者儲存檔案的全部的後設資料資訊,當我們的NameNode無法在記憶體中載入全部後設資料資訊的時候,叢集的壽命就到頭了,NameNode記憶體大小限制了從節點的個數,大體為4000個節點個數。
3) 其它缺陷:HDFS中的許可權設計不夠徹底,即HDFS的資料隔離性不是很好;資料丟失問題,訪問效率問題。
改進:略。(瞭解了一下,看不懂,暫且略過吧,現階段這不是重點)
MapReduce:
1) 擴充套件性:叢集最大節點數4000(也就是4000節點主機上線);最大併發任務數40000。
2) 可用性,可靠性:JobTracker同時管理作業的排程和計算,在Hadoop1.0中,假設有100個作業,根據Hadoop訪問和更新的特性,批處理,一次寫入多次讀寫,JobTracker會同時管理這100個作業,負擔太重。其次,存在單點故障,一旦故障,所有執行的任務全部失敗。
3) 批處理模式,時效低:僅僅使用MapReduce一種計算方式。
4) 其他缺陷:低效的資源管理。在Hadoop1.0中不支援多框架。
2.說完Hadoop1.0的缺陷,我們來說說Hadoop2.0,Hadoop2.0生態系統的構成在前篇部落格中有所提到。這裡,我們從以下幾個方面進行了解。
解:
在Hadoop2.0中,針對HDFS1.0中NameNode的記憶體容量不足以及NameNode的單點故障問題,在2.0中分別作了以下的改進:
- 在1.0中,既然一個NameNode會導致記憶體容量不足,我們引入兩個NameNode,組成HDFS聯邦,這樣NameNode儲存的後設資料資訊就可以翻倍了,所謂HDFS聯邦就是有多個HDFS叢集同時工作,資料節點DataNode儲存的資料是服務於兩個HDFS檔案系統的,體系結構如下圖所示:
- 在2.0中,針對1.0中NameNode的單點故障問題,在2.0中引入了新的HA機制:即如果Active(活躍的)的NameNode節點掛掉,處於Standby(備份的)的NameNode節點將替換掉它繼續工作,下面的圖示方便大家的理解:
在這裡大家一定要注意:2.0中處於HDFS聯邦的也是兩個NameNode節點,處於HA的也是兩個NameNode節點,但是聯邦中的兩個NameNode節點由於使用的是不同的名稱空間(Name Space),因此兩個NameNode節點儲存的後設資料資訊並不相同,但是處於HA中的兩個NameNode節點由於使用的相同的名稱空間,因此兩個NameNode節點儲存的後設資料資訊是相同的。
瞭解了Hadoop2.0中針對Hadoop1.0中HDFS缺陷而改進的聯邦和HA,下面瞭解下MRv1和MRv2。
MRv1和MRv2在前文部落格 Hadoop第三課中有所講解,這裡就不重複了。
接下來,瞭解下在部落格Hadoop第三課中提到的HDFS Federation 。
作為這方面的小白,上網搜尋了下,有位前輩寫的淺顯易懂,從很大層次上解決了我的問題。
http://blog.csdn.net/androidlushangderen/article/details/52135506
同樣,我們要了解ResourceManager、ApplicationMaster以及Map Task和Reduce Task,這些就不得不說Hadoop2.0中的YARN了。
參考文獻:
http://blog.csdn.net/a2011480169/article/details/53647012
https://www.cnblogs.com/sxt-zkys/archive/2017/07/24/7229857.html