根据我的理解,行被插入到HBase表中,并被存储为不同区域服务器中的区域.因此,区域服务器存储数据
类似地,就Hadoop而言,数据存储在hadoop集群中存在的数据节点中.
假设我在Hadoop 1.1.1之上配置了HBase 0.90.6,如下所示
2个节点 - 主站和从站
根据我的陈述,如果表数据存储在区域服务器中; 那么数据节点和区域服务器的作用是什么?
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"):
| 归档时间: |
|
| 查看次数: |
18757 次 |
| 最近记录: |