0 简介
Apache HBase is the Hadoop database, a distributed, scalable, big data store. HBase is a type of “NoSQL” database.
HBase是一种构建在HDFS之上的分布式、面向列的存储系统。
Hadoop已经有了HDFS和MapReduce,为什么需要HBase
1 Hadoop可以很好地解决大规模数据的离线批量处理问题,但是,受限于HadoopMapReduce编程框架的高延迟数据处理机制,使得Hadoop无法满足大规模数据实时处理应用的需求。
2 传统的通用关系型数据库无法应对在数据规模剧增时导致的系统扩展性和性能问题(分库分表也不能很好解决)。传统关系数据库在数据结构变化时一般需要停机维护;空列浪费存储空间。
HBase与传统的关系数据库的区别
1、数据类型:关系数据库采用关系模型,具有丰富的数据类型和存储方式,HBase则采用了更加简单的数据模型,它把数据存储为未经解释的字符串。
2、数据操作:关系数据库中包含了丰富的操作,其中会涉及复杂的多表连接。HBase操作则不存在复杂的表与表之间的关系,只有简单的插入、查询、删除、清空等,因为HBase在设计上就避免了复杂的表和表之间的关系。
3、存储模式:关系数据库是基于行模式存储的。HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。
4、数据索引:关系数据库通常可以针对不同列构建复杂的多个索引,以提高数据访问性能。HBase只有一个索引——行键,通过巧妙的设计,HBase中的所有访问方法,或者通过行键访问,或者通过行键扫描,从而使得整个系统不会慢下来。
5、数据维护:在关系数据库中,更新操作会用最新的当前值去替换记录中原来的旧值,旧值被覆盖后就不会存在。而在HBase中执行更新操作时,并不会删除数据旧的版本,而是生成一个新的版本,旧有的版本仍然保留。
6、可伸缩性:关系数据库很难实现横向扩展,纵向扩展的空间也比较有限。相反,HBase和BigTable这些分布式数据库就是为了实现灵活的水平扩展而开发的,能够轻易地通过在集群中增加或者减少硬件数量来实现性能的伸缩。
1 配置
https://www.cnblogs.com/frankdeng/p/9310191.html
启动成功jps后可以看到hmaster ,hregionservice
2 hbase shell
不支持sql,对表操作需要使用hbase shell命令或者hbase api
3 Phoenix
在hbase上构建SQL层,使得hbase 能够使用标准SQL管理数据,Phoenix中的sql语句还是有些不同的
4 问题
1 org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet
https://cloud.tencent.com/developer/article/1812290
2 stop-hbase.sh关闭不了,一直处于等待状态
https://blog.csdn.net/weixin_45462732/article/details/106909501
3 hregionservice启动就挂了
看日志
参考
https://www.cnblogs.com/wendyw/p/12691971.html#_label3
https://juejin.cn/post/6844903777347043336
https://www.jianshu.com/p/53864dc3f7b4
https://www.cnblogs.com/frankdeng/p/9310191.html
https://blog.csdn.net/weixin_45462732/article/details/106909501
中文文档 http://hbase.org.cn/docs/166.html#regionserver.arch