2015-09-04 87 views
2

我已经浏览了所有与类似问题相关的答案,但是我无法就Java代码或Hbase配置中的问题得出结论。所以我再次发布这个问题。我在Hbase中出现波纹管错误。我有3个用于Hadoop集群的虚拟机。没有足够的内存让Java运行时环境继续hbase

主节点 - 3 GB RAM

Datanode的1 - 7 GB RAM

Datanode的2 - 7 GB RAM

我的Java程序上HBASE主节点运行,这名工作人员将数据插入到Hbase表中,大约在插入100k条记录后,我得到了错误,并且Java程序和HMaster都停止了工作。

Java程序错误: -

OpenJDK的64位服务器VM警告:信息: OS :: commit_memory(0x00007fe05185c000,12288,0)失败;错误='不能 分配内存'(errno = 12)

没有足够的内存让Java运行时环境继续执行 。本地内存分配(malloc)未能分配12288 字节来提交保留内存。

更多信息的错误报告文件保存为:

/var/data/HadoopOperations/javaOperations/hs_err_pid41813.log

登录为hs_err_pid41813.log

处理器:1

vendor_id:AuthenticAMD

CPU家族:16

模型:8

型号名称:的AMD Opteron(TM)处理器4171 HE

步进:1

微代码:为0xffffffff

CPU兆赫:2094。643

缓存大小:512 KB

物理ID:0

兄弟姐妹:2

芯ID:1

CPU内核:2

apicid:1

初始apicid:1

FPU:是

fpu_exception:是

CPUID级别:5

WP:是

标志:FPU VME德PSE TSC MSR,PAE MCE CX8 APIC月MTRR PGE MCA CMOV pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt lm 3dnowext 3dnow rep_good nopl extd_apicid pni cx16 popcnt hypervisor lahf_lm cmp_legacy cr8_legacy abm sse4a misalignsse 3dnowprefetc^h osvw vmmcall

错误:tlb_mmatch apic_c1e fxsave_leak

bogomips:4205.20

TLB大小:

1024 4K页

CLFLUSH尺寸:64

cache_alignment:64个

地址尺寸:42位物理,48位虚拟电源管理:

内存:4K页,物理3523172k(免费135048k),交换0K(0K免费)

vm_info:OpenJDK的64位服务器VM(24.79-B02)为Linux-AMD64 JRE (1.7.0_79- B14),建立在2015年7月24日8点15分54秒由 “buildd” 用gcc 4.8.2

时间:星期五09月04日6点43分四十八秒2015

经过时间:63099秒

hbase-site.xml配置

<configuration> 
    <property> 
      <name>hbase.rootdir</name> 
      <value>hdfs://master:9000/hbase</value> 
    </property> 

    <property> 
      <name>hbase.cluster.distributed</name> 
      <value>true</value> 
    </property> 

    <property> 
      <name>hbase.zookeeper.property.clientPort</name> 
      <value>2181</value> 
    </property> 

    <property> 
      <name>hbase.zookeeper.quorum</name><value>master,datanodeone,datanodetwo</value> 
    </property> 

    <property> 
      <name>hbase.client.scanner.caching</name> 
      <value>10000</value> 
    </property> 

    <property> 
      <name>hfile.block.cache.size</name> 
      <value>0.6</value> 
    </property> 

    <property> 
      <name>hbase.regionserver.global.memstore.size</name> 
      <value>0.2</value> 
    </property>   
</configuration> 
+0

为Hbase Master分配的堆大小是多少 – Wazzzy

+0

堆大小是为hbase默认的。 – 3ppps

回答

4

您几乎没有空闲内存,也没有交换空间。

physical 3523172k(135048k free), swap 0k(0k free) 

最简单的解决方案是添加一些交换空间,我建议至少4 GB,最高16 GB。

+0

我没有关闭我的java程序中的htable对象,这是内存问题的原因吗? – 3ppps

+0

它可能会有所作为,但关键问题是用完虚拟内存(实际上是物理内存)这可能是现在的解决方案,但如果你接近极限,我会认真考虑添加一些交换空间。 –

相关问题