首页 > 系统相关 >namenode内存过大的危害

namenode内存过大的危害

时间:2024-01-23 12:00:41浏览次数:30  
标签:FsImage 过大 内存 NameNode namenode 数据 FGC

1、启动时间变长。NameNode的启动过程可以分成FsImage数据加载、editlogs回放、Checkpoint、DataNode的BlockReport几个阶段。数据规模较小时,启动时间可以控制在~10min以内,当元数据规模达到5亿(Namespace中INode数超过2亿,Block数接近3亿),FsImage文件大小将接近到20GB,加载FsImage数据就需要~14min,Checkpoint需要~6min,再加上其它阶段整个重启过程将持续~50min,极端情况甚至超过60min,虽然经过多轮优化重启过程已经能够稳定在~30min,但也非常耗时。如果数据规模继续增加,启动过程将同步增加。

2、性能开始下降。HDFS文件系统的所有元数据相关操作基本上均在NameNode端完成,当数据规模的增加致内存占用变大后,元数据的增删改查性能会出现下降,且这种下降趋势会因规模效应及复杂的处理逻辑被放大,相对复杂的RPC请求(如addblock)性能下降更加明显。

3、NameNode JVM FGC(Full GC)风险较高。主要体现在两个方面:(1)FGC频率增加;(2)FGC时间增加且风险不可控。针对NameNode的应用场景,目前看CMS内存回收算法比较主流,正常情况下,对超过100GB内存进行回收处理时,可以控制到秒级别的停顿时间,但是如果回收失败被降级到串行内存回收时,应用的停顿时间将达到数百秒,这对应用本身是致命的。

4、超大JVM Heap Size调试问题。如果线上集群性能表现变差,不得不通过分析内存才能得到结论时,会成为一件异常困难的事情。且不说Dump本身极其费时费力,Dump超大内存时存在极大概率使NameNode不可服务。

解决方案:可以使用namenode联邦机制解决,这种方式将namenode负载均衡,每个namenode管理不同的目录树结构,减小压力

 

参考链接:https://blog.csdn.net/wlh2220133699/article/details/133956405

标签:FsImage,过大,内存,NameNode,namenode,数据,FGC
From: https://www.cnblogs.com/chong-zuo3322/p/17982018

相关文章

  • hadoop优化namenode内存优化
    Namenode内存配置在Hadoop2.x里,如何配置NameNode内存?NameNode默认内存2000M。如果你的服务器内存是4G,那一般可以把NN内存设置成3G,留1G给服务器维持基本运行(如系统运行需要、DataNode运行需要等)所需就行。在hadoop-env.sh文件中设置:HADOOP_NAMENODE_OPTS=-Xmx3072mHadoop3.x系列,如......
  • 2024新版Windows 11要来了!16GB内存需求引热议 只是推荐配置
    最近,TrendForce集邦咨询的一份报告指出,微软已经将AIPC的内存基线设置为16GB。有媒体表示,这也意味着,新版Windows11的AI功能需要至少16GB内存才能运行。消息曝光后引发热议。对此,WC报道称,微软尚未就上述内存需求发表官方评论。16GB内存很可能只是微软的推荐配置,而非最低配置要求......
  • java内存泄露的排查思路?CPU飙高排查方案与思路?
    java内存泄露的排查思路?1.通过工具,VisualVM去分析dump文件,VisualVM可以加载离线的dump文件2.idea-->文件-->装入--->选择dump文件即可查看堆快照信息3.通过查看堆信息的情况,可以大概定位内存溢出是哪行代码出了问题4.找到对应的代码,通过阅读上下文的情况,进行修复即可CPU飙高......
  • 使用多进程库计算科学数据时出现内存错误
    问题背景我经常使用爬虫来做数据抓取,多线程爬虫方案是必不可少的,正如我在使用Python进行科学计算时,需要处理大量存储在CSV文件中的数据。由于每个处理过程需要很长时间才能完成,而您拥有多核处理器,所以您尝试使用多进程库中的Pool方法来提高计算效率。您按照如下方式构建了多......
  • 梦幻内存!全何为AMD撕裂者打造192GB DDR5-7200
    1月16日消息,全何科技(V-Color)宣布,面向AMD锐龙线程撕裂者7000系列处理器,推出顶级的192GBDDR5内存套装,频率最高可达7200MHz。AMD撕裂者7000系列支持四通道DDR5内存,单系统可以插四根,虽然不及撕裂者PRO7000系列的八通道,但在消费级领域也是无敌的存在。全何新内存采用精选的SK海力士......
  • IDEA 内存设置不生效
    项目内存不够时,特别卡。按照网上的教程,在帮助下更改内存设置,以及编辑虚拟机选项都没有用最终通过启动图标,找到软件安装位置,查看bin.dat文件,发现高级环境配置中指向的IDEA_VM_OPTIONS,指向的是破解文件中的文件位置,手动修改即可参考链接:IDEA内存设置不生效_idea修改内存不生效......
  • 中国学生经过大学学习后, 思维和技能均出现了退步 ?
    今天早上,  @dons222在反相吧 《只有大力发展裹脚布才能促进先进科学的发展》  https://tieba.baidu.com/p/8868966136   6楼 分享了一篇文章 《研究发现:中国学生经过大学学习后,批判性思维和学术技能均出现了退步》  https://mp.weixin.qq.com/s/0HqSWrJBVD......
  • ClickHouse中“大列”造成的JOIN的内存超限问题
    ClickHouse中“大列”造成的JOIN的内存超限问题“大列”是指单行数据量非常大的列,通常是100KiB以上。这样的列会导致JOIN(通常LEFTJOIN和INNERJOIN)出现内存超限的异常。常用的JOIN算法这里讨论的是常用的JOIN算法:partialmergejoin与hashjoin。Directjoin算法不在本文......
  • .NET(C#) 内存堆和栈
    ​  参考文档:.Net(C#)内存堆和栈-CJavaPy1、栈(Stack)栈是一种线性数据结构,它以先进先出(LIFO)的方式管理数据。栈主要用于存储方法调用的信息,包括局部变量、方法参数和返回地址等。每个线程都有自己的栈。栈上的数据存储空间由编译器自动管理,因此它具有高速读写的特点。栈上的......
  • js 栈追踪与内存管理
    期约与异步函数的功能有相当程度的重叠,但它们在内存中的表示则差别很大。看看下面的例子,它展示了拒绝期约的栈追踪信息:functionfooPromiseExecutor(resolve,reject){setTimeout(reject,1000,'bar');}functionfoo(){newPromise(fooPromiseExecutor);}fo......