问题主要在于,在我的项目中,我想创建一个包含 3 列族的表。默认复制数是 3。但我想为 centtain 列族更改此复制数,只是因为我们不需要太多的复制。
例如,一个表名table1
,并且有 3 个列族,f1
,f2
,f3
。在这种情况下,我们要设置的复制数f3
是1
。那么我该如何设置这个配置呢?有没有不改源代码的解决方案?
PS:通过 hbase shell 还是 JAVA?
问题主要在于,在我的项目中,我想创建一个包含 3 列族的表。默认复制数是 3。但我想为 centtain 列族更改此复制数,只是因为我们不需要太多的复制。
例如,一个表名table1
,并且有 3 个列族,f1
,f2
,f3
。在这种情况下,我们要设置的复制数f3
是1
。那么我该如何设置这个配置呢?有没有不改源代码的解决方案?
PS:通过 hbase shell 还是 JAVA?
首先,我们应该指定术语复制有点超载。
HBase 使用 HDFS 作为存储。HDFS 会将组成 HBase 生成的任何文件的块复制到多个 DataNode。(请参阅http://hadoop.apache.org/docs/stable/hdfs_design.html#Data+Replication)此值不能按列族或表配置。它只能为每个服务器配置。(见http://hbase.apache.org/book.html#hdfs_client_conf)
如果这是您想要更改的内容,那么我建议您提交 jira 请求新功能。
HBase 还能够将编辑从一个 HBase 集群复制到另一个集群。此复制是按预写日志进行的,并且可以按列族进行配置。将 REPLICATION_SCOPE 设置为 one 将告诉 HBase 将此区域服务器的编辑应用到另一个集群。将此设置为 0 将关闭复制。
我对此看了很多。如我所见-您不能为表定义不同的复制,更不用说为列族定义了。
复制的数量在用于整个表的 hbase-site.xml 中定义。您可以定义是否要复制列族或不使用 REPLICATION_SCOPE。