返回介绍

2.2 Hive

发布于 2024-09-24 23:25:31 字数 4569 浏览 0 评论 0 收藏 0

简介

Hive 是建立在 Hadoop 上的数据仓库框架,提供大数据平台批处理计算能力,能够对结构化/半结构化数据进行批量分析汇总完成数据计算。提供类 似 SQL 的 Hive Query Language 语言操作结构化数据,其基本原理是将 HQL 语言自动转换成 MapReduce 任务,从而完成对 Hadoop 集群中存储的海量数据进行查询 和分析。

Hive 主要特点如下:

  • 海量结构化数据分析汇总。

  • 将复杂的 MapReduce 编写任务简化为 SQL 语句。

  • 灵活的数据存储格式,支持 JSON,CSV,TEXTFILE,RCFILE,SEQUENCEFILE,ORC(Optimized Row Columnar)这几种存储格式。

结构

Hive 为单实例的服务进程,提供服务的原理是将 HQL 编译解析成相应的 MapReduce 或者 HDFS 任务, 图 1 为 Hive 的结构概图。

图 Hive 结构

image-20191205204614221

表格 8 Hive 模块说明

名称说明
HiveServer一个集群内可部署多个 HiveServer,负荷分担。对外提供 Hive 数据库服务,将用户提交的 HQL 语句进行编译,解析成对应的 Yarn 任务或者 HDFS 操作,从而完成数据的提取、转换、分析。
MetaStore一个集群内可部署多个 MetaStore,负荷分担。提供 Hive 的元数据服务,负责 Hive 表的结构和属性信息读、写、维护和修改。 提供 Thrift 接口,供 HiveServer、Spark、WebHCat 等 MetaStore 客户端来访问,操作元数据。
WebHCat一个集群内可部署多个 WebHCat,负荷分担。提供 Rest 接口,通过 Rest 执行 Hive 命令,提交 MapReduce 任务。
Hive 客户端包括人机交互命令行 Beeline、提供给 JDBC 应用的 JDBC 驱动、提供给 Python 应用的 Python 驱动、提供给 Mapreduce 的 HCatalog 相关 JAR 包。
ZooKeeper 集群Zookeeper 作为临时节点记录各 HiveServer 实例的 IP 地址列表,客户端驱动连接 Zookeeper 获取该列表,并根据路由机制选取对应的 HiveServer 实例。
HDFS/HBase 集群Hive 表数据存储在 HDFS 集群中。
MapReduce/Yarn 集群提供分布式计算服务:Hive 的大部分数据操作依赖 MapReduce,HiveServer 的主要功能是将 HQL 语句转换成 MapReduce 任务,从而完成对海量数据的处理。

HCatalog 是 Hadoop 上的一个表和存储的管理层。使用不同数据处理工具(如 MapReduce)的用户,使用 HCatalog 能够在集群上更容易的读写数据。如 图 2 所 示,开发人员的应用程序通过 HTTP 请求来访问 Hadoop MapReduce(YARN)、Hive、HCatalog DDL。如果请求是 HCatalog DDL 命令,直接被执行;如果是 MapReduce、Pig、Hive 任务,则会被放置在 WebHCat(Templeton 开普敦)服务器的队列中,使 其能够被监控进度或被停止。开发人员指定 MapReduce、Pig、Hive 任务的处理结果在 HDFS 的具体存放路径。

image-20191205204647150

图 WebHCat 的逻辑架构图

Hive 作为一个基于 HDFS 和 MapReduce 架构的数据仓库,其主要能力是通过对 HQL(Hive Query Language)编译和解析,生成并执行相应的 MapReduce 任务或者 HDFS 操作。

图 3 为 Hive 的结构简图。

  • Metastore – 对表,列和 Partition 等的元数据进行读写及更新操作,其下层为关系型数据库。

  • Driver – 管理 HiveQL 执行的生命周期并贯穿 Hive 任务整个执行期间。

  • Compiler – 编译 HiveQL 并将其转化为一系列相互依赖的 Map/Reduce 任务。

  • Optimizer – 优化器,分为逻辑优化器和物理优化器,分别对 HiveQL 生成的执行计划和 MapReduce 任务进行优化。

  • Executor – 按照任务的依赖关系分别执行 Map/Reduce 任务。

  • ThriftServer – 提供 thrift 接口,作为 JDBC 和 ODBC 的服务端,并将 Hive 和其他应用程序集成起来。

  • Clients – 包含 Web UI 和 JDBC/ODBC 接口,为用户访问提供接口。

图 Hive 结构 1

image-20191205204709259

image-20191205204731143

图 11 Hive 架构

Hive 的结构可以分为以下几部分:

  • 用户接口:包括 CLI, Client, WUI
  • 元数据存储。通常是存储在关系数据库如 mysql, derby 中
  • 解释器、编译器、优化器、执行器
  • Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算

备注

1、 用户接口主要有三个:CLI,Client 和 WUI。其中最常用的是 CLI,Cli 启动的时候,会同时启动一个 Hive 副本。Client 是 Hive 的客户端,用户连接至 Hive Server。在启动 Client 模式的时候,需要指出 Hive Server 所在节点,并且在该节点启动 Hive Server。 WUI 是通过浏览器访问 Hive。

2、 Hive 将元数据存储在数据库中,如 mysql、derby。Hive 中的元数据包括表的名字,表的列和分区及其属性,表的属性(是否为外部表等),表的数据所在目录等。

3、 解释器、编译器、优化器完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中,并在随后有 MapReduce 调用执行。

Hive 的数据存储在 HDFS 中,大部分的查询由 MapReduce 完成(包含 * 的查询,比如 select * from tbl 不会生成 MapRedcue 任务)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文