linux java Cannot allocate memory

登录hbase shell的时候,给balabala报一堆错:

[xxx@hive001 lei.wang]$ hbase shell
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00007fc856e00000, 33285996544, 0) failed; error='Cannot allocate memory' (errno=12)
#
# There is insufficient memory for the Java Runtime Environment to continue.
# Native memory allocation (malloc) failed to allocate 33285996544 bytes for committing reserved memory.
# An error report file with more information is saved as:
# /home/xxx/lei.wang/hs_err_pid21926.log

赶紧查查问题吧。结合报错的提示,最直接的感受,可能是服务器的内存不够用了。赶紧查一把内存的使用情况:

[xxx@hive001 lei.wang]$ free -m
             total       used       free     shared    buffers     cached
Mem:         32060      22116       9943          0        256       7389
-/+ buffers/cache:      14470      17589
Swap:        16383        860      15523

尼玛。。。内存还大把大把有。看来,应该不是内存不足的原因。

上google查一把,有不少类似的情况。

http://stackoverflow.com/questions/20687517/cannot-allocate-memory-errno-12-errors-during-runtime-of-java-application

总结一下上面的情况,有反应java版本的问题,有反应jvm参数设置问题。可惜俺的账号木有权限,只能找管理机器的同学帮忙了。

运维同学用此账号也无法登陆,但是用root账号登陆就木有问题。尼玛。搞什么鬼。
不过这下问题基本明确了,十有八九是哪个系统变量的配置问题。

最后问题定位如下:
因为历史原因,服务器上装有两套hdfs系统。用过hbase的亲们都了解,hbase的底层存储,一般是依赖于hdfs的。
查看一下xxx账号下的.bashrc文件,

export JAVA_HOME=/home/xxx/local/jdk1.7.0_75
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/libexport:$JRE_HOME/lib:$CLASSPATH
export LD_LIBRARY_PATH=$JRE_HOME/lib/amd64/server:$LD_LIBRARY_PATH
export PATH=$JAVA_HOME/bin:$PATH

export HADOOP_HOME="/home/xxx/local/hadoop-2.5.0"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=$HADOOP_HOME/lib
export CLASSPATH=$HADOOP_CLASSPATH/*:$CLASSPATH
export LIBRARY_PATH=$LIBRARY_PATH:$HADOOP_HOME/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HODOOP_HOME/lib/native
export PATH=$HADOOP_HOME/bin:$PATH

但是root账号里的配置如下:

export HADOOP_HOME="/usr/lib/hadoop"
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_CLASSPATH=$HADOOP_HOME/lib

很明显,HADOOP_HOME的配置不一样,hbase启动的时候必然找不到hdfs,JVM必然无法给分配内存。
将xxx账号的.bashrc与hadoop相关的配置修改为跟root一样以后,顺利启动hbase shell。

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值