HBase 高频面试题及详细答案(实战接地气版)_第1页
HBase 高频面试题及详细答案(实战接地气版)_第2页
HBase 高频面试题及详细答案(实战接地气版)_第3页
HBase 高频面试题及详细答案(实战接地气版)_第4页
HBase 高频面试题及详细答案(实战接地气版)_第5页
已阅读5页,还剩3页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

HBase高频面试题及详细答案(实战接地气版)一、基础概念类(初级必问)1、简单说下HBase是什么,核心特点有哪些?答案:HBase是基于Hadoop的分布式、列式、非关系型数据库,主打海量数据的实时读写,是典型的NoSQL数据库。核心特点:列式存储:按列簇存储,不是按行,查询指定列效率极高,空数据不占存储空间稀疏性:同一行不同列数据可以完全不一样,空字段不存储,节省磁盘分布式可扩展:基于Region分片,横向扩容简单,支撑PB级海量数据高吞吐、实时读写:支持随机实时读写,区别于Hive离线分析数据多版本:同一个单元格会保留多个时间版本的数据,可回溯历史数据强一致性:单行操作原子性,读写锁保证单行数据一致性2、HBase和MySQL、Hive的核心区别?答案:HBasevsMySQLMySQL:关系型、行存储、支持事务、复杂SQL,适合中小数据、业务联机交易HBase:非关系型、列存储、无复杂事务、无SQL,适合海量大数据、实时读写HBasevsHiveHive:数据仓库,离线批量分析,基于MR/Spark计算,延迟高,不支持实时写入查询HBase:实时读写数据库,低延迟,适合单点查询、实时更新,不擅长大规模聚合统计3、HBase的数据模型是什么?核心要素有哪些?答案:HBase没有表结构约束,是宽松的列式数据模型,核心五要素:RowKey(行键):唯一标识一行,字典序排序,查询、分片都依赖RowKeyColumnFamily(列簇):列的分组,表创建时必须指定,数量固定、不宜过多Column(列):列簇下的具体列,无需提前定义,可动态新增Timestamp(时间戳):数据版本标识,写入自动生成,可自定义Value(单元格值):具体存储的数据,二进制字节存储最小存储单元是单元格(RowKey+列簇+列+时间戳)。4、列簇和列的区别?为什么列簇不能建太多?答案:列簇是列的集合,是HBase的核心管理单元,列是列簇下的具体字段。列簇不能过多的原因:每个列簇独立生成Store、StoreFile、MemStore,列簇越多,内存、文件句柄开销越大Flush、Compaction都是按列簇触发,列簇多会导致频繁刷盘、合并,集群压力暴涨官方建议:一张表列簇数量1~3个最佳,不超过5个二、架构原理类(面试核心)1、简述HBase整体架构及各组件作用答案:HBase是主从架构,核心组件:Zookeeper、HMaster、HRegionServer、HDFS1)Zookeeper存放集群元数据、节点状态监控HMaster、HRegionServer存活,故障自动感知存储Root表、Meta表地址,客户端寻址依赖ZK实现Master主备选举2)HMaster(主节点)管理表操作:建表、删表、改表、分区迁移负责Region分配、负载均衡故障节点的Region迁移恢复不处理读写请求,压力小,支持高可用3)HRegionServer(从节点)实际负责数据的读写、落地、缓存管理多个Region,每个Region对应表的一段RowKey区间处理Flush、Compaction、Split所有数据落地操作4)HDFS持久化存储StoreFile(HBase数据文件)、日志文件保证数据高可靠、多副本存储2、Region、Store、MemStore、StoreFile关系?答案:Region:HBase表的分片单元,一张表被拆分成多个Region,每个Region负责一段RowKey范围,是负载均衡和数据迁移的最小单元Store:一个Region中,一个列簇对应一个Store,隔离不同列簇数据MemStore:Store对应的内存缓冲区,写入数据先落内存,有序存储StoreFile:MemStore刷盘后生成的磁盘文件,有序、只读,是HBase的持久化数据文件层级关系:表→Region→Store→MemStore+StoreFile3、WAL日志的作用是什么?能不能关闭?答案:WAL(预写日志)是HBase的恢复日志,数据写入先写WAL,再写MemStore。核心作用:保证数据不丢失。如果RegionServer宕机,内存中未刷盘的数据会丢失,重启后可通过WAL回放日志,恢复内存数据,保证数据一致性。能不能关闭?可以手动关闭,但生产绝对不建议关。只有批量导入、离线初始化数据场景可以临时关闭提升速度,一旦宕机数据直接丢失。三、读写流程核心面试题(重中之重)1、详细说下HBase写入流程答案:1、客户端先请求ZK,获取Meta表位置,根据RowKey找到目标Region所在的RegionServer2、客户端直接和对应RegionServer建立连接,发起写入请求3、RegionServer接收请求,先写入WAL日志,防止宕机丢数4、写入成功后,数据写入对应Store的MemStore内存5、返回客户端写入成功6、后续满足条件(内存阈值、时间阈值),MemStore触发Flush,落地生成StoreFile磁盘文件核心:写内存、落日志、异步刷盘,所以HBase写入性能极高。2、详细说下HBase读取流程答案:1、客户端寻址:通过ZK查Meta表,定位RowKey对应的RegionServer2、先读MemStore内存数据(最新数据优先在内存)3、再读磁盘上的StoreFile文件,从新到老依次读取4、合并多版本数据,根据版本数、时间戳过滤,返回最终结果5、支持BlockCache缓存热点数据,热点查询直接读缓存,速度极快3、HBase为什么写比读快?答案:写入是纯追加、无随机IO:WAL日志、MemStore都是顺序写入,没有磁盘随机写开销写入无需查询、无需合并,只写内存+日志,刷盘异步执行读取需要内存+多磁盘文件合并查找,还要版本过滤、文件检索,IO开销更高写入无锁竞争(单行原子),读需要遍历多个文件、缓存校验四、核心机制:Flush、Split、Compaction1、Flush触发条件和作用答案:作用:将MemStore内存数据落地为磁盘StoreFile,释放内存。触发条件:MemStore达到阈值大小(默认128M)RegionServer全局内存达到阈值手动触发flush集群定时自动刷新(防止数据长期滞留内存)Flush是小批量落地,不会合并文件,只会新增StoreFile。2、Split分裂机制是什么?答案:当单个Region数据量过大(默认10G),会触发Split分裂。过程:1、Region达到大小阈值,找到中间RowKey作为分割点2、分裂为两个新的子Region3、父Region下线,子Region上线接管数据4、Master重新做负载均衡,分配到不同节点意义:实现表的自动分片、自动扩容,避免单Region数据过大影响读写性能。3、Compaction合并机制,Minor和Major区别答案:随着多次Flush,磁盘会产生大量小StoreFile,查询时需要遍历多个文件,性能下降,Compaction就是合并小文件、清理冗余数据的机制。1)MinorCompaction(小合并)合并少量相邻小文件不删除过期版本、不删除已删除数据开销小、频繁执行2)MajorCompaction(大合并)合并当前所有StoreFile为一个大文件清理过期版本数据、删除标记的数据、冗余数据IO开销极大,会造成集群抖动,生产一般手动控制时间、避开业务高峰五、RowKey设计(面试高频实战题)1、RowKey设计原则是什么?答案:长度适中:不宜过长(过长占用内存、影响索引),不宜过短(冲突概率高),一般16~64字节避免热点:杜绝时间戳自增、纯有序数字,导致所有请求打在同一个Region查询优先:RowKey前缀要贴合高频查询条件,保证范围查询、精准查询高效唯一性:保证每行数据唯一,避免数据覆盖2、怎么解决RowKey热点问题?常用方案答案:热点问题本质:大量连续RowKey落在同一个Region,读写压力集中单节点。常用解决方案:加盐(Salt):RowKey前缀加随机数,打散数据分布,简单高效哈希打散:对关键字段取hash,作为前缀,均匀分布Region反转字符串:针对尾部变化、头部固定的RowKey,反转后打散六、调优与故障问题(中高级面试)1、HBase常见性能瓶颈有哪些?答案:RowKey热点,单Region压力过大小文件过多,查询遍历文件太多,读延迟高MajorCompaction高峰期IO打满,业务卡顿MemStore阈值不合理,频繁刷盘或长期不刷盘BlockCache缓存命中率低,热点数据未缓存列簇过多,资源开销大2、RegionServer宕机后,集群怎么恢复?答案:1、ZK实时检测节点心跳,发现RegionServer失联,立刻标记节点下线2、HMaster感知下线,立即将该节点上所有Region标记为失效3、Master将失效Region重新分配到其他健康的RegionServer4、新节点加载对应HDFS数据文件,回放WAL未完成日志,恢复数据5、恢复完成后,业务读写正常切换,全程自动完成,无需人工干预3、HBase数据删除后,为什么磁盘空间不立即释放?答案:HBase的删除操作不会直接删除磁盘数据,只会给数据打删除标记(墓碑标记)。原因:StoreFile是只读文件,不支持修改、删除只有触发MajorCompaction时,才会清理带删除标记、过期版本的数据,真正释放磁盘空间生产经常出现:删除大量数据后磁盘不释放,必须手动执行大合并才能回收空间。4、如何优化HBase查询速度?答案:优化RowKey设计,贴合查询条件,避免全表扫描合理设置列簇,查询只读取需要的列簇、列,减少数据读取量开启BlockCache,提升热点数据缓存命中率控制版本数,避免多版本数据过多拖慢查询定时合并小文件,减少查询遍历的文件数量批量查询替代单条循环查询,减少网络IO开销七、高频辨析题(容易踩坑)1、HBase支持事务吗?答案:只支持单行事务,单行的多列、多操作保证原子性、一致性。不支持跨行、跨表事务,不支持MySQL那种复杂事务、回滚、隔离级别。2、HBase能不能做全表扫描?有什么问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论