HBase随机宕机事件处理 & JVM GC回顾

HBase随机宕机事件处理 & JVM GC回顾-Hbase-about云开发 http://www.aboutyun.com/thread-11240-1-1.html

**问题导读
****1.JVM主要内存区域分为哪几部分?2.Java可配置的垃圾收集器有哪几种类型?

一、引言


本文记录了困扰团队两周的HBase随机宕机事件的解决方案,并回顾了JVM GC调优基础知识,供各位参考。二、实验环境


16台虚拟机,每台4G内存,1核CPU,400G硬盘Ubuntu 14.04 LTS (GNU/Linux 3.13.0-29-generic x86_64)CDH5.2.0套装(包括相应版本的Hadoop,HIVE,Hbase,Mahout,Sqoop,Zookeeper等)Java 1.7.0_60 64-Bit Server三、异常现场


在以上实验环境中执行计算任务,计算任务涉及HIVE、Mahout、Hbase bulkload、MapReduce,工作流驱动通过Shell脚本控制,整个任务执行过程涉及基础行为数据160万条,业务数据40万条。多次执行任务过程中反复随机出现以下各类异常,仅用文字描述,就不拷贝异常现场了,大家各自对号入座:1.Hbase的Regionserver进程随机挂掉(该异常几乎每次都发生,只是挂掉的Regionser节点不同)2.HMaster进程随机挂掉3.主备Namenode节点随机挂掉4.Zookeeper节点随机挂掉5.Zookeeper连接超时6.JVM GC睡眠时间过长7.datanode写入超时等等通过调研分析和调试,发现问题解决需从以下几个方面着手:1.Hbase的ZK连接超时相关参数调优:默认的ZK超时设置太短,一旦发生FULL GC,极其容易导致ZK连接超时;2.Hbase的JVM GC相关参数调优:可以通过GC调优获得更好的GC性能,减少单次GC的时间和FULL GC频率;3.ZK Server调优:这里指的是ZK的服务端调优,ZK客户端(比如Hbase的客户端)的ZK超时参数必须在服务端超时参数的范围内,否则ZK客户端设置的超时参数起不到效果;4.HDFS读写数据相关参数需调优;5.YARN针对各个节点分配资源参数调整:YARN需根据真实节点配置分配资源,之前的YARN配置为每个节点分配的资源都远大于真实虚拟机的硬件资源;6.集群规划需优化:之前的集群规划中,为了充分利用虚拟机资源,NameNode、NodeManager、DataNode,RegionServer会混用同一个节点,这样会导致这些关键的枢纽节点通信和内存压力过大,从而在计算压力较大时容易发生异常。正确的做法是将枢纽节点(NameNode,ResourceManager,HMaster)和数据+计算节点分开。四、为了解决该问题而实施的各类配置及集群调整
HBasehbase-site.xml**

你可能感兴趣的:(HBase随机宕机事件处理 & JVM GC回顾)