1

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

4

7 回答 7

2

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

  • 数据节点的定期间隔备份
  • 设置异步复制到从属集群,这些集群将从各自的区域服务器复制数据。更多信息可在此处获得
于 2012-10-12T08:46:30.813 回答
2

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

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

  2. HBase 集群之间的复制。这里replication的意思是“将这个集群的更新发送到另一个集群,以便后者可以作为备份”。它可以作为灾难恢复解决方案,我想这就是你想要的。您需要设置另一个 hbase 集群(称为从属或备份集群),配置复制。之后,当主集群由于某种原因关闭时,您可以故障转移到备份集群。查看此 cloudera 博客文章hbase 书籍的这一部分以获取更多详细信息。

于 2016-01-10T14:37:34.147 回答
1

HBase 完全依赖 HDFS 复制。

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

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

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

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

于 2015-05-14T05:57:47.423 回答
1

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

于 2015-11-09T06:53:28.433 回答
0

HBase uses HDFS to store data, so by default you will have replication for your data in HDFS (by default you will have replication of 3 in HDFS). So you need not worry to have replication explicitly.

于 2015-04-17T03:13:04.127 回答
0

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

于 2016-04-05T07:11:34.633 回答
0

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

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

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

如果 dfs.replication = 1,你的数据节点的单点故障(磁盘故障)可能会导致数据块损坏,从而导致数据丢失。

于 2017-08-17T06:39:07.707 回答