线上的fsimage 有1.8G左右了,设置了6G heap 不够用了

新生代:老年代=1:2=2G: 4G

NameNode的内存主要由NameSpace和BlocksMap占用,其中NameSpace存储的主要是INodeFile和INodeDirectory对象,BlocksMap存储的主要是BlockInfo对象。则估算NameNode占用的内存大小也就是估算集群中INodeFile、INodeDirectory和BlockInfo这些对象占用的heap空间。

Java中常见数据结构占用的内存大小

下面先列举下java中常见数据结构占用的内存大小(64bit的jvm)

int = 4 bytes

long = 8 bytes

Reference size(引用) = 8 bytes

Object header size(对象头) = 16 bytes

Array header size(数组头) = 24 bytes

ArrayList header size(list头) = 24(数组头) + 4(属性size的大小) = 28 bytes

TreeMap.Entry = 64 bytes. (Entry的属性中有5个引用)

HashMap.Entry = 48 bytes. (Entry的属性有3个引用)

String header = 64 bytes.

1.去 hdfs ui 上看

19262510 files and directories, 14485600 blocks = 33748110 total filesystem object(s).
Heap Memory used 4.68 GB of 5.86 GB Heap Memory. Max Heap Memory is 5.86 GB.

33745283 * 150 bytes = 4.7G

2.大概用jmap 查看内存大概有 4.68Gb

$ jmap -histo:live  31366 | grep 'Total'
Total 84543039 4688976560

两者近似了,fsimage 大概在内存放大 2.6倍左右(当然内存中数据更多些,多了块与节点之间的映射)


参考:http://bigdatadecode.club/NameNode内存解析及大小评估.html

hdfs fsimage namenode 应该设置多少堆内存合适的更多相关文章

  1. HDFS的NameNode堆内存估算

    NameNode堆内存估算 在HDFS中,数据和元数据是分开存储的,数据文件被分割成若干个数据块,每一个数据块默认备份3份,然后分布式的存储在所有的DataNode上,元数据会常驻在NameNode的 ...

  2. 【转载】java项目中经常碰到的内存溢出问题: java.lang.OutOfMemoryError: PermGen space, 堆内存和非堆内存,写的很好,理解很方便

    Tomcat Xms Xmx PermSize MaxPermSize 区别 及 java.lang.OutOfMemoryError: PermGen space 解决 解决方案 在 catalin ...

  3. 干货:JVM 堆内存和非堆内存

    堆和非堆内存 按照官方的说法:"Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的."" ...

  4. JVM 堆内存和非堆内存

    转载自:http://www.importnew.com/27645.html 堆和非堆内存 按照官方的说法:“Java 虚拟机具有一个堆(Heap),堆是运行时数据区域,所有类实例和数组的内存均从此 ...

  5. myeclipse 配置堆内存

    2.非堆内存分配 JVM使用-XX:PermSize设置非堆内存初始值,默认是物理内存的1/64:由XX:MaxPermSize设置最大非堆内存的大小,默认是物理内存的1/4. 打开myeclipse ...

  6. Java堆内存Heap与非堆内存Non-Heap

    堆(Heap)和非堆(Non-heap)内存     按照官方的说法:“Java 虚拟机具有一个堆,堆是运行时数据区域,所有类实例和数组的内存均从此处分配.堆是在 Java 虚拟机启动时创建的.”“在 ...

  7. Java堆内存不足

    1)使用IDEA开发程序时有时候会提示“Java Heap space error”,说明IDEA默认配置的Java堆内存不足,程序需要更多的堆内存. 2)堆(Heap)和非堆(Non-heap)内存 ...

  8. 2019/05/13 JAVA虚拟机堆内存调优

    -Xms4000m 堆内存初始值 * -Xmx4000m 堆内存最大值 * -XX:+PrintGCDetails 打印GC信息 * -XX:+UseSerialGC 使用串行GC * -XX:+Pr ...

  9. JVM堆内存参数优化,让性能飞起来

    堆内存是Java进程的重要组成部分,几乎所有与应用相关的内存空间都和堆有关.现在主要介绍与堆内存相关的参数设置,这些参数对Java虚拟机中非常重要的,也是对程序性能有着重要的影响.让你彻底脱离OOM内 ...

随机推荐

  1. InfluxDB HTTP API reference

    InfluxDB HTTP API reference API地址:https://docs.influxdata.com/influxdb/v1.6/tools/api/ The InfluxDB ...

  2. [蓝桥杯]ALGO-48.算法训练_关联矩阵

    题目描述: 问题描述 有一个n个结点m条边的有向图,请输出他的关联矩阵. 输入格式 第一行两个整数n.m,表示图中结点和边的数目.n<=,m<=. 接下来m行,每行两个整数a.b,表示图中 ...

  3. ALGO-149_蓝桥杯_算法训练_5-2求指数

    AC代码: #include <stdio.h> int main(void) { int n,m,sum; int i,j; scanf("%d %d",&n ...

  4. P3811 乘法逆元

    传送 乘法逆元:ax ≡ 1 (mod p),其中x为a的逆元,求模意义下的乘法逆元,通常有一下几种方法: 1.拓展欧几里得(也就是exgcd) ax ≡ 1 (mod p) ax-py=1 这就变成 ...

  5. 阿里云服务器 ECS Linux SWAP 配置概要说明

    SWAP 简介 Linux 中的 SWAP(交换分区),类似于 Windows 的虚拟内存.系统会把一部分硬盘空间虚拟成内存使用,将系统内非活动内存换页到 SWAP,以提高系统可用内存. 注:参阅 E ...

  6. react表单事件和取值

    常见的表单包括输入框,单选框,复选框,下拉框和多文本框,本次主要总结它们在react中如何取值. 输入框 在之前有说过输入框,可以先给input框的value绑定一个值,然后通过input框的改变事件 ...

  7. VMware虚拟机上配置nginx后,本机无法访问问题(转载)

    转自:http://www.server110.com/nginx/201407/10794.html 把nginx装在CentOS上,用本机访问虚拟机的时候却出现了不能访问的问题,查了资料以后,原来 ...

  8. 阿里云ECS安装的redis服务器,用java代码去连接报错。

    import redis.clients.jedis.Jedis; /** * Hello world! * */ public class App { public static void main ...

  9. 安装时提示 INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 解决办法

    INSTALL_PARSE_FAILED_MANIFEST_MALFORMED 安装时出现这个提示. 是由于你工程的AndroidManifest.xml 配置有误,一般来说是activity或Ser ...

  10. SCCM2012 R2实战系列之十一:解决OSD分发Windows7 系统盘盘符为’D’问题

    在SCCM 2012 R2操作系统分发(OSD)中,大家最早做的实验可能就是分发干净的Windows7和Windows 8(或Windows8.1)了吧.但是不可面对的问题就是相同配置的任务序列(只是 ...