【问题标题】:Set "hbase.server.keyvalue.maxsize" Programmatically via Java通过 Java 以编程方式设置“hbase.server.keyvalue.maxsize”
【发布时间】:2018-11-29 09:28:56
【问题描述】:

我正在通过 Java Spring boot 执行 hbase 操作。我收到错误“大小为 10762275 的单元格超出了 10485760 字节的限制”

我在某处了解到增加单元格大小,即需要在 hbase-site.xml 中将“hbase.server.keyvalue.maxsize”设置为所需大小才能解决此问题。 我添加了这个属性并解决了问题。

但是我想通过我的 Java 代码添加这个属性,因为我可能无法在生产环境中访问 hbase-site.xml。

我设置属性的配置方法是:

public Configuration createHbaseConfiguration() {
        Configuration conf = HBaseConfiguration.create();
        conf.clear();
        conf.set("hbase.master.port", hbaseConnectionPortNum);
        conf.set("hbase.master", hbaseConnectionIpAddr);
        conf.set("hbase.zookeeper.quorum", zookeeperConnectionIpAddr);
        conf.set("hbase.zookeeper.property.clientPort", zookeeperConnectionPortNum);
        conf.setInt("hbase.client.retries.number", 2);
        conf.setInt("hbase.client.keyvalue.maxsize", 0);
        conf.setInt("hbase.server.keyvalue.maxsize", 0);
        return conf;
    }

我能够连接到 hbase,也可以通过 java 使用这些属性执行所有其他 hbase 操作,但是我在单元大小问题上遇到了相同的问题。

注意: 将“hbase.server.keyvalue.maxsize”设置为 0 会移除所有单元格大小限制。

总结: 如果我在 hbae-site.xml 中设置属性“hbase.server.keyvalue.maxsize”,它会非常好,但是如果我尝试通过 java 以编程方式添加它,它就不起作用了。 p>

请告诉我问题的原因和解决方案?

【问题讨论】:

    标签: java spring-boot hadoop hbase


    【解决方案1】:

    hbase.server.keyvalue.maxsize 保护您的生产服务器免受试图上传大单元格的行为不端的客户端的影响。该属性不能被客户端覆盖,这与其最初的目的相矛盾。

    hbase.client.keyvalue.maxsize 用于在客户端验证单元格大小而不向服务器请求。通常它与 hbase.server.keyvalue.maxsize 具有相同的值。

    上传大小超过 10MB(默认值)的单元格是个坏主意。尝试阅读 HBase 中的 MOB 功能,它专为您的用例而设计。

    【讨论】:

    • 您能否在文档上发布链接,以防止 hbase.server.keyvalue.maxsize 从客户端更改?
    【解决方案2】:

    我怀疑是否有任何名为“hbase.server.keyvalue.maxsize”的属性。
    它是“hbase.client.keyvalue.maxsize”属性,它禁用对 Keyvalue 实例的限制。

    这里是 hbase-default.xml:https://svn.apache.org/repos/asf/hbase/hbase.apache.org/trunk/hbase-default.xml

    是的,您可以在 java 程序中设置此属性,如下所示。

    conf.set("hbase.client.keyvalue.maxsize","0");
    

    【讨论】:

    【解决方案3】:

    如果我们将客户端和服务器都更改为 0,结果是什么? MOB阈值会更改为设置值吗?即没有限制。或者有什么不好的结果?

    hbase.client.keyvalue.maxsize = 0;
    hbase.server.keyvalue.maxsize = 0;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-19
      • 2012-06-01
      • 2013-09-03
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多