【问题标题】:understanding how hbase uses hdfs了解 hbase 如何使用 hdfs
【发布时间】:2016-10-04 09:48:50
【问题描述】:

我正在尝试了解 hbase 如何使用 hdfs。
所以这是我的理解(如果我错了,请纠正我):
我知道 hbase 使用 hdfs 来存储数据并且数据被分成多个区域,并且每个区域服务器我服务于许多区域,所以我猜一个区域(专门)可以与多个数据节点通信以获取和放置数据,所以如果这是正确的,那么如果该区域服务器出现故障,那么存储在这些数据节点中的数据将无法再访问
提前谢谢你:)

【问题讨论】:

    标签: hadoop hbase hdfs


    【解决方案1】:

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

    由于 HDFS 的工作方式,Regionserver 将尽可能执行对本地数据节点的读取和写入,然后 HDFS 将确保将数据复制到另外两个随机数据节点上。因此,在任何时候,该 regionserver 写入的数据都存储在 HDFS 的 3 个节点上。

    当一个 regionserver 服务于一个 region 时,只有它会读/写那个 region 的数据,但是如果 regionserver 进程崩溃,HBase master 会选择另一个 regionever 来服务那个 region。数据会在几分钟内不可用,但 HBase 会很快恢复。

    如果整个主机发生故障,那么由于HDFS确保数据写入另外两个节点,场景是一样的——master会选择一个新的regionserver来打开故障区域并且数据不会丢失。

    【讨论】:

    • 三个数据节点中(用于复制),区域服务器只通信(或使用)一个数据节点
    • 对于读取,通常是的。对于写入,写入将转到 1 个 DN,然后由 HDFS 复制到其他 DN。如果某个区域发生故障并在新主机上启动,那么很可能该主机在本地没有所需的数据,因此 Regionserver 将与集群中的其他节点通信以读取数据。因此,在这种情况下,它可以与集群中的任何其他数据节点通信
    • @StephenODonnell 是否会在重大压缩后重新建立数据位置?
    • 是的,在一个主要的压缩之后,数据应该都在本地节点上。每个小压缩也会慢慢建立局部性,但它需要一个大压缩才能完全恢复它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 2015-04-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    相关资源
    最近更新 更多