首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【详解】Hivemetastore三种配置方式

【详解】Hivemetastore三种配置方式

原创
作者头像
大盘鸡拌面
发布2025-11-27 10:42:44
发布2025-11-27 10:42:44
2390
举报

Hivemetastore三种配置方式

Apache Hive 是一个基于 Hadoop 的数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的 SQL 查询功能,可以将 SQL 语句转换为 MapReduce 任务进行运行。其核心组件之一是 Hive Metastore,用于存储元数据信息,如表结构、分区信息等。本文将介绍 Hivemetore 的三种配置方式。

1. 内嵌式(Embedded Mode)

在内嵌模式下,Hive Metastore 和 Hive 客户端运行在同一进程中,这种方式适合于测试环境或小型部署。在这种模式下,Metastore 使用 Derby 数据库作为后端存储,默认情况下,Derby 数据库是内嵌的,不需要额外的配置。

配置步骤
  1. 安装 Hive:确保已经正确安装了 Hive。
  2. 修改 hive-site.xml​:
代码语言:javascript
复制
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
</property>
  1. 启动 Hive
代码语言:javascript
复制
hive

2. 本地模式(Local Mode)

在本地模式下,Hive Metastore 服务与 Hive 客户端分开运行,但仍然在同一台机器上。这种方式适用于需要更高性能的开发或测试环境。Metastore 可以使用 MySQL、PostgreSQL 等关系型数据库作为后端存储。

配置步骤
  1. 安装数据库:选择并安装 MySQL 或 PostgreSQL。
  2. 创建数据库和用户
  • 对于 MySQL:
代码语言:javascript
复制
CREATE DATABASE metastore;
CREATE USER 'hive'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON metastore.* TO 'hive'@'localhost';
FLUSH PRIVILEGES;
  • 对于 PostgreSQL:
代码语言:javascript
复制
CREATE DATABASE metastore;
CREATE USER hive WITH PASSWORD 'password';
GRANT ALL PRIVILEGES ON DATABASE metastore TO hive;
  1. 修改 hive-site.xml​:
代码语言:javascript
复制
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>
  1. 启动 Metastore 服务
代码语言:javascript
复制
hive --service metastore &
  1. 启动 Hive 客户端
代码语言:javascript
复制
hive

3. 远程模式(Remote Mode)

在远程模式下,Hive Metastore 服务运行在独立的服务器上,通过网络与 Hive 客户端通信。这种方式适用于生产环境,可以提高系统的可扩展性和可靠性。

配置步骤
  1. 在 Metastore 服务器上安装数据库:选择并安装 MySQL 或 PostgreSQL。
  2. 创建数据库和用户:同本地模式中的步骤。
  3. 修改 hive-site.xml​:
  • 在 Metastore 服务器上:
代码语言:javascript
复制
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>password</value>
</property>
  • 在 Hive 客户端上:
代码语言:javascript
复制
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://<metastore_server_ip>:9083</value>
</property>
  1. 启动 Metastore 服务
代码语言:javascript
复制
hive --service metastore &
  1. 启动 Hive 客户端
代码语言:javascript
复制
hive

Hive Metastore 是 Apache Hive 的核心组件之一,用于存储元数据信息。Hive Metastore 可以配置为三种不同的模式:Embedded Metastore、Local Metastore 和 Remote Metastore。下面将分别介绍这三种配置方式,并提供相应的示例代码。

1. Embedded Metastore

在 Embedded Metastore 模式下,Hive Metastore 与 Hive Server 运行在同一进程中,适用于开发和测试环境。

示例配置文件(hive-site.xml)
代码语言:javascript
复制
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value></value>
    </property>
</configuration>
2. Local Metastore

在 Local Metastore 模式下,Hive Metastore 仍然运行在本地,但使用外部数据库(如 MySQL)来存储元数据。这种模式适合于生产环境中的小型集群。

示例配置文件(hive-site.xml)
代码语言:javascript
复制
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value></value>
    </property>
</configuration>
3. Remote Metastore

在 Remote Metastore 模式下,Hive Metastore 作为一个独立的服务运行,可以被多个 Hive Server 共享。这种模式适合于大型生产环境。

启动 Metastore 服务

首先,需要启动一个独立的 Metastore 服务。可以在 ​​hive-site.xml​​ 中配置 Metastore 服务的地址。

示例配置文件(hive-site.xml)
代码语言:javascript
复制
<configuration>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.cj.jdbc.Driver</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
    </property>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
    </property>
</configuration>
启动 Metastore 服务
代码语言:javascript
复制
$HIVE_HOME/bin/hive --service metastore &
配置 Hive Server

在 Hive Server 的配置文件中,指定 Metastore 服务的地址。

示例配置文件(hive-site.xml)
代码语言:javascript
复制
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
    </property>
</configuration>

Hive Metastore 是 Apache Hive 的核心组件之一,用于存储元数据信息,如数据库、表、列、分区等。Hive Metastore 可以配置为不同的模式来适应不同的使用场景和需求。以下是三种常见的配置方式及其对应的代码示例:

1. 嵌入式(Embedded)模式

在嵌入式模式下,Metastore 和 Hive 服务运行在同一进程中。这种方式适用于小型测试环境或开发环境。

配置文件 ​​hive-site.xml​
代码语言:javascript
复制
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value></value>
        <description>Thrift URI for the metastore service. Used by metastore client to connect to metastore server.</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>
2. 本地(Local)模式

在本地模式下,Metastore 服务运行在本地,但与 Hive 服务分开。这种方式适用于需要更高性能的测试环境或小型生产环境。

启动 Metastore 服务
代码语言:javascript
复制
$HIVE_HOME/bin/hive --service metastore &
配置文件 ​​hive-site.xml​
代码语言:javascript
复制
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
        <description>Thrift URI for the metastore service. Used by metastore client to connect to metastore server.</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>
3. 远程(Remote)模式

在远程模式下,Metastore 服务运行在独立的服务器上,通过网络与 Hive 服务通信。这种方式适用于大型生产环境,可以提供更好的性能和可扩展性。

启动 Metastore 服务

在远程服务器上启动 Metastore 服务:

代码语言:javascript
复制
$HIVE_HOME/bin/hive --service metastore &
配置文件 ​​hive-site.xml​

在 Hive 客户端机器上配置 ​​hive-site.xml​​:

代码语言:javascript
复制
<configuration>
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://remote_host:9083</value>
        <description>Thrift URI for the metastore service. Used by metastore client to connect to metastore server.</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://remote_host:3306/hive_metastore?createDatabaseIfNotExist=true</value>
        <description>JDBC connect string for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>hive_user</value>
        <description>username to use against metastore database</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>hive_password</value>
        <description>password to use against metastore database</description>
    </property>
</configuration>
总结
  • 嵌入式模式:适合小型测试和开发环境,Metastore 和 Hive 服务运行在同一进程中。
  • 本地模式:适合需要更高性能的测试环境或小型生产环境,Metastore 服务运行在本地但与 Hive 服务分开。
  • 远程模式:适合大型生产环境,Metastore 服务运行在独立的服务器上,通过网络与 Hive 服务通信。

每种模式都有其适用的场景,选择合适的配置方式可以更好地满足不同的需求。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Hivemetastore三种配置方式
    • 1. 内嵌式(Embedded Mode)
      • 配置步骤
    • 2. 本地模式(Local Mode)
      • 配置步骤
    • 3. 远程模式(Remote Mode)
      • 配置步骤
      • 1. Embedded Metastore
      • 2. Local Metastore
      • 3. Remote Metastore
      • 1. 嵌入式(Embedded)模式
      • 2. 本地(Local)模式
      • 3. 远程(Remote)模式
      • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档