Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >为什么我们需要 Hive Metastore!

为什么我们需要 Hive Metastore!

作者头像
Spark学习技巧
发布于 2023-03-21 02:43:46
发布于 2023-03-21 02:43:46
7090
举报
文章被收录于专栏:Spark学习技巧Spark学习技巧

IT 中的每个人都与数据打交道,包括前端和后端开发人员、分析师、QA 工程师、产品经理以及许多其他角色的人员。使用的数据和数据处理方法因角色而异,但数据本身往往不是关键。

——“这是一把非常特别的钥匙,只适用于 The One” ——“它能解锁什么?” - “未来” 重新加载的矩阵

在数据工程领域,数据不仅仅是“数据”——它是我们工作的命脉。大多数时候,这就是我们的全部工作。我们的代码以数据为中心,我们使用唯一真正的第五代语言——SQL。(第 5 代语言是那些让您定义您想要实现的目标并且语言本身为您解决问题的语言。)

但是,有一个巨大的“但是”。数据很酷,使用它令人兴奋,但访问它通常很麻烦。数据以多种不同的格式、不同的位置和不同的访问限制存储,并且以非常不同的方式构建。我们必须全部了解它们,查询它们,有时甚至将它们加入我们的查询中。

因此,我们需要一个可以管理所有关于数据存储的信息的地方。而这个地方就是 Hive Metastore。

Hive Metastore

根据亚马逊网站的定义,Hive Metastore 是作为 Apache Hive 的一部分开发的,Apache Hive 是“一种分布式、容错数据仓库系统,可以进行大规模分析” 。这基本上意味着您可以从一个地方查询所有内容。

Hive 通过成为有关数据存储的所有元信息的存储点来实现这一目标。凭借其 HQL 方言(与常规 SQL 相比有一些限制,但也有一些优势),Hive 允许您将任何数据结构投影到适合使用 SQL 查询的结构。

关于 Hive Metastore 的一个稍微令人困惑的事情是,尽管它的名称中有“Hive”,但实际上它与 Hive 是分开的并且完全独立于 Hive。

既然我们在谈论组件,让我们来探索 Hive Metastore 的架构。

架构

Hive Metastore 的实际架构非常简单:

由于数据被投射到 SQL 中,因此有关它的信息很容易映射到简单的关系结构,几乎以实体-属性-值的表示形式。例如,实体“表”-属性“名称”-值“点击流”。

Hive Metastore 将类型从底层存储投射到支持的 HSQL 类型,并存储有关底层数据位置的信息。这些数据存储在 Metastore 数据库中,通常是 MySQL、Postgres 或 Derby。

但是数据库本身只是一个实现细节。它的模式或多或少是流动的,它随着时间的推移而变化,没有任何事先通知。(好吧,如果您关注 hive-dev 邮件列表,您可以跟踪更改,但很少有人这样做。)该数据库仅用于一个目的:为 Thrift 服务器提供数据。

Metastore Thrift 服务器是其 Metastore 客户端的主要入口点。让我们暂时关注 Thrift。Thrift是一个 RPC 协议,最初由 Facebook 创建,现在由 Apache 软件基金会维护。任何一天我都会选择 Thrift 而不是非常流行的 gRPC,原因如下:

  1. 它有类型的异常。因此,您不仅可以从 RPC 内部获得随机异常,还可以实际了解发生了什么问题。
  2. 它有一个丰富的标准库(如果可以调用一组预定义的类型)。
  3. 与 gRPC 一样,它支持多种语言,但在我看来,Thrift 的生成器比 gRPC 的生成器生成的代码要好得多。

这个 Thrift 协议由 Facebook 开发,以满足其大数据生态系统的需求,但这也使其非常适合 Hive,在我看来,也适合其他生态系统。

因此,回到 Thrift 服务器,它是一个相当简单的应用程序,其 API 可让您获取有关 Hive Metastore 知道的数据源的必要信息。它是有类型的,但您仍然可以将它与 Python 等动态类型语言一起使用,Thrift 的代码生成器也支持这些语言。

架构的下一部分是……没有更多的部分了!包括 Hive 本身在内的所有客户端仅与 Hive Metastore thrift 服务器通信。Thrift 服务器非常简单,我们可以使用 Thrift 服务器的单个 docker 容器启动它(假设我们将使用 Derby 作为 Metastore 数据库)。当然,这对于生产环境来说是一种罕见的设置,但它对于实验来说非常方便。

第三方系统的使用

最好的部分来了:许多新系统只需要了解 Thrift 服务器并与之通信。他们不需要 Hive 或任何其他查询引擎来访问数据。

这种系统的一个例子是Trino,它是 PrestoDB的衍生产品,由一家名为Starburst的独立公司开发。使用 Trino 时,不需要安装 Hive。只有 Hive Metastore 就足够了。Trino 在 Docker 容器中启动也非常简单——只需一个命令即可。

LakeFS也是如此,该系统允许您使用类似 Git 的界面来处理数据湖。当您需要在不同的数据源之间快速切换时以及在许多其他情况下,这可能非常有用。在 Hive Metastore 的帮助下,集成非常简单。

批评

像大多数事情一样,Hive Metastore 并不完美。来自lakeFS 的Oz Katz 写了一篇关于Metastore 局限性的精彩文章。他认为 Metastore 存在三个问题:

  1. “节俭。” 虽然 Thrift 不像 HTTP 那样普及,但它是建立在 HTTP 之上的,所以我认为许多流行的工具都可以很好地使用它(例如 HAProxy)。但确实,您不能仅仅从 Thrift 流量中捕获一条随机消息并理解它在说什么。我同意这是一个小缺点。
  2. “Metastore 只是 RDBMS 之上的一个薄层。” 如果我正确理解这个论点,由于 Hive 的分区方案和关系数据库的缺点,非常大的 Hive 表在使用 Metastore 时会让人头疼。同样,这是一个有效的批评,但在这里我应该注意,我们实际上不必将 Metastore 与 Hive 一起使用。我们也可以将它与不同的工具一起使用,如果我们有其他满足我们需求的解决方案,我们也不必使用分区。
  3. “泄漏的抽象。” 这是一个非常有效的批评,很难反驳。不过,我不知道有任何抽象根本不会泄漏。是的,Metastore 可能比其他一些更容易泄漏,但有时您可以将这个问题转化为在需要时进行微调的机会。当然,这只有在您确切知道自己在做什么时才有可能,但我想说这适用于那里的任何工具。

概括

今天我们讨论了 Hive Metastore 是什么,它是如何工作的,以及它的用途。我们简要概述了几种使用 Hive Metastore 的产品,并讨论了该技术的一些优缺点。

那么,为什么我们最终需要 Hive Metastore 呢?因为它存储了有关我们数据结构及其位置的所有信息。这就是为什么许多大公司都在使用它,效果很好的原因。

我们很清楚,我们的许多客户都在使用 Hive Metastore 或其 Amazon 实施 Glue Data Catalog。它们都是很棒的工具,用户应该拥有一个工具,它可以帮助他们以更有效的方式使用 Metastore,而不仅仅是使用 Hive 查询事物。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 浪尖聊大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Hadoop 生态里,为什么 Hive 活下来了?
Apache Hive 在 2010 年作为 Hadoop 生态系统的一部分崭露头角,当时 Hadoop 是一种新颖而创新的大数据分析方法。Hive 的功能就是实现 Hadoop 的 SQL 接口。它的架构包括两个主要服务:一是查询引擎:负责执行 SQL 语句;二是元存储:负责在 HDFS 中将数据收集虚拟化为表。
深度学习与Python
2021/10/13
5580
Hive篇--搭建Hive集群
Hive中搭建分为三中方式 a)内嵌Derby方式 b)Local方式 c)Remote方式 三种方式归根到底就是元数据的存储位置不一样。
LhWorld哥陪你聊算法
2018/09/13
1.1K0
Hadoop的数据仓库框架-Hive 基础知识及快速入门
Hive是一个构建在Hadoop上的数据仓库框架。最初,Hive是由Facebook开发,后来移交由Apache软件基金会开发,并作为一个Apache开源项目。
数据猿
2019/09/12
1.1K0
Hadoop的数据仓库框架-Hive 基础知识及快速入门
大数据时代的技术hive:hive介绍
  我最近研究了hive的相关技术,有点心得,这里和大家分享下。   首先我们要知道hive到底是做什么的。下面这几段文字很好的描述了hive的特性:   1.hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。   2.Hive是建立在 Hadoo
老白
2018/03/19
1.1K0
大数据时代的技术hive:hive介绍
Hive架构和原理(图形化通俗易懂)
Hive:以下内容为V3.1版本 ; Hive是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类 SQL 查询功能。Hive 处理的数据存储在 HDFS,分析数据底层的实现是 MapReduce,可以简单理解Hive是Hadoop的客户端,提交sql做分析。
lovelife110
2022/06/16
1.4K0
Hive架构和原理(图形化通俗易懂)
大数据技术之_08_Hive学习_01_Hive入门+Hive安装、配置和使用+Hive数据类型
  Hive:由Facebook开源用于解决海量结构化日志的数据统计(分析框架)。   Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能。 本质是:将HQL转化成MapReduce程序。
黑泽君
2019/03/08
9550
大数据技术之_08_Hive学习_01_Hive入门+Hive安装、配置和使用+Hive数据类型
轻松驾驭Hive数仓,数据分析从未如此简单!
直接与文件系统交互,仅是Spark SQL数据应用常见case之一。Spark SQL另一典型场景是与Hive集成、构建分布式数仓。
JavaEdge
2023/10/17
5050
轻松驾驭Hive数仓,数据分析从未如此简单!
【Hive】Hive 的基本认识
Hive 是由 Facebook 开源的基于 Hadoop 的数据仓库工具,用于解决海量「结构化日志」的数据统计。
阿泽 Crz
2020/07/21
1.5K0
【Hive】Hive 的基本认识
知乎 Hive Metastore 实践:从 MySQL 到 TiDB
Apache Hive 是基于 Apache Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并且提供了 Hive SQL 进行查询和分析,在离线数仓中被广泛使用。
PingCAP
2020/07/10
3.1K1
HIVE入门_2
用户1147754
2018/01/02
1.6K0
HIVE入门_2
CDP中Hive Metastore介绍
Hive Metastore(HMS)是一项单独的服务,不是Hive的一部分,甚至不必位于同一集群上。HMS将元数据存储在Hive、Impala、Spark和其他组件的后端。
大数据杂货铺
2020/10/29
1.9K0
CDP中Hive Metastore介绍
Hive MetaStore 在快手遇到的挑战与优化
导读:快手基于Hive构建数据仓库,并把Hive的元数据信息存储在MySql中,随着业务发展和数据增长,一方面对于计算引擎提出了更高的要求,同时也给Hive元数据库的服务稳定性带来了巨大的挑战。本文将主要介绍Hive MetaStore服务在快手的挑战与优化,包括:
create17
2021/04/07
9730
Hive MetaStore 在快手遇到的挑战与优化
Hive Metastore 使用MySQL存储
Hive的metastore默认是存储在Derby数据库里面,只能用于单元测试,并且一次只能有一个进程连接到metastore的数据库。所以在实际的应用中,需要将metastore存储在一些关系型数据库里面。
ZHANGHAO
2018/11/16
1.8K0
Hive Metastore 使用MySQL存储
Hive深入浅出
Hive is a data warehouse infrastructure built on top of Hadoop. It provides tools to enable easy data ETL, a mechanism to put structures on the data, and the capability to querying and analysis of large data sets stored in Hadoop files. Hive defines a simple SQL-like query language, called QL, that enables users familiar with SQL to query the data. At the same time, this language also allows programmers who are familiar with the MapReduce fromwork to be able to plug in their custom mappers and reducers to perform more sophisticated analysis that may not be supported by the built-in capabilities of the language.
黄规速
2022/04/15
5020
Hive深入浅出
Hive概念以及架构介绍
Hive架构包括如下组件:CLI(command line interface)、JDBC/ODBC、Thrift Server、Hive WEB Interface(HWI)、Metastore和Driver(Complier、Optimizer和Executor)
俺也想起舞
2019/07/24
1.2K0
EMR(弹性MapReduce)入门之数据仓库工具Hive组件使用(十一)
Apache Hive数据仓库软件可以使用SQL方便地阅读、编写和管理分布在分布式存储中的大型数据集。结构可以投射到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive。
小司机带你入门EMR
2020/02/13
2K0
EMR(弹性MapReduce)入门之数据仓库工具Hive组件使用(十一)
Hadoop基础教程-第12章 Hive:进阶(12.4 Hive Metastore)(草稿)
程裕强
2018/01/02
1.5K0
当我们在学习Hive的时候在学习什么?「硬刚Hive续集」
我在之前的硬刚系列《大数据方向另一个十年开启 |《硬刚系列》第一版完结》中写过一个《硬刚Hive | 4万字基础调优面试小总结》,这个小结里基本涵盖了你所看过的关于Hive的常见的知识和面试八股文。
王知无-import_bigdata
2021/07/30
7280
hive metastore 3.0介绍
数据库、表、函数等 Hive 对象的定义存储在 Metastore 中。 根据系统的配置方式,统计数据和授权记录也可能存储在那里。 Hive 和其他执行引擎在运行时使用此数据来确定如何解析、授权和有效执行用户查询。
从大数据到人工智能
2022/01/19
2.1K0
Hive元数据服务MetaStore
MetaSore 是 Hive 元数据存储的地方。Hive 数据库、表、函数等的定义都存储在 Metastore 中。根据系统配置方式,统计信息和授权记录也可以存储在此处。Hive 或者其他执行引擎在运行时使用此数据来确定如何解析,授权以及有效执行用户查询。
smartsi
2020/09/21
10.1K0
相关推荐
Hadoop 生态里,为什么 Hive 活下来了?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档