数据库教程:Hive与Hbase

文章目录一、Hive1.1 简介1.2 Hive架构1.3 Hive工作原理1.4 Hive优缺点二、Hbase2.1 简介2.2 Hbase架构及原理2.3 Hbase优缺点三、Hive与Hbase两者异同一、Hive1.1 简介  Hive是一个基于数据仓库工具,并提供HQL查询功能,Hive架构在Hadoop之上,底层数据存储在HDFS上,Hive的本质是将SQL语句转换为MapReduce任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据

文章目录

    • 一、Hive
      • 1.1 简介
      • 1.2 Hive架构
      • 1.3 Hive工作原理
      • 1.4 Hive优缺点
    • 二、Hbase
      • 2.1 简介
      • 2.2 Hbase架构及原理
      • 2.3 Hbase优缺点
    • 三、Hive与Hbase两者异同

一、Hive

1.1 简介

  Hive是一个基于数据仓库工具,并提供HQL查询功能,Hive架构在Hadoop之上,底层数据存储在HDFS上,Hive的本质是将SQL语句转换为MapReduce任务运行,使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。

1.2 Hive架构

Hive架构图
Hive与Hbase

单元名称 操作
用户接口/界面 Hive是一个数据仓库基础工具软件,可以创建用户和HDFS之间互动。用户界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服务器)。
元存储 Hive选择各自的数据库服务器,用以储存表,数据库,列模式或元数据表,它们的数据类型和HDFS映射。
HiveQL处理引擎 HiveQL类似于SQL的查询上Metastore模式信息。这是传统的方式进行MapReduce程序的替代品之一。相反,使用Java编写的MapReduce程序,可以编写为MapReduce工作,并处理它的查询。
执行引擎 HiveQL处理引擎和MapReduce的结合部分是由Hive执行引擎。执行引擎处理查询并产生结果和MapReduce的结果一样。它采用MapReduce方法。
HDFS 或 HBASE Hadoop的分布式文件系统或者HBASE数据存储技术是用于将数据存储到文件系统。

1.3 Hive工作原理

Hive与Hbase

操作
1 Execute Query Hive接口,如命令行或Web UI发送查询驱动程序(任何数据库驱动程序,如JDBC,ODBC等)来执行。
2 Get Plan 在驱动程序帮助下查询编译器,分析查询检查语法和查询计划或查询的要求。
3 Get Metadata 编译器发送元数据请求到Metastore(任何数据库)。
4 Send Metadata Metastore发送元数据,以编译器的响应。
5 Send Plan 编译器检查要求,并重新发送计划给驱动程序。到此为止,查询解析和编译完成。
6 Execute Plan 驱动程序发送的执行计划到执行引擎。
7 Execute Job 在内部,执行作业的过程是一个MapReduce工作。执行引擎发送作业给JobTracker,在名称节点并把它分配作业到TaskTracker,这是在数据节点。在这里,查询执行MapReduce工作。
7.1 Metadata Ops 与此同时,在执行时,执行引擎可以通过Metastore执行元数据操作。
8 Fetch Result 执行引擎接收来自数据节点的结果。
9 Send Results 执行引擎发送这些结果值给驱动程序。
10 Send Results 驱动程序将结果发送给Hive接口。

1.4 Hive优缺点

  • 操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手);
  • 避免了去写MapReduce,减少开发人员的学习成本;
  • 统一的元数据管理,可与impala/spark等共享元数据;
  • 易扩展(HDFS+MapReduce:可以扩展集群规模;支持自定义函数);
  • 数据的离线处理;比如:日志分析,海量结构化数据离线分析…
  • Hive的执行延迟比较高,因此hive常用于数据分析的,对实时性要求不高的场合;
  • Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高。

二、Hbase

2.1 简介

  HBase是建立在Hadoop文件系统之上的分布式列式存储nosql数据库,支持横向扩展的。
  HBase是一个数据模型,类似于谷歌的大表设计,可以提供快速随机访问海量结构化数据。它利用了Hadoop的文件系统(HDFS)提供的容错能力。
  HBase提供对数据的随机实时读/写访问,是Hadoop文件系统的一部分。
  人们可以直接或通过HBase的存储HDFS数据。使用HBase在HDFS读取消费/随机访问数据。 HBase在Hadoop的文件系统之上,并提供了读写访问。

2.2 Hbase架构及原理

Hive与Hbase
  HBase中的每张表都通过键按照一定的范围被分割成多个子表(HRegion),默认一个HRegion超过256M就要被分割成两个,这个过程由HRegionServer管理,而HRegion的分配由HMaster管理,HRegion
  HBase中分布式存储和负载均衡的最小单元。
Store
  每一个HRegion由一个或多个Store组成,至少是一个Store,HBase会把一起访问的数据放在一个Store里面,即为每个ColumnFamily建一个Store,
  如果有几个ColumnFamily,也就有几个Store。一个Store由一个MemStore和0或者多个StoreFile组成。 HBase以Store的大小来判断是否需要切分HRegion。

MemStore
  MemStore 是放在内存里的,保存修改的数据即keyValues。当MemStore的大小达到一个阀值(默认64MB)时,MemStore会被Flush到文件,即生成一个快照。目前HBase会有一个线程来负责MemStore的Flush操作。 
StoreFile
  MemStore内存中的数据写到文件后就是StoreFile,StoreFile底层是以HFile的格式保存。
HFile
  HBase中KeyValue数据的存储格式,是Hadoop的二进制格式文件。 首
HLog
  HLog(WAL log):WAL意为write ahead log,用来做灾难恢复使用,HLog记录数据的所有变更,一旦region server 宕机,就可以从log中进行恢复。

LogFlusher
  定期的将缓存中信息写入到日志文件中

LogRoller 
  对日志文件进行管理维护

2.3 Hbase优缺点

  • 强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合
  • 自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配
  • 自动的故障转移
  • Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接
  • 丰富的“简洁,高效”API,Thrift/REST API,Java API
  • 块缓存,布隆过滤器,可以高效的列查询优化
  • 操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标

三、Hive与Hbase两者异同

限制
  Hive目前不支持更新操作。另外,由于hive在hadoop上运行批量操作,它需要花费很长的时间,通常是几分钟到几个小时才可以获取到查询的结果。Hive必须提供预先定义好的schema将文件和目录映射到列,并且Hive与ACID不兼容。
  HBase查询是通过特定的语言来编写的,这种语言需要重新学习。类SQL的功能可以通过Apache Phonenix实现,但这是以必须提供schema为代价的。另外,Hbase也并不是兼容所有的ACID特性,虽然它支持某些特性。最后但不是最重要的–为了运行Hbase,Zookeeper是必须的,zookeeper是一个用来进行分布式协调的服务,这些服务包括配置服务,维护元信息和命名空间服务。
相同点
  Hive帮助熟悉SQL的人运行MapReduce任务。因为它是JDBC兼容的,同时,它也能够和现存的SQL工具整合在一起。运行Hive查询会花费很长时间,因为它会默认遍历表中所有的数据。虽然有这样的缺点,一次遍历的数据量可以通过Hive的分区机制来控制。分区允许在数据集上运行过滤查询,这些数据集存储在不同的文件夹内,查询的时候只遍历指定文件夹(分区)中的数据。
  HBase通过存储key/value来工作。它支持四种主要的操作:增加或者更新行,查看一个范围内的cell,获取指定的行,删除指定的行、列或者是列的版本。版本信息用来获取历史数据(每一行的历史数据可以被删除,然后通过Hbase compactions就可以释放出空间)。虽然HBase包括表格,但是schema仅仅被表格和列簇所要求,列不需要schema。Hbase的表格包括增加/计数功能。
差异点
  Hive适合用来对一段时间内的数据进行分析查询,Hive不应该用来进行实时的查询。因为它需要很长时间才可以返回结果。
  Hbase非常适合用来进行大数据的实时查询。

数据库技术:Hive与Hbase地址:https://blog.csdn.net/qq_42979842/article/details/107572160

需要了解更多数据库技术:Hive与Hbase,都可以关注数据库技术分享栏目—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/630130.html

(0)
上一篇 2021年5月30日
下一篇 2021年5月30日

精彩推荐