Hadoop调优 | NameNode主备宕机引发的思考
大家都知道在双十一这些电商大型营销活动期间,电商网站的访问量等是平时的N倍。每当这个时候到来,无论是开发还是运维人员都严阵以待生怕服务出现问题。很不幸,笔者的一个朋友在一家电商公司上班,在双十一时,恰恰就出现了NameNode宕机的生产事故。
鉴于涉及到一些公司私密信息,不便发一些排查问题截图,同时,JVM调优作为大数据从业者必备技能,笔者打算后续分篇系统阐述,这里仅就问题现象、问题分析、解决方案三个层面阐述这次生产事故从产生、排查到最终解决的历程。希望能给大家带来一定思考,避免此类事情的发生以及提供出现类似问题时处理的一个思路。
问题现象
电商节日,各种促销活动等导致网站访问量等激增,数据量比平时多了很多倍,然后NameNode主备都挂了!问题排查的时候发现有大量的full GC日志
问题分析
NameNode的主要职责就是管理元数据,不会频繁创建和销毁对象,官方推荐1/4--1/3给年轻代,剩下的给老年代。当然这个配比应对平时的数据量是没有问题的,但在这种大型营销活动盛行的时候,网站访问量激增带来的是数据量激增,那么NameNode需要管理的元数据也会激增,对NameNode的内存是一个很大挑战。
1. 正常情况下,对象创建最初在新生代Eden区,Eden区放满,进行minor GC到Survivor区,反复进行minor GC,当Survivor对象年龄达到默认"15"岁,存活的对象进入老年区
2. Namenode启动时加载元数据到堆内存,元数据一般不会改变,会一直加载到老年代,当日新增数据量特别大时,NameNode加载大量数据到老年代,然后当老年代空间不足发生full GC,日志持续剧增,导致频繁发生full GC,最终主NameNode宕掉。然后备NameNode上,同样因为频繁发生full GC最终宕掉。解决方案方案1:调整NameNode新生代和老年代空间大小,将年轻代空间调小一些,老年代相应调大一些。新生代和老年代比例参数:-XX:NewRatio。
(如内存分配给新生代和老年代内存总共15G,按照官方说法分配给新生代5G,老年代10G,但假如实际情况是新生代根本用不了这么多,1G左右就够用。则可分配给新生代2G,老年代13G即可)
方案2:加内存(差方案,毕竟内存有限,增加服务器配置如内存是要走申请的。。还是要解决根本问题才是王道)
最终结果
1. 问题解决
2. 笔者的朋友当月的鸡腿没了。。
对于NameNode主要管理元数据,而元数据一般不会频繁发生变化,可以适当将新生代比例设置小点,老年代比例设置大点。但是像Hive、Spark等任务型的,经常会频繁的创建和销毁对象,这个时候就可以把新生代比例设置大点,老年代比例设置小点以避免发生full GC的机率。
关注微信公众号:大数据学习与分享,获取更对技术干货
Hadoop调优 | NameNode主备宕机引发的思考的更多相关文章
- MongoDB一次节点宕机引发的思考(源码剖析)
目录 简介 日志分析 副本集 如何实现 Failover 心跳的实现 electionTimeout 定时器 业务影响评估 参考链接 声明:本文同步发表于 MongoDB 中文社区,传送门: http ...
- MongoDB一次节点宕机引发的思考(源码剖析)【华为云分享】
目录 简介 日志分析 副本集 如何实现 Failover 心跳的实现 electionTimeout 定时器 业务影响评估 参考链接 声明:本文同步发表于 MongoDB 中文社区,传送门:http: ...
- hadoop调优之一:概述 分类: A1_HADOOP B3_LINUX 2015-03-13 20:51 395人阅读 评论(0) 收藏
hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...
- hadoop调优之一:概述
hadoop集群性能低下的常见原因 (一)硬件环境 1.CPU/内存不足,或未充分利用 2.网络原因 3.磁盘原因 (二)map任务原因 1.输入文件中小文件过多,导致多次启动和停止JVM进程.可以设 ...
- 关于Hadoop调优
Hadoop生产调优 一.HDFS-核心参数 1.NameNode 内存生产配置 1) NameNode 内存计算 每个文件块大概占用 150byte,一台服务器 128G 内存为例,能存储多少文件块 ...
- SpringBoot项目优化和Jvm调优(楼主亲测,真实有效)
项目调优 作为一名工程师,项目调优这事,是必须得熟练掌握的事情. 在SpringBoot项目中,调优主要通过配置文件和配置JVM的参数的方式进行. 在这边有一篇比较好的文章,推荐给大家! Spring ...
- MYSQL性能调优与架构设计之select count(*)的思考
select count(*)的思考 原文:MYSQL性能调优与架构设计 举例: 这里我们就拿一个看上去很简单的功能来分析一下. 需求:一个论坛帖子总量的统计 附加要求:实时更新 在很多人看来,这 ...
- 转】MYSQL性能调优与架构设计之select count(*)的思考
原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/5/ 感谢! Posted: Feb 7, 2013 Tag ...
- 【故障公告】redis 服务器宕机引发博客站点故障
非常抱歉,今天下午 17:10~17:40 左右,由于博客系统所使用的 redis 服务器宕机,造成博客站点无法正常访问,由此给您带来很大的麻烦,请您谅解. 我们会针对这次故障改进 redis 服务器 ...
随机推荐
- C++中try&catch
参考: https://blog.csdn.net/xueluowutong/article/details/81257654 在c++中,可以直接抛出异常之后自己进行捕捉处理,如:(这样就可以在 ...
- FOV
来源:https://blog.csdn.net/chepwavege/article/details/98876550 视场 (视图字段) 是指现场对面相机镜头的立体角.图如下图所示︰ 高频通气︰ ...
- 下载 Oracle Database XE 11gR2
操作系统:Windows 10 x64 第一节:下载 Oracle Database XE 11gR2 第二节:安装.验证安装 Oracle Database XE 11gR2 第三节:Oracle ...
- PADS Layout VX.2.3 修改层名
操作系统:Windows 10 x64 工具1:PADS Layout VX.2.3 点击菜单Setup > Layer Definition... 在Layers Setup窗口中,选择相应的 ...
- 【学习笔记/题解】虚树/[SDOI2011]消耗战
题目戳我 \(\text{Solution:}\) 题目很显然可以设\(dp[i]\)表示\(i\)的子树内的关键点都不和\(i\)联通的最小待机,有如下\(dp\)方程: \(v\in son_u, ...
- 几个常用markdown工具的主要优缺点
几个常用markdown工具的主要优缺点 最近对几个热门的markdown工具做了一个对比表 表格 脚注 图片和图床 平台 移动端 实时预览 收费 操作难度 导出功能 mweb 非常棒 预览正常显示 ...
- HTTPS证书知识扫盲
1. 前言 现在搞网站域名不加个HTTPS就显得不专业,特别在使用JWT进行认证的接口一定要加HTTPS为你的接口增加一层安全屏障.今天就来聊聊配置HTTPS的关键SSL证书,也被称为CA证书. 2. ...
- java怎么产生随机数
随机数的产生在一些代码中很常用,也是我们必须要掌握的.而java中产生随机数的方法主要有三种: 第一种:new Random() 需要借助java.util.Random类来产生一个随机数发生器,也是 ...
- Android HandlerThread 详解
概述 HandlerThread 相信大家都比较熟悉了,从名字上看是一个带有 Handler 消息循环机制的一个线程,比一般的线程多了消息循环的机制,可以说是Handler + Thread 的结合, ...
- swoole创建进程
<?php /** * Created by PhpStorm. * User: mac * Date: 2020/4/23 * Time: 21:57 */ use Swoole\Proces ...