datanode,regionserver在Hbase-hadoop集成中的作用

时间:2012-12-06 10:46:10

标签: hadoop hbase

根据我的理解,行被插入到HBase表中,并被存储为不同区域服务器中的区域。因此,区域服务器存储数据

类似地,就Hadoop而言,数据存储在hadoop集群中的数据节点中。

假设我在Hadoop 1.1.1之上配置了HBase 0.90.6,如​​下所示

2个节点 - 主站和从站

  1. 主节点充当,
    • Hadoop - Namenode,Secondary Namenode,作业跟踪器,数据节点,任务跟踪器
    • HBase - Master,RegionServer和zookeeper。
  2. 从属节点充当,
    • Hadoop datanode和任务跟踪器
    • HBase区域服务器
  3. 基于我的陈述,如果表数据存储在区域服务器中;那么数据节点和区域服务器的作用是什么?

1 个答案:

答案 0 :(得分:40)

数据节点存储数据。区域服务器本质上是缓冲I / O操作;数据永久存储在HDFS(即数据节点)上。我不认为将区域服务器放在“主”节点上是个好主意。

以下是区域管理方式的简化图:

您有一个运行HDFS(NameNode + DataNodes)的集群,复制因子为3(每个HDFS块被复制到3个不同的DataNode中)。

您在与DataNodes相同的服务器上运行RegionServers。当写入请求到达RegionServer时,它首先将更改写入内存并提交日志;然后在某些时候,它决定是时候将更改写入HDFS上的永久存储。以下是数据位置发挥作用:由于您在同一服务器上运行RegionServer和DataNode,因此该文件的第一个HDFS块副本将写入同一服务器。另外两个副本将写入其他DataNode。因此,为该地区提供服务的RegionServer几乎总能访问本地数据副本。

如果RegionServer崩溃或RegionMaster决定将区域重新分配给另一个RegionServer(以保持群集平衡),该怎么办?新的RegionServer将被强制先执行远程读取,但只要执行压缩(将更改日志合并到数据中) - 新的RegionServer将新文件写入HDFS,并在RegionServer上创建本地副本(再次,因为DataNode和RegionServer在同一台服务器上运行)。

注意:如果RegionServer崩溃,先前分配给它的区域将被重新分配给多个RegionServers。

好读:

  • Tom White,“Hadoop,The Definitive Guide”对HDFS架构有很好的解释。不幸的是,我没有阅读原版谷歌GFS论文,所以我不知道是否容易理解。

  • Google BigTable文章。 HBase是Google BigTable的实现,我发现本文中的架构描述最容易理解。

以下是Google Bigtable和HBase实施之间的命名差异(来自Lars George,“HBase,The Definitive Guide”):

  • HBase - Bigtable
  • 地区 - 平板电脑
  • RegionServer - 平板电脑服务器
  • 冲洗 - 轻微压实
  • 轻微压缩 - 合并压缩
  • 主要压实 - 重大压实
  • 提前写日志 - 提交日志
  • HDFS - GFS
  • Hadoop MapReduce - MapReduce
  • MemStore - memtable
  • HFile - SSTable
  • Zookeeper - Chubby