大数据面试题Hbase篇

这篇具有很好参考价值的文章主要介绍了大数据面试题Hbase篇。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.Hbase是什么?

2.HBase 的特点是什么?

3.HBase 和 Hive 的区别?

4.描述 HBase 的 rowKey 的设计原则?

5.请详细描述 HBase 中一个 cell 的结构?

6.hbase中分布式存储的最小单元?

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

8.Region 如何预建分区?

9.HRegionServer 宕机如何处理?

10.HBase 读写流程?HBase 内部机制是什么?(☆)

11.HBase 在进行模型设计时重点在什么地方?一张表中定义多少个 Column Family 最合适?为什么? 

12.如何提高 HBase 客户端的读写性能?请举例说明

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

14.谈谈hbase中的数据热点问题以及应对办法?

​编辑

15.谈谈HBase的大合并、小合并?

16.HBase和关系型(传统数据库)的区别?

17.谈谈Hbase的高可用?


1.Hbase是什么?

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

2.HBase 的特点是什么?

1、海量存储:可以存储大批量的数据。

2、列(簇)式存储:hbase表的数据是基于列族进行存储的,列族是在列的方向上的划分。

3、极易扩展:底层依赖HDFS,当磁盘空间不足的时候,只需要动态增加 datanode节点服务(机器)就可以了;可以通过增加服务器来提高集群的存储能力。

4、高并发:支持高并发的读写请求。

5、稀疏:稀疏主要是针对Hbase列的灵活性,在列族中,你可以指定任意多的列,在列数据为空的情况下,是不会占用存储空间的。

6、数据的多版本:hbase表中的数据可以有多个版本值,默认情况下是根据版本号去区分,版本号就是插入数据的时间戳。

7、数据类型单一:所有的数据在hbase中是以字节数组进行存储。

3.HBase 和 Hive 的区别?

Hive是一种类SQL的引擎,并且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。

hbase运行在hdfs上,和hive不一样,hbase能够在数据库上实时运行,而不是运行MapReduce任务。

应用场景

Hive适合用来对一段时间内的数据进行分析查询,例如,用来计算趋势或者网站的日志。Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。

Hbase非常适合用来进行大数据的实时查询。

4.描述 HBase 的 rowKey 的设计原则?

第一个是散列原则:如果是rowkey按照时间戳或者是顺序递增

那么将会产生热点现象 建议将rowkey的高位作为散列字段,由程序随机生成,低位放时间字段,这样将提高数据均衡分布在每个RegionServer,以实现负载均衡的几率

第二个是长度原则:

RowKey的长度不宜过长,不宜超过16个字节,最大长度64kb,实际应用中一般为10-100bytes,以byte[]形式保存。一条数据是根据rowkey来当成索引的,如果过长就会快速占据memstore的128M,然后被刷写到磁盘,也就是说相同的空间存贮的内容被rowkey占据了一大部分,减少了主要内容的存贮。

第三个是唯一原则:

必须在设计上保证其唯一性, rowkey可以锁定唯一的一行数据,rowkey重复的话后put的数据会覆盖前面插入的数据

5.请详细描述 HBase 中一个 cell 的结构?

HBase 中的 Cell表示的是表中的单元格,由{rowkey, column Family:columu, version} 唯一确定的单元。cell中的数据是没有类型的,全部是字节码形式存贮。其中 version 就是这个单元格中的 Time Stamp。

6.hbase中分布式存储的最小单元?

Region是分布式存储的最小单元,但并不是存储的最小单元。

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

在hbase 中每当有memstore 数据flush 到磁盘之后,就形成一个storefile,当storeFile 的数量达到一定程度后,
就需要将storefile 文件来进行compaction 操作。
Compact 的作用:
1、合并文件
2、清除过期,多余版本的数据
3、提高读写数据的效率

HBase 中实现了两种compaction 的方式:minor 和 major.
这两种compaction方式的区别是:
1、Minor 操作只用来做部分文件的合并操作以及包括minVersion=0 并且设置ttl 的过
期版本清理,不做任何删除数据、多版本数据的清理工作。
2、Major 操作是对Region 下的HStore 下的所有StoreFile 执行合并操作,最终的结果
是整理合并出一个文件。
 

8.Region 如何预建分区?

        创建表时,只有一个分区region,当该分区达到一定的值时,会进行分区,此时分区会影响Hbase的性能。而且每一个region维护着startRow与endRow,如果加入的数据符合某个region维护的rowKey范围,则该数据交给这个region维护。因此可以添加预分区。

1.create 'group','info',SPLITS =>['10','20','30','40']

2.create 'group2','info',{NUMREGIONS => 15, SPLITALGO => 'HexStringSplit'}

3.按照文件内容预分区

文件内容:spilt.txt
aaaa
bbbb
cccc
dddd
create 'group3', 'info',SPLITS_FILE => '/opt/module/hive/datas/spilt.txt'

4.根据API分区

9.HRegionServer 宕机如何处理?

1)ZooKeeper 会监控 HRegionServer 的上下线情况,当 ZK 发现某个 HRegionServer 宕机之后会通知 HMaster 进行失效备援;
2)该 HRegionServer 会停止对外提供服务,就是它所负责的 region 暂时停止对外提供服务;
3)HMaster 会将该 HRegionServer 所负责的 region 转移到其他 HRegionServer 上,并且会对 HRegionServer 上存在 memstore 中还未持久化到磁盘中的数据进行恢复;
4)这个恢复的工作是由 WAL 重播来完成,这个过程如下:
· wal 实际上就是一个文件,存在/hbase/WAL/对应 RegionServer 路径下。
· 宕机发生时,读取该 RegionServer 所对应的路径下的 wal 文件,然后根据不同的region 切分成不同的临时文件 recover.edits。
· 当 region 被分配到新的 RegionServer 中,RegionServer 读取 region 时会进行是否存在 recover.edits,如果有则进行恢复。

10.HBase 读写流程?HBase 内部机制是什么?(☆)

11.HBase 在进行模型设计时重点在什么地方?一张表中定义多少个 Column Family 最合适?为什么? 

Column Family 的个数具体看表的数据,一般来说划分标准是根据数据访问频度,如一张表里有些列访问相对频繁,而另一些列访问很少,这时可以把这张表划分成两个列族,分开存储,提高访问效率。

12.如何提高 HBase 客户端的读写性能?请举例说明

1 开启 bloomfilter 过滤器,开启 bloomfilter 比没开启要快 3、4 倍
2 Hbase 对于内存有特别的需求,在硬件允许的情况下配足够多的内存给它
3 通过修改 hbase-env.sh 中的
export HBASE_HEAPSIZE=3000 #这里默认为 1000m
4 增大 RPC 数量
通过修改 hbase-site.xml 中的 hbase.regionserver.handler.count 属性,可以适当的放大RPC 数量,默认值为 10 有点小。
 

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

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

14.谈谈hbase中的数据热点问题以及应对办法?

数据热点问题:(数据倾斜)

什么是热点?(就是多数数据集中在少数region当中)

HBase中的行是按照rowkey的字典顺序排序的,这种设计优化了scan操作,可以将相关的行以及会被一起读取的行存取在临近位置,便于scan。然而糟糕的rowkey设计是热点的源头。热点发生在大量的client直接访问集群的一个或极少数个节点(访问可能是读,写或者其他操作)。大量访问会使热点region所在的单个机器超出自身承受能力,引起性能下降甚至region不可用,这也会影响同一个RegionServer上的其他region,由于主机无法服务其他region的请求。设计良好的数据访问模式以使集群被充分,均衡的利用。

常见的解决办法:(哈希比较常用,因为哈希还能解决去重问题 因为相同的值哈希值也相同)

大数据面试题Hbase篇

15.谈谈HBase的大合并、小合并?

删除一条记录就会在该记录上打上标记DeleteColumn,该记录使用get和scan查询不到,但还是在HFile中。只有进行大合并时才会删除这条记录

大合并:region的一个列族所有HFile合并成一个HFile
小合并:多个小的HFile合并成一个大的HFile,将新文件设置为激活状态,删除小文件

16.HBase和关系型(传统数据库)的区别?

1、数据类型:HBase只有简单的数据类型,只保留字符串;传统有丰富的数据类型
2、数据操作:HBase只有简单的增删改查等操作,表和表之间是分离的;传统有各式各样的函数和连接操作
3、存储模型:HBase基于列式存储的,数据即索引,可以实现查询的并发处理;传统基于表格结构和行存储,其没有建立索引将耗费大量的I/O并且建立索引和物化视图需要耗费大量的时间和资源
4、数据维护:HBase的更新实际上是插入了新的数据;传统只是替换和修改
5、可伸缩性:HBase可以轻松的增加或减少硬件的数目,并且对错误的兼容性比较高;传统需要增加中间层才能实现这样的功能
6、事务:HBase只可以实现单行的事务性,意味着行与行、表与表之间不必满足事务性;传统可以实现跨行的事务性

17.谈谈Hbase的高可用?

主HMaster在启动时会在ZooKeeper中/master节点注册
备用的HMaster在启动时会在ZooKeeper中backup-masters节点注册

HMaster只有一个,当进程挂了,那么会对HBase集群造成影响(单节点故障)
解决办法:在另外一台服务器上,例如slave1,在启动一个HMaster

RegionServer:
当RegionServer挂了的时候,其上面的Region就会失效,HMaster会发现失效的Region并进行重新分配,但是可能会有部分数据在memstore上,如果RegionServer挂了,那么这部分数据将丢失,不过在写memstore之前数据已经写入了HLOG,所以丢失的数据可以通过HLOG进行恢复。
storefile的数据已经在HDFS上了,不会丢失文章来源地址https://www.toymoban.com/news/detail-490266.html

到了这里,关于大数据面试题Hbase篇的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 一篇搞定分布式大数据系统所有概念,包括有Hadoop、MapReduce、HDFS、HBASE、NoSql 、ZooKeeper 、Reidis 、Nginx 、BASE、CAP定义、特点和应用场景

    1.1hadoop定义和特点 Hadoop定义: Hadoop是一个开源的分布式计算框架,用于存储和处理大规模数据集。它基于Google的MapReduce论文和Google文件系统(GFS)的设计理念,并由Apache软件基金会进行开发和维护。 Hadoop的主要特点包括: 分布式存储:Hadoop通过分布式文件系统(Hadoop Dist

    2024年02月03日
    浏览(53)
  • 启动hbase(报错:没有那个文件或目录)

    完成hbase伪分布配置后,启动hbase 然后报错 发现都是Java没有文件或目录,判断是jdk的路径错误 然后修改配置文件:hbase-env.sh(文件在hbase-conf目录) 将本机的jdk路径写正确  更改完成后再次启动hbase即可  

    2024年02月11日
    浏览(46)
  • 【大数据&AI人工智能】HBase的核心数据结构和算法原理是什么?给出代码实例

    HBase是一个开源的非关系型分布式数据库,它参考了Google的BigTable模型,实现语言为 Java。它是Apache软件基金会的Hadoop项目的一部分,运行在HDFS文件系统之上,为 Hadoop 提供类BigTable 的服务。 HBase的核心数据结构和算法原理是什么?给出代码实例。HBase的核心数据结构和算法原

    2024年02月09日
    浏览(54)
  • HBase相关面试准备问题

    1、海量存储 Hbase适合存储PB级别的海量数据,在PB级别的数,能在几十到几百毫秒内返回数据。这与Hbase的极易扩展性息息相关。正是因为Hbase良好的扩展性,才为海量数据的存储提供了便利。 2、列式存储 这里的列式存储其实说的是列族存储,Hbase是根据列族来存储数据的。

    2024年02月22日
    浏览(43)
  • Hbase面试题

    序号 内容 链接地址 1 Java面试题 https://blog.csdn.net/golove666/article/details/137360180 2 JVM面试题 https://blog.csdn.net/golove666/article/details/137245795 3 Servlet面试题 https://blog.csdn.net/golove666/article/details/137395779 4 Maven面试题 https://blog.csdn.net/golove666/article/details/137365977 5 Git面试题 https://blog.csdn.n

    2024年04月24日
    浏览(22)
  • 【面试】Hbase

    命名空间,类似于 关系型数据库的database 概念,每个命名空间下有多个表。Hbase有两个自带的命名空间,分别是hbase和default, hbase中存放的是HBase内置的表, default表是用户默认使用的命名空间。 类似于 关系型数据库的表 概念。不同的是,HBase定义表时只需要声明列族即可,不需

    2024年02月16日
    浏览(29)
  • Hbase-面试题

    自动切分,默认情况下 2.0版本,第一次region的数据达到256M,会进行切分,以后就是每达到10G切分一次,切分完成后,会进行负载均衡,均衡到其他regionserver 预分区+自定义rowkey 可以理解为预切分 比如预分区,每个regionserver会有10个region,每个region都有startrow和endrow 生产上必

    2024年02月13日
    浏览(31)
  • Hbase面试题(一)

    1.1 hbase写流程 客户端向 HBase 的 ZooKeeper 发送请求,获取写入目标表的 region 信息。ZooKeeper 返回表的 region 地址。 客户端通过 HBase 客户端 API 创建一个 Put 对象,并设置需要写入的数据。 客户端使用 region 地址向对应的 region server 发送写入请求。region server 进行数据的预处理(

    2024年02月11日
    浏览(28)
  • 什么是HBase

    HBase是一个基于Hadoop的分布式列式存储系统,可以存储非结构化和半结构化的大数据,具有高可用性、高扩展性、高性能等特点,常用于大规模实时数据处理。 HMaster:负责HBase集群的管理和维护。包括RegionServer的管理、分配Region、负载均衡、故障转移等功能。 RegionServer:负责

    2024年02月16日
    浏览(32)
  • 3. Apache HBase 为什么快?

    Apache HBase 之所以快速,主要归功于其设计和实现的几个关键特性和优化。 下面是一些重要的原因: 分布式架构:HBase是一个分布式数据库,数据存储在多个节点上,可以水平扩展。这使得HBase能够处理大规模数据,并且能够通过添加更多的服务器节点来提高性能。 列式存储

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包