关于后端:面试题百日百刷HBase和Hive的区别是什么

44次阅读

共计 2675 个字符,预计需要花费 7 分钟才能阅读完成。

锁屏面试题百日百刷,每个工作日保持更新面试题。锁屏面试题 app、小程序现已上线,官网地址:https://www.demosoftware.cn。已收录了每日更新的面试题的所有内容,还蕴含特色的解锁屏幕温习面试题、每日编程题目邮件推送等性能。让你在面试中后人一步! 接下来的是今日的面试题:

1.HBase 的特点是什么?**

1)大:一个表能够有数十亿行,上百万列;

2)无模式:每行都有一个可排序的主键和任意多的列,列能够依据须要动静的减少,同一张表中不同的行能够有截然不同的列;

3)面向列:面向列(族)的存储和权限管制,列(族)独立检索;

4)稠密:空(null)列并不占用存储空间,表能够设计的十分稠密;

5)数据多版本:每个单元中的数据能够有多个版本,默认状况下版本号主动调配,是单元格插入时的工夫戳;

6)数据类型繁多:Hbase 中的数据都是字符串,没有类型。

2.HBase 和 Hive 的区别?

① 两者是什么?

Apache Hive 是一个构建在 Hadoop 基础设施之上的数据仓库。通过 Hive 能够应用 HQL 语言查问寄存在 HDFS 上的数据。HQL 是一品种 SQL 语言,这种语言最终被转化为 Map/Reduce. 尽管 Hive 提供了 SQL 查问性能,然而 Hive 不可能进行交互查问 – 因为它只可能在 Haoop 上批量的执行 Hadoop。

Apache HBase 是一种 Key/Value 零碎,它运行在 HDFS 之上。和 Hive 不一样,Hbase 的可能在它的数据库上实时运行,而不是运行 MapReduce 工作。Hive 被分区为表格,表格又被进一步宰割为列簇。列簇必须应用 schema 定义,列簇将某一类型列集合起来(列不要求 schema 定义)。例如,“message”列簇可能蕴含:“to”,”from”“date”,“subject”, 和”body”. 每一个 key/value 对在 Hbase 中被定义为一个 cell,每一个 key 由 row-key,列簇、列和工夫戳。

在 Hbase 中,行是 key/value 映射的汇合,这个映射通过 row-key 来惟一标识。Hbase 利用 Hadoop 的基础设施,能够利用通用的设施进行程度的扩大。

② 两者的特点

Hive 帮忙相熟 SQL 的人运行 MapReduce 工作。因为它是 JDBC 兼容的,同时,它也可能和现存的 SQL 工具整合在一起。运行 Hive 查问会破费很长时间,因为它会默认遍历表中所有的数据。尽管有这样的毛病,一次遍历的数据量能够通过 Hive 的分区机制来管制。分区容许在数据集上运行过滤查问,这些数据集存储在不同的文件夹内,查问的时候只遍历指定文件夹(分区)中的数据。这种机制能够用来,例如,只解决在某一个工夫范畴内的文件,只有

这些文件名中包含了工夫格局。

HBase 通过存储 key/value 来工作。它反对四种次要的操作:减少或者更新行,查看一个范畴内的 cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据能够被删除,而后通过 Hbase compactions 就能够开释出空间)。尽管 HBase 包含表格,然而 schema 仅仅被表格和列簇所要求,列不须要 schema。Hbase 的表格包含减少 / 计数性能。

③ 限度

Hive 目前不反对更新操作。另外,因为 hive 在 hadoop 上运行批量操作,它须要破费很长的工夫,通常是几分钟到几个小时才能够获取到查问的后果。Hive 必须提供事后定义好的 schema 将文件和目录映射到列,并且 Hive 与 ACID 不兼容。

HBase 查问是通过特定的语言来编写的,这种语言须要重新学习。类 SQL 的性能能够通过 Apache Phonenix 实现,但这是以必须提供 schema 为代价的。另外,Hbase 也并不是兼容所有的 ACID 个性,尽管它反对某些个性。最初但不是最重要的 – 为了运行 Hbase,Zookeeper 是必须的,zookeeper 是一个用来进行分布式协调的服务,这些服务包含配置服务,保护元信息和命名空间服务。

④ 利用场景

Hive 适宜用来对一段时间内的数据进行剖析查问,例如,用来计算趋势或者网站的日志。Hive 不应该用来进行实时的查问。因为它须要很长时间才能够返回后果。

Hbase 非常适合用来进行大数据的实时查问。Facebook 用 Hbase 进行音讯和实时的剖析。它也能够用来统计 Facebook 的连接数。

⑤ 总结

Hive 和 Hbase 是两种基于 Hadoop 的不同技术 –Hive 是一品种 SQL 的引擎,并且运行 MapReduce 工作,Hbase 是一种在 Hadoop 之上的 NoSQL 的 Key/vale 数据库。当然,这两种工具是能够同时应用的。就像用 Google 来搜寻,用 FaceBook 进行社交一样,Hive 能够用来进行统计查问,HBase 能够用来进行实时查问,数据也能够从 Hive 写到 Hbase,设置再从 Hbase 写回 Hive。

3.HBase 实用于怎么的情景?**

① 半结构化或非结构化数据

对于数据结构字段不够确定或横七竖八很难按一个概念去进行抽取的数据适宜用 HBase。以下面的例子为例,当业务倒退须要存储 author 的 email,phone,address 信息时 RDBMS 须要停机保护,而 HBase 反对动静减少。

② 记录十分稠密

RDBMS 的行有多少列是固定的,为 null 的列节约了存储空间。而如上文提到的,HBase 为 null 的 Column 不会被存储,这样既节俭了空间又进步了读性能。

③ 多版本数据

如上文提到的依据 Row key 和 Column key 定位到的 Value 能够有任意数量的版本值,因而对于须要存储变动历史记录的数据,用 HBase 就十分不便了。比方上例中的 author 的 Address 是会变动的,业务上个别只须要最新的值,但有时可能须要查问到历史值。

④ 超大数据量

当数据量越来越大,RDBMS 数据库撑不住了,就呈现了读写拆散策略,通过一个 Master 专门负责写操作,多个 Slave 负责读操作,服务器老本倍增。随着压力减少,Master 撑不住了,这时就要分库了,把关联不大的数据离开部署,一些 join 查问不能用了,须要借助中间层。随着数据量的进一步减少,一个表的记录越来越大,查问就变得很慢,于是又得搞分表,比方按 ID 取模分成多个表以缩小单个表的记录数。经验过这些事的人都晓得过程是如许的折腾。采纳 HBase 就简略了,只须要加机器即可,HBase 会主动程度切分扩大,跟 Hadoop 的无缝集成保障了其数据可靠性(HDFS)和海量数据分析的高性能(MapReduce)。

正文完
 0