您的位置:

Metastore:Hive表的元数据仓库

一、概述

Metastore是Hive表的元数据存储仓库,它是一个独立的进程,处理包括表名、列名、数据类型和表的存储位置在内的各种元数据。

Metastore 可能是独立的进程,也可能与 Hive Server 2 在同一个进程中运行。元数据被存储在一个关系型数据库中,如 MySQL 或 PostgreSQL。通过使用 Metastore,用户可以在 Hive 中创建表并访问和管理数据。

二、Metastore的架构

Metastore 的架构主要由以下几个部分组成:

  • Metastore Server
  • Metastore Client
  • 数据库
  • Filesystem

1. Metastore Server

Metastore Server 是 Hive 元数据存储库的主体。它是一个独立的进程,用于管理并处理元数据,支持各种元数据操作,例如创建表、更新表结构和删除表等。Metastore Server 运行在一个单独的 JVM 中,与存储元数据的 RDBMS 直接通信。

2. Metastore Client

Metastore Client 用于管理和处理 Hive 表的元数据。当用户在 Hive 中创建、更新或删除 Hive 表时,Metastore Client 与 Metastore Server 直接通信。Metastore Client 运行在一个单独的 JVM 中,与存储元数据的 RDBMS 直接通信。

3. 数据库

Metastore 使用 MySQL、PostgreSQL、MariaDB、Oracle 或 Derby 等关系型数据库存储 Hive 表的元数据。

4. Filesystem

Filesystem 用于存储 Hive 表的数据。当 Hive 表被创建时,Filesystem 会创建一种数据存储格式和存储位置,并将其存储在 Hive 配置中指定的 HDFS、S3、Azure Blob 存储或本地文件系统中。

三、Metastore的作用

1. 管理 Hive 表的元数据

元数据是描述 Hive 表的信息,包括字段类型、位置、格式等,元数据是 Hive 表的关键。Metastore 负责维护所有 Hive 表的元数据,可以说,没有 Metastore,就没有 Hive。

2. 管理 Hive 表的权限

Metastore 还负责管理表的所有者和权限。在 Hive 中,通过为 Hive 表设置 ACL(访问控制列表),Metastore 可以确定用户或组对 Hive 表的访问权限。

3. 帮助优化 Hive 查询

Metastore 可以为 Hive 表提供统计信息,这些统计信息包括表中记录数、字段数量、字段长度、最小值、最大值等。通过使用这些信息,Hive 可以优化查询并提高查询性能。

4. 支持扩展

Metastore 支持用户定义的表属性和扩展的元数据存储,这意味着用户可以将其自己的元数据存储在 Metastore 中,从而更好地管理和使用他们的 Hive 表。

四、案例:使用Metastore创建Hive表

Hive 的主要作用是让开发人员能够使用 SQL 语言操作 Hadoop,简化 Hadoop 的使用。其中,Metastore 负责维护所有 Hive 表的元数据。

1. 配置Metastore

首先需要配置 Metastore Server,为了演示方便,我们选用MySQL 作为存储 Hive 表元数据的 RDBMS。

创建 MySQL 数据库

CREATE DATABASE metastore_db;

创建 MySQL 用户

CREATE USER 'hiveuser'@'localhost' IDENTIFIED BY 'hivepassword';
GRANT ALL PRIVILEGES ON metastore_db.* TO 'hiveuser'@'localhost';
FLUSH PRIVILEGES;

创建数据库表结构并初始化

在 Hive 安装目录下的 scripts/metastore/upgrade/mysql/ 中有一个脚本 hive-schema-2.1.0.mysql.sql,用它创建数据库表结构。

启动 Metastore Server

执行以下命令启动 Metastore Server,它将绑定在 localhost:9083 端口上:

hive --service metastore

2. 创建Hive表

创建一个名为 employee 的 Hive 表,表有两个字段 ID 和 Name:

CREATE TABLE employee (
    id INT,
    name STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

3. 查看Hive表的元数据

使用 show create table employee 命令查看表的创建语句和元数据:

SHOW CREATE TABLE employee;

4. 修改Hive表的元数据

如果需要修改 Hive 表的元数据,可以使用 ALTER TABLE 命令进行更改,例如:

ALTER TABLE employee ADD age INT;

5. 删除Hive表

如果要删除表,可以使用DROP TABLE命令。运行命令后,Hive 仅删除表的元数据,而不删除表的数据:

DROP TABLE employee;

五、总结

Metastore 是 Hive 表的元数据存储仓库,用于管理 Hive 表的元数据、权限和优化 Hive 查询。Metastore 与 Hive Server 2 独立运行,元数据存储在关系型数据库中,支持用户自定义的表属性和元数据存储扩展。Metastore 是使用 Hive 的关键部分,它简化了 Hadoop 的使用和数据管理。

Metastore:Hive表的元数据仓库

2023-05-23
数据库的笔记mysql,数据库管理系统笔记

2022-11-24
mysql数据库完整笔记(mysql数据库数据)

2022-11-13
python基础学习整理笔记,Python课堂笔记

2022-11-21
java方法整理笔记(java总结)

2022-11-08
重学java笔记,java笔记总结

2022-11-23
印象笔记记录java学习(Java成长笔记)

2022-11-12
python笔记第六天,python第六周笔记

2022-11-21
java学习笔记(java初学笔记)

2022-11-14
java学习的一些基础笔记(java初学笔记)

2022-11-14
java笔记,大学java笔记

2022-11-28
python的用法笔记本(笔记本学python)

2022-11-16
python学习之笔记(python的笔记)

2022-11-10
jsp数据库笔记,jsp写入数据库

本文目录一览: 1、怎么用jsp连接mysql数据库 2、jsp中怎么使用数据库 3、JSP 从数据库中如何取得图片的路径? 怎么用jsp连接mysql数据库 一. 数据库的连接和操作笔记:1.初始化

2023-12-08
最新python学习笔记3,python基础笔记

2022-11-17
java笔记,尚硅谷java笔记

2022-12-01
jsp源码仓库管理系统的简单介绍

本文目录一览: 1、java程序运行方法 我在网上找到一份 仓库管理系统的课程设计,其中包含了java代码,可是我不会运行 2、求一个jsp的超市仓库管理系统源码,带数据库的mysql的,急求啊, 3

2023-12-08
我的mysql数据库学习笔记(mysql数据库菜鸟教程)

2022-11-11
数据仓库设计指南

2023-05-22
5000元笔记本电脑

随着科技的不断发展,笔记本电脑已经成为了现代人生活中必不可少的工具。 随着科技的不断发展,笔记本电脑已经成为人们生活中必不可少的工具。在如今数字化时代的到来,人们对信息的需求也越来越高了,而笔记本作为

2023-12-08