面试准备-hbase篇

hbase热点问题

加上随机前缀之后怎么查询?

hbase功能组件

一个Master主服务器
许多个Region服务器

主服务器Master负责管理和维护HBase表的分区信息,维护Region服
务器列表,分配Region,负载均衡

Region服务器负责存储和维护分配给自己的Region,处理来自客户
端的读写请求

客户端并不是直接从Master主服务器上读取数据,而是在获得Region
的存储位置信息后,直接从Region服务器上读取数据

客户端并不依赖Master,而是通过Zookeeper来获得Region位置信息
,大多数客户端甚至从来不和Master通信,这种设计方式使得Master
负载很小

讲讲列式存储的 parquet文件底层格式

region多大会分区?

Hbase的设计有什么心得?

Hbase的操作是用的什么API还是什么工具?

Hbase的PUT的一个过程(hbase写过程)

做过hbase的二级索引吗?

.问二次排序是什么。topn是什么,二次排序要继承什么接口?

计算的数据怎么来的。

.hbase存数据用什么rowkey?加时间戳的话,会不会出现时间戳重复的问题,怎么做的呢?

hbase 的特点是什么

(1) Hbase一个分布式的基于列式存储的数据库,基于Hadoop的hdfs存储,zookeeper进行管理。
(2) Hbase适合存储半结构化或非结构化数据,对于数据结构字段不够确定或者杂乱无章很难按一个概念去抽取的数据。
(3) Hbase为null的记录不会被存储.
(4)基于的表包含rowkey,时间戳,和列族。新写入数据时,时间戳更新,同时可以查询到以前的版本.
(5) hbase是主从架构。hmaster作为主节点,hregionserver作为从节点。
大数据Hbase 面试题

Hbase和hive 有什么区别

从以下几个方面来说
|hbase|hive
———|———————————————|————————–
类型|列式数据库|数据仓库
内部机制|数据库引擎|MapReduce
增删改查|都支持|只支持导入和查询
Schema|只需要预先定义列族,不需要具体到列列可以动态修改|需要预先定义表格
应用场景|实时|离线处理
特点|以K-V形式存储(NoSql)|类SQL

Hive和Hbase是两种基于Hadoop的不同技术–Hive是一种类SQL 的引擎,并且运行MapReduce 任务,Hbase 是一种在Hadoop之上的NoSQL的Key/vale数据库。当然,这两种工具是可以同时使用的。就像用Google 来搜索,用FaceBook 进行社交一样,Hive 可以用来进行统计查询,HBase 可以用来进行实时查询,数据也可以从Hive 写到Hbase,设置再从Hbase 写回Hive。

HIVE 直接可以通过sql来实现统计,hbase不行
Hbase非常适合用来进行大数据的实时查询
HBase 是一种Key/Value 系统,它运行在HDFS 之上。和Hive 不一样,Hbase 的能够在
它的数据库上实时运行,而不是运行MapReduce 任务

描述Hbase的rowKey的设计原则.

Rowkey唯一原则,必须在设计上保证其唯一性

  1. 散列性:散列性能够保证相同相似的rowkey聚合,相异的rowkey分散,有利于查询
  2. 简短性:rowkey作为key的一部分存储在HFile中,如果为了可读性将rowKey设计得过长,那么将会增加存储压力
  3. 唯一性:rowKey必须具备明显的区别性
  4. 业务性:举些例子

    假如我的查询条件比较多,而且不是针对列的条件,那么rowKey的设计就应该支持多条件查询

    如果我的查询要求是最近插入的数据优先,那么rowKey则可以采用叫上Long.Max-时间戳的方式,这样rowKey就是递减排列

描述Hbase中scan和get的功能以及实现的异同.

按指定RowKey 获取唯一一条记录,get方法

按指定的条件获取一批记录,scan方法

scan 可以通过setCaching 与setBatch 方法提高速度

scan 可以通过setStartRow 与setEndRow 来限定范围

scan 可以通过setFilter 方法添加过滤器,这也是分页、多条件查询的基础

请详细描述Hbase中一个Cell 的结构

HBase 中通过row 和columns 确定的为一个存贮单元称为cell。
Cell:由{row key, column(= +

请描述如何解决Hbase中region太小和region太大带来的冲突.

Region过大会发生多次compaction,将数据读一遍并重写一遍到hdfs 上,占用io,region过小会造成多次split,region 会下线,影响访问服务,调整hbase.hregion.max.filesize 为256m.

start-hbase.sh 为起点,Hbase 启动的流程是什么?

简述 HBASE中compact用途是什么,什么时候触发,分为哪两种,有什么区别,有哪些相关配置参数?

在hbase中每当有memstore数据flush到磁盘之后,就形成一个storefile,当storeFile的数量达到一定程度后,就需要将 storefile 文件来进行 compaction 操作。
Compact 的作用:
1>.合并文件
2>.清除过期,多余版本的数据
3>.提高读写数据的效率
HBase 中实现了两种 compaction 的方式:minor and major. 这两种 compaction 方式的区别是:
1、Minor 操作只用来做部分文件的合并操作以及包括 minVersion=0 并且设置 ttl 的过
期版本清理,不做任何删除数据、多版本数据的清理工作。
2、Major 操作是对 Region 下的HStore下的所有StoreFile执行合并操作,最终的结果是整理合并出一个文件

大量数据查询时为什么hbase比oracle ,mysql等rdbms 快的多(读写两方面)

rowkey 索引即数据(分布式索引是成功的关键)
找到要读取数据的region所在的RegionServer,然后按照以下顺序进行读取:先去BlockCache读取,若BlockCache没有,则到Memstore读取,若MemStore中没有,则到HFile中读取。
Hbase的表会被划分为1….n个Region,被托管在RegionServer中。Region二个重要的属性:Startkey与EndKey表示这个Region维护的rowkey的范围,当我们要读写数据时,如果rowkey落在某个start-end key范围内,那么就会定位到目标region并且读写到相关的数据。

mysql 即使是索引,数据量大之后,对索引仍是全部扫描(索引一般是B+树的数据结构)

找到要写入数据的region所在的RegionServer,然后将数据先写到WAL中,然后再将数据写到MemStore等待刷新,回复客户端写入完成。

hbase面试题

【面试】HBase面试题

hbase 里的几个最小单元

Region是Hbase中分布式存储和负载均衡的最小单元,不同Region分布到不同RegionServer上。

Region虽然是分布式存储的最小单元,但并不是存储的最小单元。Region由一个或者多个Store组成,每个store保存一个columns family;每个Strore又由一个memStore和0至多个StoreFile组成,StoreFile包含HFile;memStore存储在内存中,StoreFile存储在HDFS上。

什么是数据热点和数据倾斜问题

解决方案: 散列化 预分区

hbase物理存储

而每个columnFamily实际上在底层是一个文件,那么文件越小,查询越快,所以讲经
常一起查询的列设计到一个列簇,但是列簇不宜过多。