Hadoop2原始碼分析-Hadoop V2初識

哥不是小蘿莉發表於2015-04-15

1.概述

  在完成分析Hadoop2原始碼的準備工作後,我們進入到後續的原始碼學習階段。本篇部落格給大家分享,讓大家對Hadoop V2有個初步認識,部落格的目錄內容如下所示:

  • Hadoop的淵源
  • Hadoop V2部分專案圖
  • 各個包的功能介紹

  本篇文章的原始碼是基於Hadoop-2.6.0來分析,其他版本的Hadoop的原始碼可以此作為參考分析。

2.Hadoop的淵源

  其實,早年Google的核心競爭力是它的計算平臺,Google對外公佈的論文有一下內容:

  • GoogleCluster 
  • Chubby 
  • GFS
  • BigTable 
  • MapReduce 

  可見MapReduce並不是Hadoop所獨有的功能,之後Apache基金會得到類似的專案,這些專案有隸屬於Hadoop專案,分別是:

  • ZooKeeper(Chubby)
  • HDFS(GFS)
  • HBase(BigTable)
  • MapReduce(Hadoop 這裡是HDFS和MapReduce的統稱)

  類似於這種思想的開源專案還有很多,如:Yahoo用Pig來處理巨大資料,Facebook用Hive來進行使用者行為分析等。Hadoop的兩大核心功能分別為HDFS和MapReduce,MapReduce是一個適合做離線計算的框架,它依賴於HDFS,HDFS作為一個分散式檔案儲存系統,是所有這些專案的基礎支撐。下圖為HDFS的支撐圖,如下圖所示:

  

3.Hadoop V2部分專案圖

  Hadoop包與包之間依賴的關係較為複雜,究其原因為HDFS提供了一個分散式檔案儲存系統,該系統提供龐大的API,使得分散式檔案系統底層的實現,依賴於某些高層的功能,這些功能互相引用,形成網狀的依賴關係。舉個例子,如conf包,它用於讀取系統配置檔案,依賴於fs包,主要是讀取相應的配置檔案時,需要使用到檔案系統,而部分檔案系統的功能都被抽象在fs包中。下圖時Hadoop V2專案的核心部分依賴包,如下圖所示:

  後面的章節,主要給大家分享以下幾個部分,如:mapreduce,fs,hdfs,ipc,io,yarn。

4.各個包的功能介紹

  下面對上圖列出來的各個包做下介紹說明,各個包的功能如下所示:

  • tools:提供命令列工具,如DistCp,archive等等。
  • mapreduce v2:Hadoop V2版本對Map/Reduce的實現。
  • filecache:讓HDFS擁有本地快取,以便加快MR的資料訪問速度。
  • hdfs v2:Hadoop V2的分散式檔案系統實現。
  • fs:檔案系統的抽象包,為支援多種檔案系統(有可能還有其他的檔案系統)規範統一的檔案訪問介面。
  • ipc:依賴 io 提供的編碼和解碼功能。
  • io:編碼和解碼資料,以便在網路中傳輸。
  • net:對網路功能進行封裝,如Socket。
  • conf:配置系統的引數。
  • util:工具類。
  • ha:配置高可用的叢集,使叢集擁有兩個NameNode(active和standby)。
  • yarn:Hadoop V2 版本新新增的特性,用於資源排程和管理。

5.總結

  Hadoop V2在底層設計上對比Hadoop V1是有區別的,新增HA,使得Hadoop V1中存在的單點問題得到了很好得解決;Hadoop V2新增Yarn系統,使得叢集得資源管理和排程更加得完美,大大減少ResourceManager的資源消耗,並且讓監測每一個 Job 子任務 (tasks) 狀態的程式分散式化了,更安全、更優美。同時,使得多種計算框架可以執行在一個叢集中。

6.結束語

  這篇文章就和大家分享到這裡,如果大家在研究和學習的過程中有什麼疑問,可以加群進行討論或傳送郵件給我,我會盡我所能為您解答,與君共勉!

相關文章