最近看了好多粉丝的面试题,于是总结出关于HBase相关的面试题,今天分享给大家,认真观看,记得收藏

一、讲一下 Hbase 架构

Hbase主要包含HMaster/HRegionServer/Zookeeper

  • HRegionServer 负责实际数据的读写. 当访问数据时, 客户端直接与RegionServer通信.

    HBase的表根据Row Key的区域分成多个Region, 一个Region包含这这个区域内所有数据. 而Region server负责管理多个Region, 负责在这个Region server上的所有region的读写操作.

  • HMaster 负责管理Region的位置, DDL(新增和删除表结构)

    • 协调RegionServer
    • 在集群处于数据恢复或者动态调整负载时,分配Region到某一个RegionServer中
    • 管控集群,监控所有Region Server的状态
    • 提供DDL相关的API, 新建(create),删除(delete)和更新(update)表结构.
  • Zookeeper 负责维护和记录整个Hbase集群的状态

    zookeeper探测和记录Hbase集群中服务器的状态信息.如果zookeeper发现服务器宕机,它会通知Hbase的master节点.

二、hbase 如何设计rowkey

  • RowKey长度原则

    Rowkey是一个二进制码流,Rowkey的长度被很多开发者建议说设计在10~100个字节,不过建议是越短越好,不要超过16个字节。

    原因如下:

    • 数据的持久化文件HFile中是按照KeyValue存储的,如果Rowkey过长比如100个字节,1000万列数据光Rowkey就要占用100*1000万=10亿个字节,将近1G数据,这会极大影响HFile的存储效率;

    • MemStore将缓存部分数据到内存,如果Rowkey字段过长内存的有效利用率会降低,系统将无法缓存更多的数据,这会降低检索效率。因此Rowkey的字节长度越短越好。

    • 目前操作系统是都是64位系统,内存8字节对齐。控制在16个字节,8字节的整数倍利用操作系统的最佳特性。

  • RowKey散列原则

    如果Rowkey是按时间戳的方式递增,不要将时间放在二进制码的前面,建议将Rowkey的高位作为散列字段,由程序循环生成,低位放时间字段,这样将提高数据均衡分布在每个Regionserver实现负载均衡的几率。如果没有散列字段,首字段直接是时间信息将产生所有新数据都在一个RegionServer上堆积的热点现象,这样在做数据检索的时候负载将会集中在个别RegionServer,降低查询效率。

  • RowKey唯一原则

    必须在设计上保证其唯一性。

三、讲一下hbase的存储结构,这样的存储结构有什么优缺点

Hbase的优点及应用场景:

  1. 半结构化或非结构化数据:
    对于数据结构字段不够确定或杂乱无章非常难按一个概念去进行抽取的数据适合用HBase,因为HBase支持动态添加列。
  2. 记录很稀疏:
    RDBMS的行有多少列是固定的。为null的列浪费了存储空间。HBase为null的Column不会被存储,这样既节省了空间又提高了读性能。
  3. 多版本号数据:
    依据Row key和Column key定位到的Value能够有随意数量的版本号值,因此对于须要存储变动历史记录的数据,用HBase是很方便的。比方某个用户的Address变更,用户的Address变更记录也许也是具有研究意义的。
  4. 仅要求最终一致性:
    对于数据存储事务的要求不像金融行业和财务系统这么高,只要保证最终一致性就行。(比如HBase+elasticsearch时,可能出现数据不一致)
  5. 高可用和海量数据以及很大的瞬间写入量:
    WAL解决高可用,支持PB级数据,put性能高
    适用于插入比查询操作更频繁的情况。比如,对于历史记录表和日志文件。(HBase的写操作更加高效)
  6. 业务场景简单:
    不需要太多的关系型数据库特性,列入交叉列,交叉表,事务,连接等。

Hbase的缺点:

  1. 单一RowKey固有的局限性决定了它不可能有效地支持多条件查询
  2. 不适合于大范围扫描查询
  3. 不直接支持 SQL 的语句查询

四、hbase的HA实现,zookeeper在其中的作用

HBase中可以启动多个HMaster,通过Zookeeper的Master Election机制保证总有一个Master运行。
配置HBase高可用,只需要启动两个HMaster,让Zookeeper自己去选择一个Master Acitve即可

zk的在这里起到的作用就是用来管理master节点,以及帮助hbase做master选举

五、HMaster宕机的时候,哪些操作还能正常工作

对表内数据的增删查改是可以正常进行的,因为hbase client 访问数据只需要通过 zookeeper 来找到 rowkey 的具体 region 位置即可. 但是对于创建表/删除表等的操作就无法进行了,因为这时候是需要HMaster介入, 并且region的拆分,合并,迁移等操作也都无法进行了

六、讲一下hbase的写数据的流程

  1. Client先访问zookeeper,从.META.表获取相应region信息,然后从meta表获取相应region信息
  2. 根据namespace、表名和rowkey根据meta表的数据找到写入数据对应的region信息
  3. 找到对应的regionserver 把数据先写到WAL中,即HLog,然后写到MemStore上
  4. MemStore达到设置的阈值后则把数据刷成一个磁盘上的StoreFile文件。
  5. 当多个StoreFile文件达到一定的大小后(这个可以称之为小合并,合并数据可以进行设置,必须大于等于2,小于10——hbase.hstore.compaction.max和hbase.hstore.compactionThreshold,默认为10和3),会触发Compact合并操作,合并为一个StoreFile,(这里同时进行版本的合并和数据删除。)
  6. 当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split)【可称之为大合并,该阈值通过hbase.hregion.max.filesize设置,默认为10G】,并由Hmaster分配到相应的HRegionServer,实现负载均衡

七、讲一下hbase的写数据的流程

  1. Client先访问zookeeper,从.META.表获取相应region信息,然后从meta表获取相应region信息
  2. 根据namespace、表名和rowkey根据meta表的数据找到写入数据对应的region信息
  3. 找到对应的regionserver 把数据先写到WAL中,即HLog,然后写到MemStore上
  4. MemStore达到设置的阈值后则把数据刷成一个磁盘上的StoreFile文件。
  5. 当多个StoreFile文件达到一定的大小后(这个可以称之为小合并,合并数据可以进行设置,必须大于等于2,小于10——hbase.hstore.compaction.max和hbase.hstore.compactionThreshold,默认为10和3),会触发Compact合并操作,合并为一个StoreFile,(这里同时进行版本的合并和数据删除。)
  6. 当Storefile大小超过一定阈值后,会把当前的Region分割为两个(Split)【可称之为大合并,该阈值通过hbase.hregion.max.filesize设置,默认为10G】,并由Hmaster分配到相应的HRegionServer,实现负载均衡

八、讲一下hbase读数据的流程

  1. 首先,客户端需要获知其想要读取的信息的Region的位置,这个时候,Client访问hbase上数据时并不需要Hmaster参与(HMaster仅仅维护着table和Region的元数据信息,负载很低),只需要访问zookeeper,从meta表获取相应region信息(地址和端口等)。【Client请求ZK获取.META.所在的RegionServer的地址。】

  2. 客户端会将该保存着RegionServer的位置信息的元数据表.META.进行缓存。然后在表中确定待检索rowkey所在的RegionServer信息(得到持有对应行键的.META表的服务器名)。【获取访问数据所在的RegionServer地址】

  3. 根据数据所在RegionServer的访问信息,客户端会向该RegionServer发送真正的数据读取请求。服务器端接收到该请求之后需要进行复杂的处理。

  4. 先从MemStore找数据,如果没有,再到StoreFile上读(为了读取的效率)。

九、Hbase 和 hive 有什么区别hive 与 hbase 的底层存储是什么?hive是产生的原因是什么?habase是为了弥补hadoop的什么缺陷?共同点:

共同点:
         hbase与hive都是架构在hadoop之上的。都是用hadoop作为底层存储
区别:
HIVE
1、Hive是建立在Hadoop之上为了减少MapReducejobs编写工作的批处理系统
2、Hive本身不存储和计算数据,它完全依赖于HDFS和MapReduce,Hive中的表纯逻辑。
3、hive借用hadoop的MapReduce来完成一些hive中的命令的执行
4、hive需要用到hdfs存储文件,需要用到MapReduce计算框架
HBASE
1、HBase是为了支持弥补Hadoop对实时操作的缺陷的项目 。
2、想象你在操作RMDB数据库,如果是全表扫描,就用Hive+Hadoop,如果是索引访问,就用HBase+Hadoop 。
3、HBase是非常高效的,肯定比Hive高效的多。
4、hbase是物理表,不是逻辑表,提供一个超大的内存hash表,搜索引擎通过它来存储索引,方便查询操作。
5、hbase是列存储。
6、hdfs作为底层存储,hdfs是存放文件的系统,而Hbase负责组织文件。

十、直接将时间戳作为行健,在写入单个 region 时候会发生热点问题,为什么呢?

region 中的 rowkey 是有序存储,若时间比较集中。就会存储到一个 region 中,这样一个 region 的数据变多,其它的 region 数据很少,加载数据就会很慢,直到 region 分裂,此问题才会得到缓解。

十一、解释下 hbase 实时查询的原理

实时查询,可以认为是从内存中查询,一般响应时间在 1 秒内。HBase 的机制是数据先写入到内存中,当数据量达到一定的量(如 128M),再写入磁盘中, 在内存中,是不进行数据的更新或合并操作的,只增加数据,这使得用户的写操作只要进入内存中就可以立即返回,保证了 HBase I/O 的高性能。

扫码关注

大数据老哥
希望这篇文章可以帮到你~
记得点赞收藏哦

HBase最新面试题总结相关推荐

  1. 甘肃省计算机二级考试题库,2011甘肃省计算机等级考试二级最新考试试题库(完整版)...

    2011甘肃省计算机等级考试二级最新考试试题库(完整版) 1.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是(D) A. 概要设计 B. 详细设计 C. 可行性分析 D. ...

  2. 微型计算机中的外存储器 现在普遍采用,2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版)...

    2010澳门特别行政区全国计算机等级考试二级笔试试卷VB最新考试试题库(完整版) 1.LINUX是一种( B ) A.数据库管理系统 B.微机操作系统 C.字处理系统 D.鼠标器驱动程序 2.动态RA ...

  3. 最常见的208道Java最新面试题及答案(一)

    今天动力节点java培训机构小编为大家分享"最常见的208道Java最新面试题及答案",本文主要包含十九个模块的java面试题,分别是:Java 基础.容器.多线程.反射.对象拷贝 ...

  4. 2020前端最新面试题(vue篇)

    2020前端最新面试题(vue篇) 由于疫情原因,原本每年的"金三银四"仿佛消失,随之而来的是找工作的压力,这里给要面试的小伙伴们总结了到目前为止我遇到的前端面试题,仅供参考哦,第 ...

  5. 公务员考试中公共基础知识计算机,2012山东省公务员考试公共基础知识最新考试试题库(完整版)...

    2012山东省公务员考试公共基础知识最新考试试题库(完整版) 件将会____. A.永远不再发送 B.需要对方再次发次 C.保存在服务商的主机上 D.退回发信人 18.下列部件中,不属于计算机主机内的 ...

  6. 新疆卫生系统计算机考试题库,2014新疆维吾尔自治区计算机等级考试试题 二级C试题最新考试试题库...

    2014新疆维吾尔自治区计算机等级考试试题 二级C试题最新考试试题库 1.化工厂中用计算机系统控制物料配比.温度调节.阀门开关的应用属于( A ) A.过程控制 B.数据处理 C.科学计算 D.CAD ...

  7. 2020前端最新面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)(3年前端菜鸟级开发师含泪总结)

    2020前端最新面试题总结(js.html.小程序.React.ES6.Vue.算法.全栈热门视频资源) 文档描述 (今年确实挺难 3年前端菜鸟级开发师含泪总结 希望能帮助大家) 本文是关注微信小程序 ...

  8. 计算机办公软件office的考试试题,中职计算机办公软件Word2010年最新考试试题.doc...

    中职计算机办公软件Word2010年最新考试试题 Word考试试题 一.选择题 1.中文word是( A ) A 字处理软件 B 系统软件 C 硬件 D 操作系统 2.在word的文档窗口进行最小化操 ...

  9. 2022年MySQL最新面试题

    2022年MySQL最新面试题目录 前言 一.数据库基础知识 0.概要 1.平时MySQL主要用哪个版本 2.数据库三大范式是什么 3.MySQL有关权限的表都有哪几个 4.MySQL的binlog有 ...

最新文章

  1. html css百分比效果,css百分比不起作用是什么原因?
  2. Python3 property属性
  3. vector 声明固定长度的数组
  4. 如何定制化SAP Spartacus的页面布局
  5. php的类装载的步骤,设计PHP自动类装载功能
  6. 数字图像处理(作业三)——孔洞填充+全局阈值+自适应阈值
  7. ===,!==,==,!=的使用
  8. vue结合element实现自定义上传图片、文件
  9. WPF制作QQ列表(仿qq列表特效)
  10. 小米平板2wifi驱动下载_小米WiFi驱动官方下载_Xiaomi小米随身WiFi驱动官方最新版下载-华军软件园...
  11. bootstrap-multiselect.js插件、chosen插件、clipboard复制插件、layer.photos、lightbox插件相册预览插件学习
  12. 你知道直方图都能干啥?
  13. SCI收录中国期刊国家一级期刊名录一览表
  14. 再见2019 你好2020
  15. DS homework-队列
  16. 华三防火墙配置IPSec隧道
  17. C++图像处理 -- 图像翻转(镜像)
  18. 前端学习第八弹:制作一个精美书签
  19. 4成药企要退出,他们的药代知道吗?
  20. Python编写程序计算如下的分段函数

热门文章

  1. apache启服务命令_linux 下 apache启动、停止、重启命令
  2. OpenMesh学习笔记4 迭代器和循环器
  3. html5plus规范,Html5Plus(h5+)+Vue开发的注意事项
  4. 用王者荣耀让你理解什么是多线程 Java
  5. Linux开放、关闭端口
  6. nginx编译安装配置模块大全
  7. SpringBoot——druid监控中心
  8. JavaWeb部分 (JSON Redis )
  9. 安装max2.0出现3004错误
  10. git 拉取远程分支到本地(两种方法)