无法禁用HBase KeyValue.maxSize

时间:2016-05-28 14:28:08

标签: hadoop hbase

我添加了

 <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);

他们都没有被禁用keyvalue.maxsize。有没有其他方法来禁用检查键值大小?

1 个答案:

答案 0 :(得分:2)

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

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

enter image description here

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

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

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

第二件事,(这是预防措施)Hbase不推荐用于一个单元格的过高数据存储,您可以输入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 ...或者做其他事。