1. 程式人生 > >Hadoop 原理學習(1)Hadoop 各服務的作用簡述

Hadoop 原理學習(1)Hadoop 各服務的作用簡述

注:以下服務為基於安裝Hadoop 2.6.0-cdh5.8.3後的所得服務,但並不是全部。

1. HDFS

NameNode

NameNode是一箇中心伺服器,負責管理檔案系統的namespace以及客戶端對檔案的訪問。

NameNode執行檔案系統的namespace操作,比如開啟、關閉、重新命名檔案或目錄。同時它還確定blockDataNode節點的對映。

Namenode 詳細功能如下:
- 它是維護和管理 Datanode 的主守護程序;
- 它記錄儲存在叢集中的所有檔案的元資料,例如 block 的位置、檔案大小、許可權、層次結構等。有兩個檔案與元資料關聯:
- FsImage:它包含自 Namenode 開始以來檔案的 namespace 的完整狀態;
- EditLogs:它包含最近對檔案系統進行的與最新 FsImage 相關的所有修改。
- 它記錄了發生在檔案系統元資料上的每個更改。例如,如果一個檔案在 HDFS 中被刪除,Namenode 會立即在 EditLog 中記錄這個操作。
- 它定期從叢集中的所有 Datanode 接收心跳資訊和 block 報告,以確保 Datanode - 處於活動狀態;
- 它保留了 HDFS 中所有 block 的記錄以及這些 block 所在的節點;
- 它負責管理所有 block 的複製;
- 在 Datanode 失敗的情況下,Namenode 會為副本選擇新的 Datanode,平衡磁碟使用並管理到 Datanode 的通訊流量。

DataNode

在叢集內部,檔案被分成一個或多個block,這些block被儲存在一組DataNode中,而DataNode則用於管理它所在節點上的儲存。

Datanode負責處理檔案系統客戶端的讀寫請求。在Namenode的統一排程下進行資料塊的建立、刪除和複製。

Datanode 詳細功能如下:
- 這些是叢屬守護進行或在每臺從屬機器上執行的程序;
- 實際的資料儲存在 Datanode 上;
- 執行檔案系統客戶端底層的讀寫請求;
- 定期向 Namenode 傳送心跳報告 HDFS 的整體健康狀況,預設頻率為 3 秒

FailoverController

故障切換控制器,執行在NameNode旁邊,主要包含以下3個功能:

1) 監控NameNode的健康狀態(心跳檢測);
2) 向ZooKeeper定期傳送心跳,使自己可以被選舉;
3) 當自己被ZooKeeper選擇為主時,通過 RPC 呼叫使對應的NameNode轉換為active狀態。

JournalNode

用於儲存EditLog,相關資料如下:

NameNode預設採用 Clouderea 公司實現的基於QJM(Quorum Journal Manager)的方案來實現其共享儲存方案,在QJM方案中,NameNode 在執行 HDFS 客戶端提交的建立檔案或者移動檔案這樣的寫操作的時候,會首先把這些操作記錄在EditLog

檔案之中,然後再更新記憶體中的檔案系統映象(記憶體中的檔案系統映象用於NameNode向客戶端提供讀服務,而EditLog則只是在資料恢復的時候起作用)。

QJM 共享儲存的基本思想來自於 Paxos 演算法 (參見參考文獻 [3]),採用多個稱為 JournalNode的節點組成的JournalNode叢集來儲存EditLog,每個JournalNode儲存同樣的EditLog副本。每次NameNodeEditLog的時候,除了向本地磁碟寫入 EditLog之外,也會並行地向JournalNode叢集之中的每一個JournalNode 傳送寫請求,只要大多數 (majority) 的JournalNode節點返回成功就認為向 JournalNode叢集寫入EditLog成功。如果有 2N+1 臺 JournalNode,那麼根據大多數的原則,最多可以容忍有 N 臺JournalNode節點掛掉。

Balancer

用於平衡叢集之間個節點的磁碟利用率。

因為 HDFS 的資料可能並不總是被均勻地分佈的在DataNodes中,比如新增新的DataNode到現有的叢集,所以 HDFS 提供了Balancer服務用於分析block的放置並平衡DataNode中的資料。Banlancer會移動block直到叢集被認為是平衡的,這也意味著每個DataNode的利用率(節點上已用空間與節點總容量的比率)與叢集的利用率(叢集的已用空間與叢集的總容量的比率)相差不會超過給定的閾值百分比。

HttpFS

提供 HTTP 方式訪問 HDFS 服務的功能。它支援所有 HDFS filesystem 操作(包括讀取與寫入)的 REST Api。

2. HBase

Master

負責監視叢集中的所有 RegionServer 例項,並且是所有元資料更改的介面。在分散式叢集中,Master 通常執行在 NameNode 之上。其具體提供的功能如下:

1) 提供的介面

HMasterInterface 主要提供面向元資料的方法:
- Table (createTable, modifyTable, removeTable, enable, disable)
- ColumnFamily (addColumn, modifyColumn, removeColumn)
- Region (move, assign, unassign)

例如,當 HBaseAdmin 方法 disableTable 被呼叫時,它由 Master Server 提供服務。

2) 執行的執行緒

Master 運行了幾個後臺執行緒,其中包括:
- LoadBalancer: 定期的,當沒有 region 被 transition 時,LoadBalancer 將執行並移動 region 以平衡叢集的負載;
- CatalogJanitor:定期檢查並清理 .META. 表;

RegionServer

負責服務和管理 regions。在分散式叢集中,RegionServer 執行在 DataNode 之上。其具體的功能如下:

1) 提供的介面

HRegionRegionInterface 公開的方法包含面向資料和 Region 維護的方法:
- Data (get, put, delete, next, etc.)
- Region (splitRegion, compactRegion, etc.)

例如,當呼叫 HBaseAdmin 的方法 majorCompact 操作表時,客戶端實際上會遍歷指定表的所有區域,並直接向每個 region 請求 major compaction 操作。

3. Yarn

NodeManager

負責啟動和管理節點上的 containers。Containers 則用於執行 AppMaster 指定的任務。

ResourceManager (RM)

負責跟蹤與管理叢集中的資源,並排程執行在 Yarn 上的 applications(例如 MapReduce 作業)。

JobHistory

以 REST API 的方式向用戶提供完成的 applications 的狀態查詢。目前它只支援 MapReduce 並提供完成的 job 資訊。

4. Spark_on_yarn

HistoryServer

顯示有關完成的 Spark aplications 的歷史記錄資訊。

5. Hive

HiveServer2

使客戶端能夠對 Hive 執行查詢功能。HiveServer2 是已棄用的 HiveServer1 的繼承者。它支援多客戶端併發和身份驗證,旨在為 JDBC 和 ODBC 等開放 API 客戶端提供更好的支援。

HiveServer2 是作為組合服務執行的單個程序,其中包括基於 Thrift 的 Hive 服務(TCP或HTTP)和用於 Web UI 的 Jetty Web 伺服器。

HiveMetaStore

將 Hive 表和分割槽的元資料儲存在關係型資料庫中,並提供 API 訪問表和分割槽的所有元資料。

GateWay

6. Zookeeper

Server

其主要功能如下:

  • 基於 Paxos 演算法提供 Master 選舉主備切換功能;
  • HBase 通過建立並監聽 ZK 節點,實現系統容錯功能;
  • HBase 通過在 ZK 上記錄與感知 RootRegion(region 元資料)的變化,來實現管理 RootRegion
  • HBase 將 Region 的上下線和重新上下線的狀態管理/通知交由 ZK; 管理,來實現Region 管理
  • HBase 通過在 ZK 上建立 SplitWAL 節點,並由 ZK 擔負相互通知和資訊持久化的角色,從而實現分散式的 SplitWAL 任務管理
  • 在 Yarn 中,ZK 用來儲存應用的執行狀態

7. mgmt

  • ActivityMonitor
  • AlertPublisher
  • ClockOffset
  • EventServer
  • HostMonitor
  • ServiceMonitor

參考連結

相關推薦

Hadoop 原理學習1Hadoop 服務作用簡述

注:以下服務為基於安裝Hadoop 2.6.0-cdh5.8.3後的所得服務,但並不是全部。 1. HDFS NameNode NameNode是一箇中心伺服器,負責管理檔案系統的namespace以及客戶端對檔案的訪問。 NameNode執行檔

(轉)計算機原理學習1-- 馮諾依曼體系和CPU工作原理

原文:https://blog.csdn.net/cc_net/article/details/10419645 對於我們80後來說,最早接觸計算機應該是在95年左右,那個時候最流行的一個詞語是多媒體。 依舊記得當時在同學家看同學輸入幾個DOS命令就成功的打開了一個遊戲,當時實在是佩服的五體投地。因為對我來

計算機原理學習1

序言 又有兩年沒有寫Blog了, 這2年從做windows phone 到 Android C++, 慢慢的很多觀念也有所改變了。以前一心想做C#相關的工作,現在卻感覺,什麼語言都無所謂了。公司專案挺忙,加班比較多,不忙的時候又想休息休息。 所以blog又荒廢了好久。也很少有時間早學習, 加上年紀越來

計算機原理學習1-- 馮諾依曼體系和CPU工作原理

前言 對於我們80後來說,最早接觸計算機應該是在95年左右,那個時候最流行的一個詞語是多媒體。 依舊記得當時在同學家看同學輸入幾個DOS命令就成功的打開了一個遊戲,當時實在是佩服的五體投地。因為對我來說,螢幕上的東西簡直就是天書。有了計算機我們生活發生了巨大的變化,打遊

Hadoop學習1

分布 ont zookeepe str 過程 pac 穩定版 進行 動態 什麽是Hadoop? hadoop是Apache 開源發布的分布式系統基礎架構。它實現了分布式文件系統(hadoop Distributed File System,HDFS),分布式系統是運行在多個

Hadoop-0.20.2原始碼學習1——原始碼初窺

參考: JeffreyZhou的部落格園 《Hadoop權威指南》第四版 0. 為什麼選擇0.20.2版本 前面學習搭建的Hadoop版本是2.7.6,可是這裡為什麼要學習0.20.2這麼老的版本呢?

Hadoop安裝雜記1

hadoop 安裝 偽分布式模型 基礎一、Hadoop基礎 1、偽分布式模型(單節點) 1.1 配置centos7默認JDK1.7的環境變量 [root@master1 ~]# vim /etc/profile.d/java.sh i export JAVA_HOME=/usr [root@master1

Hadoop核心架構1

追加 特性 框架 實用 endif 出現 ive 擁有 get 在大數據的發展過程中,出現了一批專門應用與大數據的處理分析工具,如Hadoop,Hbase,Hive,Spark等,我們先從最基礎的Hadoop開始進行介紹 Hadoop是apache基金會下所開發的分布式基礎

使用3臺虛擬機器搭建Hadoop HA叢集1

系列部落格目錄連結:Hadoop權威指南學習筆記:總章 基礎環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(1) HA環境搭建:使用3臺虛擬機器搭建Hadoop HA叢集(2) 工欲善其事,必先利其器,要學好大資料,就必須首先學會自己動手

1Hadoop筆記:Hadoop2.X搭建和配置

注: 1.環境為linux CentOS release 6.6 (Final),非虛擬機器。 2.Hadoop版本2.8.3 3.JDK版本1.8.0_111 4.Hadoop的搭建分為三種形式:單機模式、偽分佈模式、完全分佈模式,本文為偽分佈模式。

Hadoop HDFS 學習2理論

HDFS讀流程 客戶端呼叫API的open方法請求NameNode 獲得block的位置資訊,檔案內容儲存的不同的block上,然後返回客戶端。客戶端併發的讀不同的block,然後合併成一個檔案。(不能超大型檔案,磁碟儲存可能不夠) HDFS寫流程

Hadoop程式設計學習:使用FileSystem類進行檔案讀寫及檢視檔案資訊

http://www.cnblogs.com/beanmoon/archive/2012/12/11/2813235.html 在這一節我們要深入瞭解Hadoop的FileSystem類——這是與與hadoop的檔案系統互動的重要介面。雖然我們只是著重於HDFS的實現,但

安卓Dalvik虛擬機器學習1----Dalvik虛擬機器執行原理

安卓Dalvik虛擬機器相關知識點總結 0x01 Java虛擬機器與Dalvik虛擬機器的區別 Java虛擬機器執行的是Java位元組碼(儲存在class檔案中),Dalvik執行的是Dalvik位元組碼(由Java位元組碼轉化而來,打包到DEX檔案中

Hadoop基礎學習分析、編寫並執行WordCount詞頻統計程序

contains trace net tails super val 詞頻統計 上傳 str 版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.ne

redis學習1--- NoSQL介紹

redis學習 模型 width 快速查詢 init 文件 borde 處理 only 一、NoSQL介紹 1、什麽是NoSQL NoSQL = Not Only SQL 非關系型數據庫 2、為什麽用NoSQL High performance - 高

ArcGIS API for JavaScript學習1:第一個地圖

樣式表 參數 資源 charset 底層 arcgis 順序 api navi 1.簡介 ArcGIS API for JavaScript跟隨ArcGIS 9.3同時發布,是ESRI根據JavaScript技術實現的調用ArcGIS Server REST API接口的一

Linux學習1

linux開始學習Linux了,希望能學有所成————測試中本文出自 “Linux學習” 博客,請務必保留此出處http://mmchy.blog.51cto.com/13044974/1941714Linux學習(1)

facets學習1:什麽是facets

遺失 air 不同的 無縫切換 over 快速 後來 樣式 觀察 ML 數據集可以包含數億個數據點,每個數據點由數百(甚至數千)的特征組成,幾乎不可能以直觀的方式了解整個數據集。為幫助理解、分析和調試 ML 數據集,谷歌開源了 Facets,一款可視化工具。 Facets

Hadoop 新生報道 hadoop基礎概念

端口查看 復制 客戶 根目錄 路徑 提高 strong 端口 hadoop1.x   一.NameNode,SeconderyNamenode,DataNode   NameNode,DataNode,SeconderyNamenode都是進程,運行在節點上。   1.

C++學習1:最大子段和多種解法

多少 問題: code namespace 數據 組成 amp using () 問題:給定由n個數(可能為負數)組成的序列a1,a2,a3,...,an,求該序列子段和的最大值。 第一種解法:(最容易考慮的方法,將所有的子段一一相加,然後比較) 1 #include&