HBase入门篇3

前两篇文件分别说到了我在学习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的值,来设置文件的保存位置指定一个文件夹 ,例如:file:///you/hbase-data/path,你建立的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 目录下。

你可能感兴趣的:(Hbase,HBase入门篇3)