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

lea*_*man 18 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区域服务器

根据我的陈述,如果表数据存储在区域服务器中; 那么数据节点和区域服务器的作用是什么?

Yev*_*kiy 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 - 记忆深刻
  • HFile - SSTable
  • 动物园管理员 - 胖乎乎的

  • Region是某些行范围内的数据.说,你想从HBase表中获取一行.您的请求将转到RegionServer,它负责包含您的行的区域.RegionServer将在内存中包含您的行(缓存),或者需要从HDFS(dataNodes)读取它.如果RegionServer在包含相应区域的DataNode上运行,则这是本地文件系统读取.否则这是一个远程读取,这很慢.这就是您希望将RegionServer放在DataNode上的原因 - 数据位置原则.---对于HDFS/DataNodes,请参阅Hadoop书籍(例如,hadoopbook.com) (6认同)