Hbase面试题

Hbase面试题

  1. Hbase架构 在这里插入图片描述

  2. Hbase的NULL占用空间吗? B (Hbase是基于列的 , 所以是不占用空间的)

    A . 占用
    B . 不占

  3. 下面对 HBase 的描述哪些是正确的?( )

    在这里插入图片描述

  4. HBase 依赖()提供消息通信机制?
    在这里插入图片描述

  5. Hbase 的持久化数据是存放在 HDFS 上的,并由 zookeeper 协助进行集群管理,这一说法是()在这里插入图片描述

  6. HBase 中 的 一 个 表 是 被 划 分 为 很 多 regionserver 的 , 这 些regionserver 分布式地存放在服务器上,这一说法是()在这里插入图片描述

  7. HBase 可以通过 compact 命令操作来做版本间的文件合并,这一说法是的()
    在这里插入图片描述

  8. HBase 表中的主键是哪个?()
    在这里插入图片描述

  9. Hbase 为支持多种语言访问需要启动哪个进程( )

    在这里插入图片描述

  10. HBase 与 Redis 比较?

    HBase 和 Redis 都是基于 Key、Value 的数据库。
    区别在于 HBase 是基于文件系统的,Redis 是基于内存的。
    主要区别在于性能和数据量的支持上。如果超过 TB,可以采用 HBase。低于 TB 的,可以采用 Redis。

  11. hbase内部机制是什么? 及各个组件的作用 ?

    Hbase是一个按列存储分布式实时读写数据库 , 主要用来存储非结构化数据或半结构化的松散数据
    物理存储: hbase的持久数据放在HDFS上
    存储管理: 一个表是划分为很多region的,这些region分布式地存放在很多regionserver上
    Region内部还可以划分为store,store内部有memstore和storefile
    版本管理: hbase中的数据更新本质上是不断追加新的版本,通过compact操作来做版本间的文件合并
    Zookeeper: 进行协调服务

    1.保证任何时候,集群中只有一个master
    2.存贮所有Region的寻址入口
    3.实时监控Region server的上线和下线信息。并实时通知Master
    4.存储HBase表相关元数据

    Client:

    1.提供hbase的客户端请求并且维护客户端缓存

    Master:

    1.分配region给Region server
    2.发现失效的Region server并重新分配其上的region
    3.管理用户对table的增删改操作

    RegionServer:

    1.Region server维护region,处理对这些region的IO请求
    2.Region server负责切分在运行过程中变得过大的region

    Region:

    1.Region相当于表的概念 , 当创建一张表时,会对应一个region , region变大会进行裂变 , 就分布在不同的region server上
    每个region存储一段连续的数据

    Store:
    相当于列族的概念

    memstore:

    1.写缓存 , 写数据的时候会先写入menstore中 (先写Hlog)
    2.分担了一部分读压力 , 客户端检索数据现在men store找, 找不到在到storefile找, 从而缓解一部分读缓存

    Storefile:

    实际存储数据的文件 , 保存在HDFS上

    Block cache:

    读缓存,每次查询到结果后会缓存在blockcahce中,方便下一次查询

  12. Hbase的rowKey怎么创建比较好?

    (1)rowKey最好要创建有规则的rowKey,即最好是有序的,经常需要批量读取的数据应该让他们的rowkey连续;
    (2)将经常需要作为条件查询的维度组织到rowkey中;
    (3)Rowkey尽量短,Rowkey设置唯一
    (4)rowkey尽可能散列,时间维度不要放首位,可以再rowkey前面加个随机数,首字段直接是时间信息,所有的数据都会集中在一个RegionServer上

  13. 列簇怎么创建比较好?

    (1)按照业务特点,把数据归类,不同类别的放在不同列族
    (2)一张表最好只创建1-2列族 , 因为hbase不能很好的处理多个列族

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

    (1)HBase 中通过rowkey , 列簇 和 时间戳 确定一个单元格 , cell中的数据是没有类型的,全部是字节码形式存储

  15. scan 和 get 的功能以及实现的异同 ?

    (1)get按指定RowKey 获取唯一一条记录
    (2)scan按指定的条件获取一批记录

  16. HBase宕机如何处理 ?

    宕机分为HMaster宕机和RegionServer宕机

    如果是RegionServer宕机,HMaster会将其所管理的region重新分布到其他活动的RegionServer上,由于数据和日志都持久在HDFS中,该操作不会导致数据丢失。所以数据的一致性和安全性是有保障的。

    如果是HMaster宕机,HMaster没有单点问题,HBase中可以 启动多个HMaster,通过Zookeeper保证总有一个Master运行。即ZooKeeper会保证总会有一个HMaster在对外提供服务。

  17. Hbase热点问题 ?

    原因 : 各个region之间的数据分布不均匀 , 连续的rowkey热点数据集中在region中
    第一种:hash+预分区
    提前设置多个region , 在rowkey前面加上个随机数 , 这样就可以将一段连续的热点数据分散到不同得 region中。 -->这样缺点 , 导致读的时候 , 效率会下降!
    第二种:rowkey的ID或则时间hash取模region数量加在rowkey的前缀 +预分区
    第三种:反转rowkey -->牺牲了rowkey的有序性

  18. 删除机制 ?

    HBase 的删除操作并不会立即将数据从磁盘上删除,这主要是因为 HBase 的数据通常被保存在 HDFS 之中,而 HDFS 只允许新增或者追加数据文件,所以删除操作HBase 新插入一条数据,但是key 类型Delete , 标记这条数据被删除 , 直到Major_compact操作时,数据才会被真正的从磁盘上删除
    更新 : 插入一条新的数据 ,rowkey不变, 时间戳是最新的 , hbase读取数据的时候, 会读取最新时间戳的数据

  19. Hbase的读写机制 ?

    读请求
    1.客户端向zookeeper发送读请求 (zk存着region的寻址入口) ,查询到哪台RegionServer上有hbase:meta表
    2.通过hbase:meta表找到对应的region后 , 再根据region找到对应的region server ( region server负责处理对region io请求 )
    3.从 block cache中查找数据 , 如果没有 ,menstore中查找 , 再没有 , 就从storeFile查找
    4.找到之后 , 先存到block cache中 , 再将结果返回客户端

    写请求
    1.客户端向zookeeper发送写请求 (zk存着region的寻址入口)
    2.找到对应的region后 , 再根据region找到对应的region server ( region server负责处理对region io请求 )
    3.region server将数据先写入 hlog 中。后写入 memstore 中。
    4.memstore数据到阈值 64M 的时候,溢写到磁盘 , 同时删除内存和 hlog中的历史数据。
    5.将硬盘数据通过 HFile 来序列化,再将数据传输到 HDFS 进行存储。
    6.溢写如果小文件过多,可以将小文件进行合并 , 合并方式有minor 和major两种
    7.Region过大的话 , 会进行裂变 , 将regoin切分后分布在不同的region server上

  20. minor compact 和major compact ?

    hbase为了防止小文件过多,以保证查询效率,会在必要的时候将这些小的store file合并成相对较大的store file,这个过程就称之为compact。在hbase中,主要存在两种类型的compact:minor compact和major compact。
    区别 : Minor compact只是进行部分文件合并操作,而Major compact 会对 Region 下的所有StoreFile执行合并操作 , 还会将标记成delete的数据从磁盘中删除。
    Minor compact占用少量资源 , Major compact 会占用大量资源

  21. Hase大的文件要split , 小的文件要compact ?

    文件越大 ,HFile中搜索的指定rowkey的数据花的时间也就越长 , 效率低
    文件太小 ,小文件打开多了更耗时

  22. storeFile裂变过程 ?

    向 zookeeper 发出请求,停止数据的写入请求
    将存储的数据进行等分,通过 zookeeper 通信获取对应的空闲存储目录,进行数据移动,以及更新对应的元数据
    移动以及更新结束,通知 zookeeper,恢复正常功能

  23. 请描述如何 Hbase 中设置的 region 太小和 region 太大带来的冲突 ?

    设置Region 太大会发生多次 compact,,将数据读一遍并重写一遍到 hdfs 上,占用 io,设置region
    太小会造成多次 split,region 会下线,影响访问服务,调整 hbase.hregion.max.filesize 为 256m
    解析 : 设置region过大 , region就需要多次conpact合并之后才能达到指定大小
    设置region过小 , region有很多的裂变 , split

  24. hbase 的调优?

    表优化
    1)预先分区
    2)Rowkey设计
    a.唯一性
    b.越短越好
    c.经常查询的字段可以加到rowkey中
    d.Rowkey尽可能散列
    e.Rowkey可以设置有序
    3)列族设计不要超过3个
    4)设置读缓存
    5)设置表的数据最大版本数 (设置数据的生命周期)
    写表优化 :
    多线程写 , 多个Htable写表 , 还可以设置写缓存大小
    读表优化 :
    多线程写 , 多个Htable读表 , 还可以设置读缓存大小

  25. 未完待续 . . .

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值