什么是 Hive Metastore (HMS)?如何区分托管 Metastore 与外部 Metastore?

简介: 【8月更文挑战第12天】

Apache Hive 是一个基于 Hadoop 的数据仓库工具,它提供了一个类似于 SQL 的查询语言,用于大规模数据处理。Hive Metastore(HMS)是 Hive 架构中的关键组件,负责存储和管理表的元数据。了解 Hive Metastore 的功能和区分托管 Metastore 与外部 Metastore 的概念,对于高效管理和优化 Hive 环境至关重要。本文将详细介绍 Hive Metastore 的功能,并深入探讨托管 Metastore 与外部 Metastore 的区别。

1. 什么是 Hive Metastore (HMS)?

Hive Metastore 是一个中央元数据仓库,用于存储 Hive 表及其相关信息的元数据。这些元数据包括表的结构、分区、列数据类型、表的存储位置、以及表的统计信息等。Hive Metastore 的主要作用是提供一个统一的视图,帮助 Hive 查询引擎和其他工具在查询和操作数据时能够快速找到和理解数据的结构和位置。

1.1 功能

  • 元数据存储:Hive Metastore 存储所有 Hive 表的结构信息,如表的列名、数据类型、分区信息等。
  • 查询优化:Hive 查询引擎利用 Metastore 中的统计信息来优化查询执行计划,从而提高查询性能。
  • 数据位置管理:Metastore 记录每个表的数据存储位置,这使得 Hive 能够快速定位数据文件。
  • 支持多种数据格式:Metastore 能够管理多种数据格式的信息,如 ORC、Parquet、Avro 等。

1.2 组件

  • HiveServer2:提供与 Hive Metastore 进行交互的服务端组件。
  • Client:与 HiveServer2 进行交互的客户端工具,如 Hive CLI、Beeline 等。
  • Metastore Server:负责处理与 Hive Metastore 的所有元数据相关的请求。

2. 托管 Metastore 与外部 Metastore

Hive Metastore 可以在不同的环境中部署和管理,主要有两种模式:托管 Metastore 和外部 Metastore。这两种模式在功能和管理上存在显著差异。

2.1 托管 Metastore

托管 Metastore 是指 Hive 由集成的 Metastore 进行管理,这种模式下的 Metastore 是由 Hive 自身管理和配置的,通常由 Hive 提供默认的数据库(如 Derby)进行存储。托管 Metastore 的主要特点如下:

  • 集成性:托管 Metastore 通常与 Hive 紧密集成,由 Hive 安装包自带,配置和管理较为简单。
  • 默认数据库:Hive 提供了默认的内嵌数据库(如 Apache Derby),用于存储元数据。该数据库适用于开发和测试环境,但不适合生产环境。
  • 简化管理:由于 Metastore 与 Hive 完全集成,用户无需配置额外的数据库管理系统(DBMS),减少了管理复杂性。
  • 限制性:内嵌数据库不适合大规模的生产环境,因为它不具备高并发处理能力和数据恢复功能。对于生产环境,通常需要迁移到外部数据库以满足性能和可靠性的要求。

2.2 外部 Metastore

外部 Metastore 是指 Hive 使用独立的数据库(如 MySQL、PostgreSQL、Oracle)来管理和存储元数据。这种模式下,Metastore 与 Hive 是分离的,外部数据库负责存储和管理所有的元数据。外部 Metastore 的主要特点如下:

  • 独立性:外部 Metastore 由独立的数据库管理,Hive 与数据库之间通过配置连接。用户可以选择性能更高、可靠性更强的数据库系统。
  • 高可用性:外部数据库通常具备更好的高可用性、备份和恢复能力,适合生产环境的需求。
  • 扩展性:使用外部数据库可以更好地支持大规模的数据存储和高并发访问,满足生产环境的性能需求。
  • 管理复杂性:与托管 Metastore 相比,外部 Metastore 需要额外的数据库配置和管理工作,包括数据库安装、配置、维护和监控等。

3. 如何选择 Metastore 模式

选择适当的 Metastore 模式取决于具体的使用场景和需求:

  • 开发和测试环境:对于开发和测试环境,托管 Metastore 是一个方便且易于管理的选择。它可以简化环境配置,减少部署和管理的复杂性。
  • 生产环境:对于生产环境,推荐使用外部 Metastore。外部数据库提供更高的性能、可靠性和扩展性,能够满足生产环境对高并发访问和数据恢复的需求。

4. 配置 Hive Metastore

无论是托管 Metastore 还是外部 Metastore,都需要进行相应的配置:

  • 托管 Metastore 配置

    • 通常不需要额外的配置,Hive 会自动使用内嵌数据库(如 Derby)进行管理。
    • 适用于开发和测试环境,不适合大规模生产使用。
  • 外部 Metastore 配置

    • 数据库选择:选择适合的数据库系统,如 MySQL、PostgreSQL、Oracle 等。
    • 数据库配置:安装和配置数据库,创建 Hive Metastore 所需的数据库和用户。
    • Hive 配置:在 Hive 配置文件中(如 hive-site.xml)设置数据库连接参数,包括 JDBC URL、用户名、密码等。
    • 初始化 Metastore:使用 Hive 提供的工具初始化外部 Metastore 数据库,创建必要的表和索引。

5. 总结

Hive Metastore (HMS) 是 Hive 生态系统中的关键组件,负责存储和管理表的元数据。根据使用环境的不同,Hive Metastore 可以以托管 Metastore 或外部 Metastore 的形式存在。托管 Metastore 是由 Hive 自身管理的,适用于开发和测试环境;而外部 Metastore 则使用独立的数据库进行管理,适合生产环境。选择合适的 Metastore 模式可以提高系统的性能、可靠性和管理效率。通过了解这两种模式的特点和配置方式,可以更好地管理和优化 Hive 环境,实现高效的大数据处理。

目录
相关文章
|
SQL 缓存 分布式计算
SparkSQL与Hive metastore Parquet转换
Spark SQL为了更好的性能,在读写Hive metastore parquet格式的表时,会默认使用自己的Parquet SerDe,而不是采用Hive的SerDe进行序列化和反序列化
SparkSQL与Hive metastore Parquet转换
|
SQL 存储 分布式计算
CDP的Hive3系列之Hive Metastore介绍
CDP的Hive Metastore (HMS) 是一种服务,用于在后端 RDBMS(例如 MySQL 或 PostgreSQL)中存储与 Apache Hive 和其他服务相关的元数据。Impala、Spark、Hive 和其他服务共享元存储。与 HMS 的连接包括 HiveServer、Ranger 和代表 HDFS 的 NameNode。
1874 0
CDP的Hive3系列之Hive Metastore介绍
|
SQL 分布式计算 Java
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
浅析 hive udaf 的正确编写方式- 论姿势的重要性-系列四-如何直接访问metastore service(附源码)
|
SQL 运维 大数据
如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
如何获取大数据平台 CDH 中 hive metastore db 的用户名和密码?
|
SQL 存储 大数据
关于数据仓库的Hive的Hive架构的MetaStore元数据服务
随着大数据技术的不断发展,数据仓库成为了企业中不可或缺的一部分。而Hive作为一种开源的数据仓库系统,因其易于使用和高效处理等特点,成为了许多企业的首选。然而,对于普通用户来说,直接使用Hive的命令行工具进行操作并不方便。因此,开发者社区中涌现出了大量的Hive GUI工具,其中最为流行的就是Web GUI工具。
300 2
|
SQL 存储 缓存
hive metastore 3.0介绍
我们说到Hive 3.0.0版本开始,其单独提供了standalone metastore服务以作为像presto等处理引擎的元数据管理中心。
|
SQL 存储 分布式计算
Hive 2.1.1 MetaException(在metastore中找不到消息:版本信息)
Hive 2.1.1 MetaException(在metastore中找不到消息:版本信息)
348 0
|
SQL HIVE
解决启动Hive报错Hive Schema version 2.3.0 does not match metastore‘s schema version 1.2.0 Metastore is not
解决启动Hive报错Hive Schema version 2.3.0 does not match metastore‘s schema version 1.2.0 Metastore is not
205 0
|
SQL 分布式计算 Java
spark 对于hive metastore的兼容性随笔--通过classloader实现
spark 对于hive metastore的兼容性随笔--通过classloader实现
476 0
|
SQL 分布式计算 数据管理
spark SQL配置连接Hive Metastore 3.1.2
Hive Metastore作为元数据管理中心,支持多种计算引擎的读取操作,例如Flink、Presto、Spark等。本文讲述通过spark SQL配置连接Hive Metastore,并以3.1.2版本为例。
spark SQL配置连接Hive Metastore 3.1.2