作者: H.E. | 您可以转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明
网址: http://www.javabloger.com/article/hbase-performance-hbase-optimized.html
前两篇文件分别说到了我在学习HBase中的一些入门经验,而《HBase 入门3》这篇文章浅显的从几个方面谈谈HBase的一些优化技巧,只能作为我学习笔记的一部分,因为学多了怕忘,留给自己以后看看。
1 修改 linux 系统参数
Linux系统最大可打开文件数一般默认的参数值是1024,如果你不进行修改并发量上来的时候会出现“Too Many Open Files”的错误,导致整个HBase不可运行,你可以用ulimit -n 命令进行修改,或者修改/etc/security/limits.conf 和/proc/sys/fs/file-max 的参数,具体如何修改可以去Google 关键字 “linux limits.conf ”
2JVM 配置
修改 hbase-env.sh 文件中的配置参数,根据你的机器硬件和当前操作系统的JVM(32/64位)配置适当的参数
HBASE_HEAPSIZE 4000 HBase使用的 JVM 堆的大小
HBASE_OPTS "‐server ‐XX:+UseConcMarkSweepGC"JVM GC 选项
HBASE_MANAGES_ZKfalse 是否使用Zookeeper进行分布式管理
3 HBase持久化
重启操作系统后HBase中数据全无,你可以不做任何修改的情况下,创建一张表,写一条数据进行,然后将机器重启,重启后你再进入HBase的shell中使用 list 命令查看当前所存在的表,一个都没有了。是不是很杯具?没有关系你可以在hbase/conf/hbase-default.xml中设置hbase.rootdir的值,来设置文件的保存位置指定一个文件夹 ,例如:<value>file:///you/hbase-data/path</value>,你建立的HBase中的表和数据就直接写到了你的磁盘上,如图所示:
同样你也可以指定你的分布式文件系统HDFS的路径例如: hdfs://NAMENODE_SERVER:PORT/HBASE_ROOTDIR,这样就写到了你的分布式文件系统上了。
4配置HBase运行参数
其次就需要对hbase/conf/hbase-default.xml 文件进行配置,以下是我认为比较重要的配置参数
hbase.client.write.buffer
描述:这个参数可以设置写入数据缓冲区的大小,当客户端和服务器端传输数据,服务器为了提高系统运行性能开辟一个写的缓冲区来处理它, 这个参数设置如果设置的大了,将会对系统的内存有一定的要求,直接影响系统的性能。
hbase.master.meta.thread.rescanfrequency
描述:多长时间 HMaster对系统表 root 和 meta 扫描一次,这个参数可以设置的长一些,降低系统的能耗。
hbase.regionserver.handler.count
描述:由于HBase/Hadoop的Server是采用Multiplexed, non-blocking I/O方式而设计的,所以它可以透过一个Thread来完成处理,但是由于处理Client端所呼叫的方法是Blocking I/O,所以它的设计会将Client所传递过来的物件先放置在Queue,并在启动Server时就先产生一堆Handler(Thread),该Handler会透过Polling的方式来取得该物件并执行对应的方法,默认为25,根据实际场景可以设置大一些。
hbase.regionserver.thread.splitcompactcheckfrequency
描述:这个参数是表示多久去RegionServer服务器运行一次split/compaction的时间间隔,当然split之前会先进行一个compact操作.这个compact操作可能是minor compact也可能是major compact.compact后,会从所有的Store下的所有StoreFile文件最大的那个取midkey.这个midkey可能并不处于全部数据的mid中.一个row-key的下面的数据可能会跨不同的HRegion。
hbase.hregion.max.filesize
描述:HRegion中的HStoreFile最大值,任何表中的列族一旦超过这个大小将会被切分,而HStroeFile的默认大小是256M。
hfile.block.cache.size
描述:指定 HFile/StoreFile 缓存在JVM堆中分配的百分比,默认值是0.2,意思就是20%,而如果你设置成0,就表示对该选项屏蔽。
hbase.zookeeper.property.maxClientCnxns
描述: 这项配置的选项就是从zookeeper中来的,表示ZooKeeper客户端同时访问的并发连接数,ZooKeeper对于HBase来说就是一个入口这个参数的值可以适当放大些。
hbase.regionserver.global.memstore.upperLimit
描述:在Region Server中所有memstores占用堆的大小参数配置,默认值是0.4,表示40%,如果设置为0,就是对选项进行屏蔽。
hbase.hregion.memstore.flush.size
描述:Memstore中缓存的内容超过配置的范围后将会写到磁盘上,例如:删除操作是先写入MemStore里做个标记,指示那个value, column 或 family等下是要删除的,HBase会定期对存储文件做一个major compaction,在那时HBase会把MemStore刷入一个新的HFile存储文件中。如果在一定时间范围内没有做major compaction,而Memstore中超出的范围就写入磁盘上了。
5 HBase中log4j的日志
HBase中日志输出等级默认状态下是把debug、 info 级别的日志打开的,可以根据自己的需要调整log级别,HBase的log4j日志配置文件在 hbase\conf\log4j.properties 目录下。
–end–
我的废话:
其他内容正在学习中,HBase 作为 Apache Hadoop中的一个子项目,对于整个Hadoop来说真是我目前总结的这些还真是冰山一角。
相关文章:
HBase入门篇2
HBase入门篇
分享到:
相关推荐
本人总结的hbase入门+提高培训ppt,对于对初级人员进行hbase培训,讲解思路在我的一篇博文中:http://blog.csdn.net/kirayuan/article/details/6321966#reply
- **HDFS+MapReduce+Hive十分钟快速入门.doc**:这篇文档可能提供了一个快速了解Hadoop生态系统的概览,包括HDFS的基本操作、MapReduce的工作原理以及Hive的简单查询示例。 - **hive函数大全.doc**:这可能是一份...
MongoDB入门篇1主要介绍了数据的基本概念,数据库管理系统(DBMS)的定义,常见的数据库管理系统,以及NoSQL数据库的相关知识。 1. 数据:数据是未经处理的原始记录,描述事物存在的符号,通常需要通过组织和分类...
本篇文章将围绕"基于Hadoop、HBase的WordCount代码"进行详细讲解,旨在帮助读者理解如何在Hadoop上实现基础的数据统计,并利用HBase存储和查询结果。 首先,让我们来了解一下Hadoop的WordCount程序。WordCount是...
可见,无论使用多少堆外内存,对JVM内存的使用终究是绕不过去,既然绕不过去...本文就将会介绍HBase应用场景下CMS GC策略的调优技巧,后续还会针对另一业界开始使用的GC策略-G1GC策略在HBase应用场景下进行调优介绍。
kafka 详解和实战案例09.S图表框架HighCharts介绍10.HBase快速入门11.基于HBase的Dao基类和实现类开发一12.基于HBase的Dao基类和实现类开发二13.项目1-地区销售额-需求分析和架构设计14.项目1-地区销售额-Spout融合...
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、...
在2005年秋天,Hadoop作为Lucene子项目Nutch的一部分正式引入Apache基金会,并在2006年3月发布了MapReduce和Nutch分布式文件系统(NDFS)。 Hadoop的诞生标志着大数据处理技术的一个重要转折点。它解决了传统技术在...
本篇文章将详细介绍MySQL的基础知识点,内容包含其在淘宝的应用概况、常见操作、数据类型、SQL优化方法以及InnoDB索引等方面。了解这些知识对初学者来说,有助于快速掌握MySQL的基本使用与优化技巧。 一、淘宝MySQL...
2. 从外部存储系统中创建:支持HDFS、Cassandra、HBase等,直接读取数据创建RDD。 3. 从其他RDD转换:通过一系列的转换操作算子,如map、filter等,生成新的RDD。 Spark的编程模型基于Driver和Worker。Driver程序...
### Hadoop快速入门知识点梳理 #### 一、Hadoop概览与背景介绍 **1.1 何为Hadoop** - **定义**:Hadoop是一个由Apache基金会支持的开源软件框架,旨在通过集群中的普通商用硬件来处理大量数据集。 - **核心功能**...
Hadoop的发展历史与Google的三篇论文(GFS、MapReduce、BigTable)密切相关,这三篇论文奠定了大数据处理的理论基础。Hadoop的创始人Doug Cutting在借鉴这些论文的基础上,开发出了Hadoop。其发展过程中的一个重要...
3. Spark Streaming:Spark Streaming用于实时数据流处理,提供与RDD API相似的API,使得实时数据处理变得简单。 4. Spark MLlib:这是Spark的机器学习库,包含多种分类、回归、聚类和协同过滤算法,以及模型评估和...
"Hadoop编程入门与实践指南" 本文档旨在为读者提供一个全面的Hadoop编程指南,涵盖了从基础知识到高级实践的所有方面。本篇文章将带领读者深入了解Hadoop的世界,并掌握实践Hadoop编程所需的知识和技能。 一、基础...
本文将带你快速入门MySQL,了解其基本概念、数据库分类以及如何在Linux系统上进行安装和操作。 首先,让我们了解一下数据库的基本分类。数据库主要分为列式数据库和行式数据库。列式数据库如HBase或Parquet,它的...