【问题标题】:Hbase replicationHbase 复制
【发布时间】:2012-09-29 16:44:19
【问题描述】:

我的 Hbase 在三台机器上运行,一台用于 hmaster,另外两台作为 regionServers,现在我想我必须做一些复制工作,因为这是防止机器崩溃或断电的生产环境。但我读了一些Hbase 文档,找不到任何方法来复制我的数据。我使用的唯一方法是设置 hadoop 复制,我设置 hdfs-site.xml dfs.replicate=1。 那么有没有更好的方法来进行 Hbase 的复制以进行热备份。 提前致谢

【问题讨论】:

    标签: hbase


    【解决方案1】:

    目前,关于复制有三个概念。

    1. hdfs 层中的块副本。
    2. hbase 集群之间的复制。
    3. 区域复制。

    dfs.replication 指的是第一个概念。它保证了物理机的单一故障,您的数据是安全的。

    如果dfs.replication = 1,你的datanode单点故障(磁盘故障)可能会导致datablock损坏,从而导致dataloss。

    【讨论】:

      【解决方案2】:

      Hbase 表以数据块的形式存储在 HDFS 中。 Hadoop 分布式文件系统 (HDFS) 使我们能够决定对块使用什么复制因子。理想情况下,它保持在 3。这确保在任何给定时间,相同数据的 3 个副本将出现在集群的节点中,并且在任何节点发生故障的情况下,相同的数据将在其他地方可用以服务于查询。此属性是 hdfs-site.xml 中的 dfs.replication。 Hbase 还允许我们将集群状态复制到另一个集群。也就是说,一个 Hbase 集群中存在的全部数据被复制到另一个集群。这样做的好处是管理灾难恢复。

      【讨论】:

        【解决方案3】:

        请注意,您的问题中“复制”有两种不同的含义:

        1. HDFS 块的复制。这里replication 的意思是“在不同的数据节点上保留一个块的多个(冗余)副本”,这就是 HDFS 实现高可用性的方式。您可以通过“dfs.replication”设置属性告诉 HDFS 要保留多少副本。查看“HDFS 架构指南”的Data replication 部分。

        2. HBase 集群之间的复制。这里replication 的意思是“将这个集群的更新发送到另一个集群,以便后者可以作为备份”。它可以作为灾难恢复解决方案,我想这就是你想要的。您需要设置另一个 hbase 集群(称为从属或备份集群),配置复制。之后,当主集群由于某种原因关闭时,您可以故障转移到备份集群。查看this cloudera blog postthis section of hbase book 了解更多详情。

        【讨论】:

          【解决方案4】:

          Hbase 不需要复制因子。如前所述,由于 Hbase 通过 HDFS 存储数据,因此复制将由 HDFS 处理。如果 RegionServer 宕机(在 Hbase 中),HMaster 会将死区服务器处理的区域分配给健康的 regionserver 或在 dataNode 故障的情况下(在 HDFS 中),HMaster 将从新的 dataNodes 分配新的 dataBlocks(由 NameNode 提供)到另一个健康且正常工作的区域服务器。

          【讨论】:

            【解决方案5】:

            HBase 完全依赖 HDFS 复制。

            您的所有数据都存在于 HDFS 中而不是 HBase 中(HBase 内部存储到 HDFS)。 HBase 只是这些数据的一种访问机制。由于您设置了 dfs.replication=1,请尝试定期进行数据节点备份。

            如果您担心 HBase 中的区域服务器,那么此数据存在于 Zookeeper 中。即使您的 Master/RS 出现故障并出现,它也应该恢复正常状态。

            如果您特别担心区域,它们会被 HBase 存储为目录表(ROOT、META)。这些就像将出现在 HDFS 中的普通表一样。

            因此,社区建议将复制更改为 >1(或默认为 3)。

            【讨论】:

              【解决方案6】:

              HBase 使用 HDFS 存储数据,因此默认情况下,您将在 HDFS 中复制数据(默认情况下,您将在 HDFS 中复制 3)。因此,您不必担心显式复制。

              【讨论】:

                【解决方案7】:

                在您的生产环境中,您需要数据的副本,以便在发生节点故障或集群故障时,您的数据将保持安全。 如果我的理解是正确的,那么您可以选择

                • 数据节点的定期间隔备份
                • 设置异步复制到从属集群,这将从其复制数据 相应的区域服务器。有关这方面的更多信息,请访问here

                【讨论】:

                  猜你喜欢
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多