HBase面试题精讲「建议收藏」

HBase面试题精讲「建议收藏」1.HBase的特点是什么?1)大:一个表可以有数十亿行,上百万列;2)无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中不同的行可以有截然不同的列;3)面向列:面向列(族)的存储和权限控制,列(族)独立检索;4)稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入时的时间戳;6)数据类型单一:Hbase中的数据都是字符串,没有类型。2.HBase和Hive

大家好,又见面了,我是你们的朋友全栈君。

1. HBase的特点是什么?

1)大:一个表可以有数十亿行,上百万列;
2)无模式:每行都有一个可排序的主键和任意多的列,列可以根据需要动态的增加,同一张表中
不同的行可以有截然不同的列;
3)面向列:面向列(族)的存储和权限控制,列(族)独立检索;
4)稀疏:空(null)列并不占用存储空间,表可以设计的非常稀疏;
5)数据多版本:每个单元中的数据可以有多个版本,默认情况下版本号自动分配,是单元格插入
时的时间戳;
6)数据类型单一:Hbase中的数据都是字符串,没有类型。

2. HBase和Hive的区别?

在这里插入图片描述

	1)Hive和Hbase是两种基于Hadoop的不同技术--Hive是一种类SQL的引擎,并
且运行MapReduce任务,Hbase是一种在Hadoop之上的NoSQL 的Key/vale数据库。
	2)这两种工具可以同时使用的。Hive可以用来进行统计查询,HBase可以用来
进行实时查询,数据也可以从Hive写到Hbase,设置再从Hbase写回Hive。
最后再结合自己的实际应用说出来.

3. HBase适用于怎样的情景?

1) 存储半结构化或者结构化的数据

对于数据结构字段不够确定或杂乱无章很难按一个概念去进行抽取的数据适合用
HBase,HBase支持动态增加字段,而RDBMS需要统计维护.

2) 记录稀疏的数据

HBase对于为null的数据不会被存储,节省了空间又提高了读性能。

3) 多版本数据

时间戳和版本号

4) 超大数据量

可以存储数十亿行,上百万列的数据

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

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

  • Rowkey散列原则
    避免regionserver热点问题,因为一个rowkey只能属于一个regionserver,所以设计rowkey之处应当遵循散列原则.(建表的时候可以采用预分区)

③ Rowkey唯一原则

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

HBase的查询实现只提供两种方式:
get功能:

  • 局部扫描,根据rowkey获取唯一一条指定的记录
  • scan是全部扫描,获取一批记录,)scan 可以通过setFilter 方法添加过滤器,这也是分页、多条件查询的基础; 还可以加 startkey endkey

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

HBase中通过row和columns确定的为一个存贮单元称为cell。
 Cell:由{ 
   rowkey, column(=<family> + <label>), version}唯一确定的单元。cell 中的数据是 没有类型的,全部是字节码形式存贮。

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

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

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

8. 每天百亿数据存入HBase,如何保证数据的存储正确和在规 定的时间里全部录入完毕,不残留数据?

需求分析:
	1)百亿数据:证明数据量非常大;
	2)存入HBase:证明是跟HBase的写入数据有关;
	3)保证数据的正确:要设计正确的数据结构保证正确性;
	4)在规定时间内完成:对存入速度是有要求的。


解决思路:
	1)数据量百亿条,什么概念呢?假设一整天60x60x24 = 86400秒都在写入数据,那么每秒的
写入条数高达100万条,HBase当然是支持不了每秒百万条数据的,所以这百亿条数据可能不是通
过实时地写入,而是批量地导入。批量导入推荐使用BulkLoad方式(推荐阅读:Spark之读写HBase),
性能是普通写入方式几倍以上;
	2)存入HBase:普通写入是用JavaAPI put来实现,批量导入推荐使用BulkLoad;
	3)保证数据的正确:这里需要考虑RowKey的设计、预建分区和列族设计等问题;
	4)在规定时间内完成也就是存入速度不能过慢,并且当然是越快越好,使用BulkLoad。

9. HBase如何给web前端提供接口来访问?

使用JavaAPI来编写WEB应用,使用HBase提供的RESTFul接口。

10. 请列举几个HBase优化方法?

结合你们自己的项目说吧!!!

11. HBase中RowFilter和BloomFilter原理?

1)RowFilter原理简析
	RowFilter顾名思义就是对rowkey进行过滤,那么rowkey的过滤无非就是相等(EQUAL)、
大于(GREATER)、小于(LESS),大于等(GREATER_OR_EQUAL),小于等于(LESS_OR_EQUAL)和
不等于(NOT_EQUAL)几种过滤方式。Hbase中的RowFilter采用比较符结合比较器的方式来进行过滤

比较器的类型如下:
	BinaryComparator
	BinaryPrefixComparator
	NullComparator
	BitComparator
	RegexStringComparator
	SubStringComparator
例如:
Filter rowFilter = new RowFilter(CompareFilter.CompareOp.EQUAL,
new BinaryComparator(Bytes.toBytes(rowKeyValue)));
Scan scan = new Scan();
scan.setFilter(rowFilter)
...

2)BloomFilter原理简析
	主要功能:提供随机读的性能
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/138352.html原文链接:https://javaforall.net

(0)
上一篇 2022年5月6日 下午2:00
下一篇 2022年5月6日 下午2:20


相关推荐

  • 数学建模-神经网络模型

    数学建模-神经网络模型神经网络简介人工神经网络是在现代神经科学的基础上提出和发展起来的 旨在反映人脑结构及功能的一种抽象数学模型 自 1943 年美国心理学家 W McCulloch 和数学家 W Pitts 提出形式神经元的抽象数学模型 MP 模型以来 人工神经网络理论技术经过了 50 多年曲折的发展 特别是 20 世纪 80 年代 人工神经网络的研究取得了重大进展 有关的理论和方法已经发展成一门界于物理学 数学 计算机

    2026年3月19日
    1
  • git指令集

    git指令集Git是分散式的版本控制系統,從架設、簡易操作、設定,此篇主要是整理基本操作、遠端操作等.註:Git的範圍太廣了,把這篇當作是初學入門就好了.:)注意事項由project/.git/config可知:(若有更多,亦可由此得知)origin(remote)是Repository的版本master(branch)是local端,正在修

    2022年5月7日
    45
  • 自动编码器模型和代码解释

    自动编码器模型和代码解释CNN算法与程序研究 1)      深度学习基本理论方法http://wenku.baidu.com/view/2e630ddfc5da50e2524d7ff3 特征多,给出的信息多,识别准确性会提升。但是,计算复杂度增加,搜索的空间大,可以用来训练的数据在每个特征上就会稀疏。采用层次网络结构,BP一层隐层节点的浅层模型,带有一层隐层节点(如SVM、Boostin

    2022年6月7日
    27
  • web性能优化–用gzip压缩资源文件

    web性能优化–用gzip压缩资源文件一、gzip压缩技术gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的大多数浏览器都支持解析gzip压缩过的资源文件。在实际的应用中我们发现压缩的比率往往在3到10倍,也…

    2022年6月15日
    30
  • linux时间戳转换成时间指令_时间戳转换公式

    linux时间戳转换成时间指令_时间戳转换公式原文地址:http://wanping.blogbus.com/logs/28663569.html1、时间戳转换为正常显示的时间格式Freebsd系统下:转换命令为:date-r1112173761    或者:date-r1112173761+”%Y-%m-%d%T%z”(年月日的格式不一样)Linux系统下:转换

    2022年10月2日
    7
  • 通常C面试题

    通常C面试题C 面试题 1 在 C 中 stringstr null 与 stringstr 请尽量使用文字或图象说明其中的区别 回答要点 说明详细的空间分配 10 分 答 stringstr null 是不给他分配内存空间 而 stringstr 给它分配长度为空字符串的内存空间 请详述在 dotnet 中类 class 与结构 struct 的异同 10 分 答

    2026年3月27日
    1

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号