1.垃圾回收器调优
当我们往hbase写入数据,它首先写入memstore当中,当menstore的值大于hbase.hregion.memstore.flush.size参数中设置的值后,就会写入硬盘。
在hbase-env.sh文件中,我们可以设置HBASE_OPTS或者HBASE_REGIONSERVER_OPTS,后者只影响region server进程。
export HBASE_REGIONSERVER_OPTS="-Xmx8g -Xms8g -Xmn128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -verbose:gc -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:$HBASE_HOME/logs/gc-$(hostname)-hbase.log"
《hbase权威指南》推荐了上述的写法,下面是从网上搜的,原书中为什么要这么设置的解释真心看不懂。
-Xmx8g -Xms8g –Xmn128m :最大堆内存8G,最小堆内存8G,新生代内存-Xmn128m。
-XX:+UseParNewGC : 设置对于新生代的垃圾回收器类型,这种类型是会停止JAVA进程,然后再进行回收的,但由于新生代体积比较小,持续时间通常只有几毫秒,因此可以接受。
-XX:+UseConcMarkSweepGC :设置老生代的垃圾回收类型,如果用新生代的那个会不合适,即会导致JAVA进程停止的时间太长,用这种不会停止JAVA进程,而是在JAVA进程运行的同时,并行的进行回收。
-XX:CMSInitiatingOccupancyFraction :设置CMS回收器运行的频率,避免前两个参数引起JAVA进程长时间停止,设置了这个之后,不需要停止JAVA进程,但是会提高CPU使用率。
最后两句是输出详细的日志。
2.MemStore-Local Allocation Buffer
MemStore-Local Allocation Buffer,是Cloudera在HBase 0.90.1时提交的一个patch里包含的特性。它基于Arena Allocation解决了HBase因Region flush导致的内存碎片问题。
MSLAB的实现原理(对照Arena Allocation,HBase实现细节):
MemstoreLAB为Memstore提供Allocator。
创建一个2M(默认)的Chunk数组和一个chunk偏移量,默认值为0。
当Memstore有新的KeyValue被插入时,通过KeyValue.getBuffer()取得data bytes数组。将data复制到Chunk数组起始位置为chunk偏移量处,并增加偏移量=偏移量+data.length。
当一个chunk满了以后,再创建一个chunk。
所有操作lock free,基于CMS原语。
优势:
KeyValue原始数据在minor gc时被销毁。
数据存放在2m大小的chunk中,chunk归属于memstore。
flush时,只需要释放多个2m的chunks,chunk未满也强制释放,从而为Heap腾出了多个2M大小的内存区间,减少碎片密集程度。
开启MSLAB
hbase.hregion.memstore.mslab.enabled=true // 开启MSALB
hbase.hregion.memstore.mslab.chunksize=2m // chunk的大小,越大内存连续性越好,但内存平均利用率会降低,要比插入的单元格的数据大一些。
hbase.hregion.memstore.mslab.max.allocation=256K // 通过MSLAB分配的对象不能超过256K,否则直接在Heap上分配,256K够大了。
3.压缩存储
直接上图吧,说多了没用。
推荐使用Snappy,性能最好,但是Snappy要单独安装,安装教程等我装成功了,再发一个文档出来吧。
4.优化Splits and Compactions
对于实时性要求稳定的系统来说,不定时的split和compact会使集群的响应时间出现比较大的波动,因此建议把split和compact关闭,手动进行操作,比如我们把hbase.hregion.max.filesize设置成100G(major compaction大概需要一小时,设置太大了,compaction会需要更多的时间),major compaction是必须要做的,群里有个网友给数据设置了过期时间,数据被逻辑删除了,但是没有释放硬盘空间,why?没有进行major compaction,最后是手动进行的合并。
5.平衡分布
在我们设计rowkey的时候,在前面加上随机数,比如0rowkey-1,1rowkey-2,0rowkey-3,1rowkey-4,去前面加上个随机数,就会有负载均衡的效果,但是如果这样做了,某个机器的数据还是比别的机器要多很多,这个怎么办呢?我们可以手动调用move()方法,通过shell或者HBaseAdmin类,或者调用unassign()方法,数据就会转移了。
转载于:https://my.oschina.net/u/923508/blog/413124
分享到:
相关推荐
在大数据存储领域,HBase作为一个分布式列式数据库,被广泛应用于处理海量结构化数据。...这份资料中的“HBase配置项说明及调优建议.xlsx”应该包含了详细的参数解释和实践案例,是学习和优化HBase不可或缺的参考资源。
本文首先简单介绍了HBase,然后重点讲述了HBase的高并发和实时处理数据 、HBase数据模型、HBase物理存储、HBase系统架构,HBase调优、HBase Shell访问等。
HBase的学习和使用需要对Hadoop生态系统有所了解,因为HBase与Hadoop的其他组件紧密集成,尤其是HDFS和Zookeeper。对于希望构建大规模、可扩展的分布式系统的技术人员来说,掌握HBase是实现这一目标的关键技能之一。
【标题】"Hadoop之HBase学习笔记"主要聚焦于Hadoop生态中的分布式数据库HBase。HBase是一个基于Google Bigtable理念设计的开源NoSQL数据库,它运行在Hadoop之上,提供高性能、高可靠性以及可水平扩展的数据存储能力...
【标题】:“hadoop,hive,hbase学习资料”是一份综合性的学习资源,涵盖了大数据处理领域中的三个核心组件——Hadoop、Hive和Hbase。这些工具在大数据处理和分析中发挥着至关重要的作用。 【描述】:描述指出这份...
HBase是一种分布式的、面向列的开源...这些资源为学习和掌握HBase提供了全面的指导,从理论到实践,从基础到高级,帮助读者深入理解HBase在大数据环境中的作用和价值,以及如何有效地利用它来处理和分析大规模数据。
关键词:HBase、自动调优、性能建模、性能优化、机器学习 文章的分类号为TP391,属于计算机科学技术领域的数据库管理子类。这项研究不仅对HBase的用户和管理员具有实际指导意义,也为其他分布式数据库系统的参数...
7. **性能优化**:可能涉及MapReduce和HBase的性能调优技巧,如分区策略、缓存设置等。 8. **源码解析**:深入分析WordCount和HBase MapReduce样例代码的细节,帮助读者理解并学习如何自己编写类似的应用。 由于...
书中涵盖了HBase的安装配置、数据模型设计、表管理、性能调优、故障排查等方面,让开发者能够快速上手并解决实际问题。 《HBase权威指南》则是一部全面的HBase技术手册,详细阐述了HBase的内部机制和工作原理,包括...
《HBase 1.0.3 进阶学习——Part2》 在深入探讨HBase 1.0.3的Part2之前,我们先回顾一下HBase的基本概念。HBase,作为Apache Hadoop生态系统中的一个分布式列式数据库,提供实时读写、强一致性的存储服务。它基于...
通过深入学习这些文档和配置文件,开发者可以更好地理解HBase的工作原理,从而有效地部署、管理和优化HBase集群,满足大规模数据处理的需求。同时,了解这些内容也是开发基于HBase的应用程序或服务的基础。
性能调优是HBase高效运行的关键,涉及操作系统、网络、Java虚拟机、HBase配置、ZooKeeper、Schema设计等多个层面的优化策略。 故障排除和调试部分提供了各种问题的解决方法,包括日志分析、资源管理、工具使用以及...
HBase是一种分布式、基于列族的NoSQL数据库,由...然而,HBase的复杂性远不止于此,如表设计、故障恢复、监控及性能优化等方面都需要深入学习和实践。在实际应用中,根据业务需求选择合适的数据库和优化策略至关重要。
《HBase权威指南中文版》是一本全面深入介绍HBase技术的书籍,涵盖了从基础概念到高级应用的各个层面。...通过学习这本书,读者不仅可以掌握HBase的核心原理,还能获得在实际项目中运用HBase的宝贵经验。
通过以上解析可以看出,《HBase 官方文档》覆盖了 HBase 的各个方面,从基础入门到高级应用,再到故障排除,是一份非常全面的技术文档,对于学习和使用 HBase 的技术人员来说具有极高的参考价值。
通过深入学习和研究`hbase-2.4.11`的源码,开发者不仅可以理解HBase的基本原理,还能掌握如何优化性能,解决实际应用中的问题,为大数据处理提供更强大的支持。无论是对HBase的开发、运维还是调优,这份源码都是宝贵...
在这个“hbase_常用配置参数_以及学习笔记讲解_以及各种原理图.zip”压缩包中,包含了一系列关于HBase关键概念、配置参数和原理的资料,通过以下几部分来详细介绍这些内容: 1. **HBase架构原理**: HBase采用列式...