【发布时间】:2016-10-04 09:48:50
【问题描述】:
我正在尝试了解 hbase 如何使用 hdfs。
所以这是我的理解(如果我错了,请纠正我):
我知道 hbase 使用 hdfs 来存储数据并且数据被分成多个区域,并且每个区域服务器我服务于许多区域,所以我猜一个区域(专门)可以与多个数据节点通信以获取和放置数据,所以如果这是正确的,那么如果该区域服务器出现故障,那么存储在这些数据节点中的数据将无法再访问
提前谢谢你:)
【问题讨论】:
我正在尝试了解 hbase 如何使用 hdfs。
所以这是我的理解(如果我错了,请纠正我):
我知道 hbase 使用 hdfs 来存储数据并且数据被分成多个区域,并且每个区域服务器我服务于许多区域,所以我猜一个区域(专门)可以与多个数据节点通信以获取和放置数据,所以如果这是正确的,那么如果该区域服务器出现故障,那么存储在这些数据节点中的数据将无法再访问
提前谢谢你:)
【问题讨论】:
通常,Regionserver 运行在数据节点上。
由于 HDFS 的工作方式,Regionserver 将尽可能执行对本地数据节点的读取和写入,然后 HDFS 将确保将数据复制到另外两个随机数据节点上。因此,在任何时候,该 regionserver 写入的数据都存储在 HDFS 的 3 个节点上。
当一个 regionserver 服务于一个 region 时,只有它会读/写那个 region 的数据,但是如果 regionserver 进程崩溃,HBase master 会选择另一个 regionever 来服务那个 region。数据会在几分钟内不可用,但 HBase 会很快恢复。
如果整个主机发生故障,那么由于HDFS确保数据写入另外两个节点,场景是一样的——master会选择一个新的regionserver来打开故障区域并且数据不会丢失。
【讨论】: