[英]There is insufficient memory for the Java Runtime Environment to continue hbase
我已經瀏覽了與類似問題相關的所有答案,但我無法得出關於我的 Java 代碼或 Hbase 配置中的問題的結論。 所以我再次發布這個問題。 我在 Hbase 中遇到以下錯誤。 我有 3 個用於 Hadoop 集群的虛擬機。
主節點 - 3 GB RAM
數據節點 1 - 7 GB 內存
數據節點 2 - 7 GB 內存
我的 Java 程序在 Hbase 主節點上運行,該工作人員將數據插入到 Hbase 表中,大約在插入 10 萬條記錄后,我得到以下錯誤,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
核心編號:1
CPU核心:2
酸:1
初始酸:1
fpu:是的
fpu_exception : 是
cpuid 級別:5
wp:是的
國旗:FPU VME德PSE TSC MSR,PAE MCE CX8 APIC月MTRR PGE MCA CMOV拍拍PSE36 CLFLUSH MMX SSE FXSR SSE2 HT系統調用NX mmxext fxsr_opt流明3dnowext 3DNOW rep_good nopl extd_apicid PNI CX16 POPCNT管理程序lahf_lm cmp_legacy cr8_legacy反導SSE4A misalignsse 3dnowprefetch osvw vmmcall
錯誤:tlb_mmatch apic_c1e fxsave_leak
博戈米普斯:4205.20
TLB 大小:1024 個 4K 頁
clflush 大小:64
緩存對齊:64
地址大小:42 位物理,48 位虛擬電源管理:
內存:4k頁,物理3523172k(135048k free),swap 0k(0k free)
vm_info:用於 linux-amd64 JRE (1.7.0_79-b14) 的 OpenJDK 64 位服務器 VM (24.79-b02),構建於 2015 年 7 月 24 日 08:15:54,由“buildd”使用 gcc 4.8.2
時間:2015年9月4日星期五06:43:48
已用時間: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>
你幾乎沒有空閑內存,也沒有交換區。
physical 3523172k(135048k free), swap 0k(0k free)
最簡單的解決方案是添加一些交換空間,我建議最少 4 GB,最多 16 GB。
創建一個 2G 的 Swap 文件
sudo dd if=/dev/zero of=/swapfile count=2048 bs=1MiB
sudo chmod 600 /swapfile
sudo mkswap /swapfile
sudo swapon /swapfile
sudo nano /etc/fstab
添加這一行: /swapfile swap swap sw 0 0
運行swapon --show
和free -h
來驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.