HBase KeyValue.maxSize 无法禁用

HBase KeyValue.maxSize cannot be disabled

我已经添加了

 <property>
    <name>hbase.client.keyvalue.maxsize</name>
     <value>0</value>   
  </property>

在 hbase-site.xml 中。

我将 hbase.client.keyvalue.maxsize 值从 hbase-0.94.27/docs/hbase-default.xml 更改为 0

<glossentry id="hbase.client.keyvalue.maxsize">
    <glossterm>
         <varname>hbase.client.keyvalue.maxsize</varname>
    </glossterm>
    <glossdef>
         <para>Default: <varname>0</varname></para>
   </glossdef>
</glossentry>

并将其从 hbase-0.94.27/src/main/resources/hbase-default.xml 更改为 0

 <property>
    <name>hbase.client.keyvalue.maxsize</name>
    <value>0</value>
 </property>

我还把它设置在 Java

Configuration config = HBaseConfiguration.create();
          config.setInt("hbase.client.keyvalue.maxsize", 0);

none 个已禁用 keyvalue.maxsize。还有另一种方法可以禁用检查键值大小吗?

首先,您在正确的位置 hbase-default.xml(不确定您在应用此设置后是否重新启动)

如果 0 不适合您,可以按照屏幕截图的描述标签中的描述尝试任何小于零的值。

提示 1: 要打印所有 HBase 配置,您可以使用来自调用者的此语句,它将打印来自不同来源的所有配置条目(系统属性或 XML 统一方式的条目)。检查您的设置更改是否已应用。

HBaseConfiguration.create().writeXml(System.out);

提示 2: 也可以使用转储主服务器和区域服务器配置 http 服务。例如"http://master:16010/dump"

其次,(预防)不推荐Hbase,一个cell存储的数据量太大,可能会OOM。

For ex:  KeyValue size too large at org. apache. hadoop. hbase.
 client. hbase.client.keyvalue.maxsize <value. (3896):
 java.lang.OutOfMemoryError: bitmap size exceeds too large for this the
 size of 16MB, it will throw out of memory.

附带说明一下,如果您有 200MB 的值要放入 HBase,我会建议您将其写入 HDFS 中的一个文件(几乎 2 个块!),然后将该文件中的引用写入 HBase。 . 或者做一些其他的事情。