2012-12-06 36 views
14

從我的理解中,行被插入到HBase表中,並作爲區域存儲在不同的區域服務器中。因此,區域服務器存儲數據datanode,區域服務器在Hbase-hadoop集成中的作用

類似地,就Hadoop而言,數據存儲在存在於hadoop集羣中的數據節點中。

比方說,我有HBase的0.90.6在Hadoop 1.1.1的頂部配置如下

2節點 - 主從

  1. 主節點充當,
    • 的Hadoop - Namenode,Secondary Namenode,作業跟蹤器,數據節點,任務跟蹤器
    • HBase - Master,RegionServer和zookeeper。
  2. 從節點充當,
    • Hadoop的數據節點和任務跟蹤
    • HBase的區域服務器

基礎上,如果表中的數據被存儲在區域服務器我的發言;那麼數據節點和區域服務器的作用是什麼?

回答

35

數據節點存儲數據。區域服務器本質上緩衝I/O操作;數據永久存儲在HDFS上(即數據節點)。我不認爲把區域服務器放在你的'主'節點上是個好主意。

下面是如何區域管理的簡化的圖象:

您有3複製因子(各HDFS塊被複制到3周不同的DataNodes)運行HDFS(的NameNode +的DataNodes)的羣集。

您在與DataNodes相同的服務器上運行RegionServers。當寫入請求到達RegionServer時,它首先將更改寫入內存並提交日誌;那麼在某一時刻,它決定是時候將更改寫入HDFS上的永久存儲器。以下是數據局部性:由於您在同一臺服務器上運行RegionServer和DataNode,因此該文件的第一個HDFS塊副本將寫入同一臺服務器。其他兩個副本將寫入其他DataNode。因此,服務該地區的RegionServer幾乎總是可以訪問本地數據副本。

如果RegionServer崩潰或RegionMaster決定將區域重新分配給另一個RegionServer(以保持集羣平衡)會怎麼樣? New RegionServer將被迫首先執行遠程讀取,但是一旦執行壓縮(將更改日誌合併到數據中) - 新文件將由新的RegionServer寫入HDFS,並且將在RegionServer上創建本地副本(再次,因爲DataNode和RegionServer在同一臺服務器上運行)。

注意:如果發生RegionServer崩潰,以前分配給它的區域將被重新分配給多個RegionServer。

好讀:

  • 湯姆·懷特, 「Hadoop的,權威指南」 已經HDFS架構的很好的解釋。不幸的是,我沒有閱讀原始的谷歌GFS文件,所以我不能說是否容易遵循。

  • Google BigTable文章。 HBase是Google BigTable的實現,我發現本文中的體系結構描述是最容易遵循的。

這是谷歌的Bigtable和HBase的實現(從拉斯喬治, 「HBase的,權威指南」)之間的命名差異:

  • HBase的 - Bigtable的
  • 地區 - 平板
  • RegionServer的 - 平板電腦服務器
  • 嵌入式 - 小型壓實
  • 小型壓實 - 合併壓實
  • 主要壓實 - 主要壓實
  • 預寫日誌 - 提交日誌
  • HDFS - GFS
  • 的Hadoop MapReduce的 - MapReduce的
  • 的memstore - 的memTable
  • HFILE - 的SSTable
  • 動物園管理員 - 丘比
+0

我甚至可以看到在HDFS創建HBase的表,看起來像存儲塊。 鏈接http://hbase.apache.org/book/regionserver.arch.html指出,「HRegionServer是RegionServer的實現。這是負責服務和管理的區域。在分佈式集羣,一個RegionServer的運行在9.9節.2,「DataNode」。「 但是,我仍然很難理解區域服務器的角色。什麼樣的I/O操作以及爲什麼單獨的區域服務器只需要這些IO? – learninghuman

+6

區域是某些行的範圍內的數據。說,你想從HBase表中得到一行。你的請求會到達RegionServer,它負責包含你的行的區域。 RegionServer將已經在內存中包含你的行(緩存),或者它需要從HDFS(dataNodes)中讀取它。如果您的RegionServer在包含相應區域的DataNode上運行,那麼這是一個本地文件系統讀取。否則,這是一個遠程讀取,速度很慢。這就是爲什麼你想在DataNode上放置RegionServer - 數據局部性原理。 ---對於HDFS /的DataNodes看到Hadoop的書籍(比如,hadoopbook.com) –

+0

非常感謝您的解釋......但問題仍然彈出 1區服務器和數據節點之間的映射是如何進行的?也就是說我可以在與dn1相同的機器上有3個區域服務器rs1,在dn3上有dn2和rs3的rs2。什麼決定了rs1的範圍駐留在dn1上?我的理解是,rs1的區域也可以轉到dn2。那麼地方如何實現? 2.應該有相同數量的區域服務器和數據節點嗎? – learninghuman