我正在尝试了解hbase如何使用hdfs
所以这就是我的理解(如果我错了,请纠正我):
我知道hbase使用hdfs来存储数据,并且数据被分成区域,并且每个区域服务器都服务于很多区域,所以我猜一个区域(独占)可以与许多数据节点通信来获取和放置数据,所以如果这是正确的,那么如果该区域服务器失败,那么存储在那些数据节点中的数据将不再可访问
提前谢谢你:)
答案 0 :(得分:1)
通常,Regionserver在datanode上运行。
由于HDFS的工作原理,Regionserver将尽可能执行对本地数据节点的读写操作,然后HDFS将确保将数据复制到另外两个随机数据节点上。因此,在任何时候,该区域服务器写入的数据都存储在HDFS中的3个节点上。
虽然区域服务器正在为区域服务,但只有它会读取/写入该区域的数据,但如果regionserver进程崩溃,HBase主服务器将选择另一个区域服务器来服务该区域。数据将在几分钟内无法使用,但HBase将很快恢复。
如果整个主机出现故障,那么当HDFS确保将数据写入另外两个节点时,方案是相同的 - 主服务器将选择一个新的regionserver来打开失败的区域,数据不会丢失。