Hbase
HBASE
hbase是一个分布式的基于列式存储Nosql数据库,基于Hadoop的hdfs存储,zookeeper进行管理;适合存储半结构化或者非结构话数据,
1.hbase的原理?
hbase主要是通过LSM-tree算法,是将一个大树拆封为多个小树,在内存中将一个个小树进行合并,当小树进行合并,当到达一定数量,就会刷新到磁盘中,磁盘中数据合并到一定程度就会变成Hfile。
2.hbase的写过程?
Hbase写过程重要事通过Zoopkeer找到对应的regoin区域,通过内存将数据存储进行合并,在内存中是存储在Store文件中的,当内存中store文件达到一定大小,就会将其flush到磁盘中,生成一个小的HFile文件,随着文件越来越多就进行合并成一个大的HFile文件。
3.hbase的读过程?
Hbase中要通过zooKeeper知道regoin存储区域,然后通过客户端请求的rowkey,进行查询,如果在缓存中查到直接返回数据,如果没有则在regoin的FIile文件寻找到,如果结果在多个文件中存在,则需要将结果集合进行返回。
4.hbase的优化?
1.生成合理的rowkey。
2.建立预分区。
2.在配置文件中进行HDFS系统参数配置,入并发线程数量,rpc的连接数量和时间长度。
5.hbase的rowkey的生成原则?
1.唯一性:必须rowkey必须是唯一,不然数据会覆盖。
2.长度要有限制,最大长度为64kb,不易超过16字节。
2散列原则:不然会产生热点问题。
5.1 热点问题
是在同一时间端内有大量数据,存储在同一个region中,导致服务宕机。
5.2 如何解决热点问题?
1.加盐:将生成随机树放在高位。
2.反转:反转固定长度的数字格式的数据。
3哈希:将哈希放到高位。
6.hbase的高可用?
1.要保证数据不能丢失,在数据存储在磁盘中Hfile的过程,也将数据存储早Hlog中一份,保证数据可以恢复。
2.服务不能中断,通过zoopkeer进行监控个个每个服务,当region server有问题,首先region server 会停止对外访问,zookpeet 会协调Hmaser和通信,HMaster会将region server 对应映射的数据转移其他服务上进行对外提供。
7.hbase的合并?
compact: minor和major
minor:只是用来做部分的文件的合并以及包括minVersion=0 并且设置ttl的过去版本清理,不做任何删除数据,多版本数据的清理工作。
major:是对region下的Hstore的所有StroeFile执行合并操作,最总整合合成一个文件。
8.region设置大小为多少?
256M,因为设置小导致写入的压力,region反复进行刷新数据,设置大导致长期不刷新,服务有问题数据丢失,还会导致数据分布不均衡,导致某个region数据特别多,某些region特别少。
9.如何提高Hbase的读写性能?
1.修改hbase-env.sh中的export HBASE_HEAPSIZE=3000
2.增大RP数量:hbase-site.xml 中的hbase,redionServer.handler.count属性 改大数量。
3.将硬件允许的情况下给予足够多的内存给他。