早上登录hbase shell,出现异常:
[hadoop@node002 ~]$ hbase shell Java HotSpot(TM) 64-Bit Server VM warning: Insufficient space for shared memory file: /tmp/hsperfdata_hadoop/44512 Try using the -Djava.io.tmpdir= option to select an alternate temp location. Error: Could not find or load main class HotSpot(TM)
报磁盘空间不足,查看一下磁盘空间发现:
[hadoop@node002 hsperfdata_hadoop]$ df -a Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 20641404 19593080 0 100% / proc 0 0 0 - /proc sysfs 0 0 0 - /sys devpts 0 0 0 - /dev/pts tmpfs 8173280 0 8173280 0% /dev/shm /dev/sda3 443850904 406428196 14876328 97% /app /dev/sda1 99150 32465 61565 35% /boot /dev/sdb1 480719056 394902308 61397548 87% /opt/mdisk/disk1 /dev/sdc1 480719056 418919008 37380848 92% /opt/mdisk/disk2 /dev/sdd1 480719056 397923492 58376364 88% /opt/mdisk/disk3 none 0 0 0 - /proc/sys/fs/binfmt_misc sunrpc 0 0 0 - /var/lib/nfs/rpc_pipefs [hadoop@node002 hsperfdata_hadoop]$ df /tmp Filesystem 1K-blocks Used Available Use% Mounted on /dev/sda5 20641404 19593084 0 100% /
查看磁盘使用率发现,的确磁盘被人拷了大量文件占满了,解决方法可选:
1、移除部分文件,腾出磁盘空间。
2、通过 -Djava.io.tmpdir 参数指定其他磁盘。
3、也有人说可通过参数-XX:-UsePerfData 取消jvm自动创建pid文件(jvm默认会在/tmp目录下创建pid文件,未测试,有兴趣可测试一下)。
解决大致步骤:df发现某一个满的分区,然后选择挂载新磁盘或移走部分文件,du -sh /xxx 计算这个目录的总占用量 然后层层往下 找出占用较大空间的文件 ,最后做文件迁移。
另外,附带说明一下 /tmp/hsperfdata_$user/$number的作用(比较关键的一句):
That directory is part of a Java performance counter.
这个文件存的应该是JVM进程当前的运行信息或者说是一些性能参数。