2016-10-04 68 views
1

我想了解hbase如何使用hdfs。
所以这里是我的理解(请纠正我,如果我错了):
我知道hbase使用hdfs来存储数据和数据被分割成区域,并且每个区域服务器我服务于很多地区,所以我猜测一个区域(专有)可能与许多数据节点通信以获取和放置数据,所以如果这是正确的,那么如果该区域服务器失败,那么存储在这些数据节点中的数据将不再可用
预先感谢您: )了解hbase如何使用hdfs

回答

1

通常,Regionserver在数据节点上运行。

由于HDFS的工作原理,Regionserver将在可能的情况下执行对本地数据节点的读写操作,然后HDFS将确保将数据复制到其他两个随机数据节点上。因此,在任何时候,由该区域服务器写入的数据都存储在HDFS中的3个节点上。

虽然区域服务器正在为区域提供服务,但只有它将读取/写入该区域的数据,但如果区域服务器进程崩溃,HBase主服务器将选择另一个区域服务器来为该区域提供服务。数据将在几分钟内无法使用,但HBase会很快恢复。

如果整个主机发生故障,那么由于HDFS确保将数据写入其他两个节点,所以情况相同 - 主站将选择一个新的区域服务器来打开故障区域并且数据不会丢失。

+0

和三个数据节点(用于复制),区域服务器只通信(或使用)一个数据节点 – aName

+0

对于读取,通常是。对于写入操作,写入操作将获得1个DN,然后由HDFS复制到其他部分。如果某个区域发生故障并在新主机上启动,则主机很可能没有本地所需的数据,因此Regionserver将与群集中的其他节点通信以读取数据。因此,在这种情况下,它可以与群集中的任何其他datanode进行通信 –

+0

非常感谢您 – aName