1.3Hadoop基礎知識
1.3.1術語解釋
1.Hadoop1.0
• 第一代Hadoop,由分散式檔案系統HDFS 和分散式計算框架MapReduce組成
• HDFS由一個NameNode和多個DataNode 組成
• MapReduce由一個JobTracker和多個 TaskTracker組成
課堂筆記
圖中的4個英文單詞都是指帶程式。
程式簡而言之就是程式(一行行的程式碼)加上啟動這個程式所包含的所有資源。
大致講解一下Hadoop1.0,看圖!master這個節點中有兩個程式,NameNode和JobTracker;slaves這個節點中也有兩個程式,DateNode和TaskTracker。首先我們要知道上文所陳列的三點,顧名思義,NameNode管儲存,將資源儲存在DateNode中;而JobTracker管計算和排程,(DateNode和TaskTracker在同一個地方,一個儲存,一個計算,這種計算方法是最優化的)。我們可以打個比方,比作是一個公司,那麼CEO—JobTracker,祕書—NameNode(真正的儲存是儲存在DateNode是我身上的)。
但這樣的Hadoop1.0有一個致命的缺點,倘若當機的是master這一節點,這一系統就徹底奔潰了,這時,我們想到了一個解決方法,給master作備份,然而這個備份是冷備份,也就是說不是實時備份的,因而我們所說的單點故障是由NameNode的冷備份所造成的,所以Hadoop1.0沒有走下去。
master這一節點在整個叢集中是不唯一的。NameNode是唯一的。slaves這個節點也不唯一,是多個的。
下面分別闡述下幾個程式的作用:
- NameNode:
1.HDFS的守護程式。
2.記錄檔案是如何被分隔成資料塊的。
3.記錄這些資料塊被儲存到哪些節點上。
4.會對記憶體和IO進行集中性的管理。
- JobTracker:
客戶端提交作業首先是提交給JobTracker的。
1.用於處理後臺作業的一個程式。
2.JobTracker會分割任務,並分配到對應的節點上。
3.分析:任務未完成;任務失敗。重新啟動失敗的任務;重新排程,讓新的節點來完成這一任務。
- DateNode
每一臺slaves伺服器上都有一個DateNode的程式。DateNode的工作:負責將HDFS上的資料讀取到本地檔案檔案系統中去。
- TaskTracker
做具體工作的一個程式。作用:啟動多個JVM,並執行Map或reduse的任務。
————————————————————————————————————
2.Hadoop2.0
- 第二代Hadoop,為克服Hadoop1.0中 HDFS和MapReduce存在的各種問題而提出
- Hadoop1.0單NameNode制約HDFS擴充套件性,(因為記憶體大小限制了節點的個數,大體為4000個節點個數) 提出HDFS Federation (聯合 思想:分而治之)
- Hadoop1.0中MapReduce在擴充套件性和多框架支援等方面的不足,將JobTracker中的資 源管理和作業控制功能分開,分別由元件ResourceManager和ApplicationMaster實現
ps:Spark—搭建在Hadoop上才變成分散式的。
因為有了YARN,所以可以有其他框架進入Hadoop2.0這個載體上,這是個鬆耦合。
3.MapReduce1.0或MRv1
MRv1中計算框架為三個部分:
- 程式設計模型——Map和Reduce函式組成
- 資料處理引擎——Map Task和Reduce Task組成
- 執行環境——一個JobTracker和多個 TaskTracker組成
4.MRv2
- 與MRv1相同的程式設計模型和資料處理引擎, 不同的是執行環境
- MRv2是在MRv1基礎上經過加工後,執行 於資源管理框架YARN之上的計算框架 MapReduce
- 由通用資源管理系統YARN和作業控制程式 ApplicationMaster來完成相應工作
5.YARN
- Hadoop2.0中的資源管理系統,是一個通用 資源管理模組,可為各類應用程式進行資 源管理和排程
- YARN不僅限於MapReduce一種計算框架, 也可供其他框架使用,如Spark、Storm
- 由於YARN的通用性,下一代MapReduce 的核心已從簡單的支援單一應用的計算框 架轉移到通用資源管理系統上
ps:MESOS也是一個通用資源管理器。
Hadoop1.0+Spark+Storm這三個框架造成了資源浪費,人力資源問題等。有YARN後,這些問題就得以優化,當Spark用的比較多時,可以將資源遷移到Spark上。
6.HDFS Federation
- Hadoop2.0對HDFS進行了改進,使 NameNode可以橫向擴充套件成多個,每個 NameNode分管一部分目錄,進而產生了 HDFS Federation
- 該機制的引入不僅增強了HDFS的擴充套件性, 也使HDFS具備了隔離性
1.3.2Hadoop版本變遷
Apache Hadoop主要有四個系列的版本:
- 0.20.X系列——最老版本
- 0.21.0/0.22.x系列——俗稱Hadoop1.0版本
- 0.23.X系列——克服Hadoop在擴充套件性和框 架通用性方面的不足
- 2.X系列——同0.23.X系列一樣,屬於 Hadoop2.0版本,主要增加了NameNode HA等功能
作業
- 什麼是Hadoop,你理解中的Hadoop是什麼,請舉例說明?
- Hadoop2.0生態系統中包括哪些產品,請描述他們之間的關係?