hadoop - HBase KeyValue.maxSize 不能被禁用

标签 hadoop hbase

我已经添加了

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

在 hbase-site.xml 中。

我从 hbase-0.94.27/docs/hbase-default.xml 更改了 hbase.client.keyvalue.maxsize 值并将其设置为 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。还有另一种方法可以禁用检查键值大小吗?

最佳答案

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

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

enter image description here

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

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

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

其次,(这是预防措施)不建议使用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 个 block !),然后将该文件中的引用写入 HBase 中……或者做一些其他的方式。

关于hadoop - HBase KeyValue.maxSize 不能被禁用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37500178/

相关文章:

hadoop - 为什么 YARN 作业不转换到 RUNNING 状态?

hadoop - 连接到CDH4.5群集

java - Hadoop 命令行配置不覆盖默认值?

java - 从Zookeeper znode获取数据

java - 什么是 hbase 压缩文件大小

java - 如何更新 HBase 中的现有列值

hadoop - Dumbo mapreduce for hadoop

hadoop mapreduce 作业不运行 reducer

hadoop - 节点/hbase 不在 ZooKeeper 中

maven - 在 tomcat-server 中部署时与应用程序的依赖关系问题