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