PS:之前做项目的时候,需要做个复杂的查询,大量的查询总是导致hbase集群奔溃,最后定位到时full GC的原因。

以下转自《Hbase不睡觉书》------------------------

可怕的Full GC

随着内存的加大, 有一个不容忽视的问题也出现了, 那就是JVM的堆内存越大, Full GC的时间越久。 Full GC有时候可以达到好几分钟。在Full GC的时候JVM会停止响应任何的请求, 整个JVM的世界就像是停止了一样, 所以这种暂停又被叫做Stop-The-World( STW) 。当ZooKeeper像往常一样通过心跳来检测RegionServer节点是否存
活的时候, 发现已经很久没有接收到来自RegionServer的回应, 会直接把这个RegionServer标记为已经宕机。 等到这台RegionServer终于结束了Full GC后, 去查看ZooKeeper的时候会发现原来自己已经“ 被宕机” 了, 为了防止脑裂问题的发生, 它会自己停止自己。 这种场景称为RegionServer自杀, 它还有另一个美丽的名字叫朱丽叶暂停, 而且这问
题还挺常见的, 早期一直困扰着HBase开发人员。 所以我们一定要设定好GC回收策略, 避免长时间的Full GC发生, 或者是尽量减小Full GC的时间。

GC回收策略优化
     由于数据都是在RegionServer里面的, Master只是做一些管理操作, 所以一般内存问题都出在RegionServer上。 接下来主要用RegionServer来讲解参数配置, 如果你想调整Master的内存参数, 只需要把HBASE_REGIONSERVER_OPTS换成HBASE_MASTER_OPTS就行了。JVM提供了4种GC回收器:

  • 串行回收器( SerialGC) 。
  • 并行回收器( ParallelGC) , 主要针对年轻带进行优化( JDK 8默认策略) 。
  • 并发回收器( ConcMarkSweepGC, 简称CMS) , 主要针对年老带进行优化。
  • G1GC回收器, 主要针对大内存( 32GB以上才叫大内存) 进行优化。

具体实现请参考《Hbase不睡觉书》第八章第一节。

《Hbase不睡觉书》下载  https://pan.baidu.com/s/1u6lA1zRcYvLGxGov19ObcA      提取码: 7xpb

其实spark也有这个问题。

可怕的Full GC (转自Hbase不睡觉书)的更多相关文章

  1. HBase电子书

    HBase 不睡觉书  https://pan.baidu.com/s/1d4u7pPAu_B3sW5w9x1ARdA HBase2018年年度总结 https://pan.baidu.com/s/1 ...

  2. HBase学习笔记(一)——基础入门

    1.what:什么是HBase HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储. HBase是一个高可靠 ...

  3. HBase学习笔记(四)—— 架构模型

    在逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列. 但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional m ...

  4. HBase原理、设计与优化实践

    转自:http://www.open-open.com/lib/view/open1449891885004.html 1.HBase 简介 HBase —— Hadoop Database的简称,G ...

  5. HBase优化实战

    本文来自网易云社区. 背景 Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据.对于像Datastream这种数据量巨大.对写入要求非常高,并且 ...

  6. (转)hbase master挂掉-zookeeper连接超时原因

    link:http://www.51testing.com/?uid-445759-action-viewspace-itemid-812467 并行运行hbase删表,建表操作,多个表多个regio ...

  7. HBASE架构解析(二)

    http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html HBase读的实现 通过前文的描述,我们知道在HBase写时,相同Cell( ...

  8. HBase 管理,性能调优

    设置 Hadoop 来扩展磁盘 I/O 现代服务器通常有多个磁盘硬件来提供大存储能力.这些磁盘通常配置成 RAID 阵列,作为它们的出厂设置.这在很多情况下是有益的,但对 Hadoop 却不是. Ha ...

  9. 深入HBase架构解析(二)【转】

    转自:http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html 前言 这是<深入HBase架构解析(一)>的续,不多废话, ...

随机推荐

  1. LengthFieldBasedFrameDecoder 参数说明

    LengthFieldBasedFrameDecoder 参数说明 举例 数据包格式为 body长度(4个)+14个字节的版本说明(字符串)+body 那么LengthFieldBasedFrameD ...

  2. vertica 设置最大会话数

    默认会话数最大值55,如果超过了,就会报如下错误: com.vertica.support.exceptions.NonTransientConnectionException: [Vertica][ ...

  3. SQLServer --------- 设置主键自增长

    设置主键自增长的两种方式 1.通过图形化的的操作方法进行设置 新建的时候进行设置 第二种是右击设计对已经建好的表进行设置  设置主键  设置自增长 标识增量标识每次自增加多少 标识种子标识从多少开始自 ...

  4. OpenCV vs. Armadillo vs. Eigen on Linux

    OpenCV vs. Armadillo vs. Eigen on Linux From:http://nghiaho.com/?p=936 In this post I’ll be comparin ...

  5. Rider 中无法显示DataTable,VS2019的.netCore才有DataTable可视化工具(4)

    如下图在vs2017中是这样的 在2019中是可以直接看的 在Rider中无论什么项目都不支持.

  6. ElasticSearch如何更新集群的状态

    ElasticSearch如何更新集群的状态 最近发生了很多事情,甚至对自己的技术能力和学习方式产生了怀疑,所以有一段时间没更新文章了,估计以后更新的频率会越来越少,希望有更多的沉淀而不是简单地分享. ...

  7. Prometheus 告警收敛

    Prometheus 告警收敛 告警面临最大问题,是警报太多,相当于狼来了的形式.收件人很容易麻木,不再继续理会.关键的告警常常被淹没.在一问题中,alertmanger在一定程度上得到很好解决. P ...

  8. 分布式任务调度平台XXL-JOB快速使用与问题总结

    1.XXL-JOB简介 XXL-JOB is a lightweight distributed task scheduling framework. It's core design goal is ...

  9. Storm 系列(九)—— Storm 集成 Kafka

    一.整合说明 Storm 官方对 Kafka 的整合分为两个版本,官方说明文档分别如下: Storm Kafka Integration : 主要是针对 0.8.x 版本的 Kafka 提供整合支持: ...

  10. Jenkins的使用(一)

    Jenkins 介绍: Jenkins是一个独立的开源软件项目,是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件的持续集成 变成可能.前身是Huds ...