Hbase 有自己的复制策略还是继承自 HDFS?
Does Hbase have a replication policy of its own or is it inherited from HDFS?
由于 HBase
是建立在 HDFS
之上的,它具有容错复制策略,这是否意味着 HBase
具有固有的容错能力并且数据存储在 HBase
将始终可以访问,这要归功于底层 HDFS
?还是 HBase
实施自己的复制策略(例如 table 跨区域复制)?
是的,您可以在 Hbase 中创建区域副本,如前所述here。但是请注意,HBase 高可用性是只读的。它的写入可用性不高。如果区域服务器出现故障,那么在将区域分配给新的区域服务器之前,您将无法写入。
要启用只读副本,您需要通过将 hbase.region.replica.replication.enabled
设置为 true 来启用异步 WAL 复制。您还需要通过指定大于 1 的 REGION_REPLICATION 值在创建时为 table 启用高可用性,如 docs:
CREATE 't1', 'f1', {REGION_REPLICATION => 2}
可以找到更多详细信息 here。
HBase
中的复制概念不同于 HDFS
复制。两者在不同的上下文中是不同的。 HDFS
是文件系统并从数据文件复制数据以实现容错和高可用性功能。 HBase
从数据库系统的角度来看,复制主要围绕容错、高可用性和数据完整性。
当然,HDFS
复制功能用于 HBase
的文件级复制。与此同时,HBase
还将其元数据的副本维护到备份节点(默认情况下再次由 HDFS
复制)。
HBase
也有备份进程来监控和从故障中恢复。像主要和次要区域服务器。但是区域服务器中的数据丢失仅受 HDFS
复制保护。
因此,Hbase
复制主要围绕故障恢复和维护数据完整性作为数据库引擎。它就像任何其他健壮的数据库系统一样 Oracle
.
由于 HBase
是建立在 HDFS
之上的,它具有容错复制策略,这是否意味着 HBase
具有固有的容错能力并且数据存储在 HBase
将始终可以访问,这要归功于底层 HDFS
?还是 HBase
实施自己的复制策略(例如 table 跨区域复制)?
是的,您可以在 Hbase 中创建区域副本,如前所述here。但是请注意,HBase 高可用性是只读的。它的写入可用性不高。如果区域服务器出现故障,那么在将区域分配给新的区域服务器之前,您将无法写入。
要启用只读副本,您需要通过将 hbase.region.replica.replication.enabled
设置为 true 来启用异步 WAL 复制。您还需要通过指定大于 1 的 REGION_REPLICATION 值在创建时为 table 启用高可用性,如 docs:
CREATE 't1', 'f1', {REGION_REPLICATION => 2}
可以找到更多详细信息 here。
HBase
中的复制概念不同于 HDFS
复制。两者在不同的上下文中是不同的。 HDFS
是文件系统并从数据文件复制数据以实现容错和高可用性功能。 HBase
从数据库系统的角度来看,复制主要围绕容错、高可用性和数据完整性。
当然,HDFS
复制功能用于 HBase
的文件级复制。与此同时,HBase
还将其元数据的副本维护到备份节点(默认情况下再次由 HDFS
复制)。
HBase
也有备份进程来监控和从故障中恢复。像主要和次要区域服务器。但是区域服务器中的数据丢失仅受 HDFS
复制保护。
因此,Hbase
复制主要围绕故障恢复和维护数据完整性作为数据库引擎。它就像任何其他健壮的数据库系统一样 Oracle
.