Hbase:基于Hadoop和Zookeeper的一个非关系型结构化数据的存储框架。
Hbase特点:
可扩展:增加服务器数据即可(增加RegionServer)
存储数据的稀疏性:列值可有可无
海量:可存大量数据
高可靠:基于Hadoop(有副本机制)
Hbase主要组成:Hmaster和RegionSever
Hmaster作用:
为RS分配Region,维护整个集群的负载均衡
监控Region,当其失效时,将失效的Region分配给其他的RS
RegionServer作用:
响应客户端的读写请求(与Hmaster无关,杀掉hmaster进程,用户照样进京读写,不过这样会使集群处于不健康的状态)
负责文件的合并于拆分
将文件存储到HDFS(Flush条件:1.整个RS内存到达总内存的40% 2.到达一定的时间)
Cell单元格:
1.当出现多个cf时,不同的cf下不同的cn然后不同的版本以及value共同组成一个cell单元格
2.当只有一个cf时,cn下的不同的版本对应一个cell
namespace命名空间:
存储表的头(一个命名空间下包含多个表),一般用于不同的业务线
Hbase读数据原理:
首先,客户端向Zookeeper发起查询某表请求,然后Zookeeper响应请求,并返回给客户端具体的表存储在哪个RS上,然后客户端再去到具体的RS上进行数据读操作。(读的方式是先内存后磁盘(有缓冲区(经常读取的数据)))。
Hbase写数据原理:
首先客户端向Zookeeper发起表的写数据请求,然后Zookeeper会响应你这张表在具体的哪个RS上,然后用户在进行写操作,写的顺序是:Hlog会记录你写的数据流(以便数据丢失),然后再写到内存中,在写入磁盘存到HDFS上。
Hbase与Hive集成:
创建一个关联表(Hive和Hbase都有),例如Hbase中有emp这张表(有数据),然后Hive中也有数据,然后利用hive进行分析
Hbase优化:
预分区:就是提前设置好分区个数,再将数据表存入到其中。分区键的设置与RowKey的设置密切相关。分区原则遵循:数据散列性 Rowkey设置原则:值唯一性,长度唯一性,
内存优化:
表的数据可以存到内存中,但是内存不宜过大和过小。过大会拖垮服务器,过小影响操作效率