实现原理
HBase由连接客户端的库函数、一个master服务器和许多region服务器组成。
master维护数据存放信息,分配管理region和负载均衡;region负责实际的读写。
其中的一个表可以分为多个region。
为了定位region需要三层查询,zookeeper文件 -》-ROOT- -》 .META. -》 region。
zookeeper文件,记录了-root-的位置信息
root 只能又一个region存储,并且位置固定。
meta 可以又多个region存储,记录的是region服务器和region的对应关系,存储在内存中。
运行机制
Store是region运作的核心
参与要素:Store、MemStore、Hlog、StoreFile
写数据过程:先写入到MemStore和Hlog中,Hlog写完之后会通知客户端
读数据过程:先访问MemStore没有再从StoreFile中找。
缓存刷新过程:定期将MemStore数据写入StoreFile,记录Hlog,每次刷写都产生新的StoreFile
StoreFile维护过程:storefile数量太多会影响性能,可以将多个合并,也可以将一个大的进行region拆分。
性能优化
行键:由于数据是按照行键排序的,可以将常用的数据放得更近一些。
利用内存:创建表的时候可以将表放到region服务器的缓存中,提高缓存命中率
按版本保留,设置保留数据最近的几个版本,太老的数据可以清理掉
按时间保留,设置数据的最长存活时间,超出清理。
遇到问题
执行jps时缺少Hmaster和HRegionServer进程
上面配置中Hbase的Hbase-site.xml配置的hdfs路径配置有问题 修改后即可