HBase相关问题
HBase和Hive的异同之处?
共同点:HBase与Hive都是架构在Hadoop之上,底层存储都是使用HDFS
区别:
1). Hive是建立在Hadoop之上为了减少MapReduce jobs编写工作的批处理系统。HBase是为了支持弥补Hadoop对实时操作的缺陷的项目。
2). hive是高延迟、结构化和面向分析的,hbase是低延迟、非结构化和面向编程
2). Hive的表是逻辑表,它本身不存储和计算数据,它完全依赖于HDFS和MapReduce,高延迟的特点。
3). HBase的表是物理表,hdfs作为底层存储,而HBase负责组织文件。 提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
HBase和RDBMS的异同之处?
1.数据类型:HBase只有简单的字符串类型(压缩率高),所有的类型都是交由用户自己处理。而RDBMS有丰富的类型和存储方式。
2.数据操作:HBase只有很简单的插入、查询、删除、清空等操作,表和表之间是分离的,没有复杂的表和表之间的关系。而RDBMS通常有各式各样的函数和连接操作。
3.存储模式:HBase是基于列存储的,每个列族都由几个文件保存,不同列族的文件是分离的。而RDBMS是基于表格结构和行模式保存的 。
4.数据维护:HBase的更新操作不应该叫更新,它实际上是追加新的数据。而RDBMS是替换修改。
5.可伸缩性:Hbase这类分布式数据库就是为了这个目的而开发出来的,所以它能够轻松增加或减少硬件的数量,并且对错误的兼容性比较高。而RDBMS通常需要增加中间层才能实现类似的功能。
Hbase的优缺点
1. HBase列可以动态增加,并且列为空就不存储数据,节省存储空间。
2. Hbase自动切分数据,使得数据存储自动具有水平Scalability。
3. Hbase可以提供基于RowKey的高并发读写操作。
缺点: 不能支持条件查询,只支持按照Row key来查询.
什么时候选择HBase
1).超大数据量上高并发操作,高速插入,大量读取
2).记录非常稀疏
3).多版本数据
4).对于数据结构中字段不够确定或杂乱无章,很难按一个概念去进行抽取的数据适合用HBase。
HBase容错性
Master容错:Zookeeper重新选择一个新的Master
1).无Master过程中,数据读取仍照常进行;
2).无master过程中,region切分、负载均衡等无法进行;
RegionServer容错:定时向Zookeeper汇报心跳,如果一旦时间内未出现心跳
1).Master将该RegionServer上的Region重新分配到其他RegionServer上;
2).失效服务器上“预写”HLog日志由主服务器进行分割并派送给新的RegionServer
Zookeeper容错:Zookeeper是一个可靠地服务
1).一般配置3或5个Zookeeper实例。
HBase的Delete机理
Delete命令并不立即删除内容。实际上,它只是给记录打上删除的标记“墓碑”(tombstone)。墓碑记录不能在Get和Scan命令中返回结果。因为HFile是只读文件,这些墓碑记录直到执行一次大合并(major compaction)才会被删除。 详见HBase相关概念