大数据Hbase面试宝典。
一、hbase的特点是什么?
1Hbase一个分布式的基于列式存储的数据库,基于Hadoop的 hdfs 存储,zookeeper 进行管理。
2.Hbase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。
3.Hbase 为 null 的记录不会被存储。
4.基于的表包含 rowkey,时间戳,和列族。新写入数据时,时间戳更新, 同时可以查询到以前的版本。
5.hbase 是主从架构。hmaster 作为主节点,hregionserver 作为从节点。
二、hbase如何导入数据?
使用MReduce Job方式,根据HbaseAPI 编写java脚本,将文本文件用文件流的方式截取,然后存储到多个字符串数组中,在put方法下,通过对表中的列族进行for循环遍历列名,用if判断列名后进行for循环调用put.add的方法对列族下每一个列进行设值,每个列族下有几个了就赋值几次!没有表先对先创建表。
三、hbase 的存储结构?
Hbase 中的每张表都通过行键(rowkey)按照一定的范围被分割成多个子表(HRegion),默认一个HRegion超过256M就要被分割成两个,由HRegionServer管理,管理哪些HRegion由Hmaster分配。HRegion存取一个子表时,会创建一个HRegion对象,然后对表的每个列族(Column Family)创建一个store实例, 每个store都会有0个或多个StoreFile与之对应,每个StoreFile都会对应一个HFile,HFile就是实际的存储文件,因此,一个HRegion还拥有一个MemStore实例。
四、Hbase 和 hive 有什么区别?hive 与 hbase 的底层存储是什么?hive 是产生的原因是什么?habase 是为了弥补 hadoop 的什么缺陷?
答:共同点:
1.hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储区别:
2.Hive是建立在Hadoop之上为了减少MapReducejobs编写工作的批处理系统,HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。
3.想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop 。
4.Hive query就是MapReduce jobs可以从5分钟到数小时不止,HBase是非常高效的,肯定比Hive高效的多。
5.Hive本身不存储和计算数据,它完全依赖于HDFS和 MapReduce,Hive中的表纯逻辑。
6.hive借用hadoop的MapReduce来完成一些hive中的命令的执行
7.hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
8.hbase是列存储。
9.hdfs 作为底层存储,hdfs 是存放文件的系统,而 Hbase 负责组织文件。
10.hive 需要用到 hdfs 存储文件,需要用到 MapReduce 计算框架。解释下 hbase 实时查询的原理
答:实时查询,可以认为是从内存中查询,一般响应时间在 1 秒内。HBase 的机制是数据先写入到内存中,当数据量达到一定的量(如 128M),再写入磁盘中, 在内存中,是不进行数据的更新或合并操作的,只增加数据,这使得用户的写操作只要进入内存中就可以立即返回,保证了 HBase I/O 的高性能。
四、列簇怎么创建比较好?
rowKey 最好要创建有规则的 rowKey,即最好是有序的。HBase 中一张表最好只创建一到两个列族比较好,因为 HBase 不能很好的处理多个列族。