1. 概念

MetaSore 是 Hive 元数据存储的地方。Hive 数据库、表、函数等的定义都存储在 MetaStore 中。根据系统配置方式,统计信息和授权记录也可以存储在这。Hive 或者其他执行引擎在运行时可以使用这些数据来确定如何解析,授权以及有效执行用户的查询。MetaStore 分为两个部分:服务和后台数据的存储。

2. 配置参数

这里只会展示与 MetaStore 相关的配置参数,与 MetaSote 不相关的配置参数可以在这查阅。

配置参数 参数说明
hive.metastore.local 本地或远程元数据存储。该配置项从 Hive 0.10 废弃,而是通过 hive.metastore.uris 来判断,如果为空,则假定为本地模式,否则为远程模式。
hive.metastore.uris 远程元数据存储的 Thrift URI。元数据服务客户端通过该配置连接远程元数据。
javax.jdo.option.ConnectionURL 元数据存储的 JDBC 连接 URL
javax.jdo.option.ConnectionDriverName 元数据存储的 JDBC 驱动类
javax.jdo.option.ConnectionUserName 元数据存储数据库用户名
javax.jdo.option.ConnectionPassword 元数据存储数据库密码
hive.metastore.warehouse.dir 数据仓库存储位置

Hive MetaSote 是无状态的,因此可以有多个实例来实现高可用性。使用 hive.metastore.uris 可以指定多个远程 MetaStore。Hive 将默认使用列表中的第一个,但会在连接失败时随机选择一个,并尝试重新连接。

3. 部署模式

MetaStore 分为三种部署模式:内嵌模式、本地模式以及远程模式。

3.1 内嵌 MetaStore

默认情况下,MetaStore 服务和 Hive 服务运行在同一个 JVM 中,包含一个内嵌的以本地磁盘作为存储的 Derby 数据库实例。

使用内嵌的 MetaStore 是 Hive 入门最简单的方法。但是,每次只有一个内嵌的 Derby 数据库可以访问某个磁盘上的数据库文件,这就意味着一次只能为每个 MetaStore 打开一个 Hive 会话。如果试着启动第二个会话,在它试图连接 MetaStore 时,会得到错误信息。因此它并不是一个实际的解决方案,并不适合在生产环境使用,但对于单元测试来说效果很好。

<!-- 本地模式不需要配置 -->
<property><name>hive.metastore.uris</name><value/>
</property><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.warehouse.dir</name><value>/user/hive/warehouse</value>
</property>

3.2 本地 MetaStore

如果要支持多会话(以及多租户),需要使用一个独立的数据库。这种配置方式成为本地配置,因为 MetaStore 服务仍然和 Hive 服务运行在同一个进程中,但连接的却是另一个进程中运行的数据库,在同一台机器上或者远程机器上。

对于独立的 MetaStore,MySQL 是一种很受欢迎的选择。本实例我们 MySQL 为例,具体看看如何配置:

<!-- 本地模式不需要配置 -->
<property><name>hive.metastore.uris</name><value/>
</property><property>  <name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive_meta?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>root</value>
</property>  <property>  <name>javax.jdo.option.ConnectionPassword</name><value>root</value>
</property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value>
</property><property><name>hive.metastore.port</name><value>9083</value>
</property>

在本地模式下不需要配置 hive.metastore.uris,默认为空表示是本地模式。

如果选择 MySQL 作为 MetaStore 存储数据库,需要提前将 MySQL 的驱动包拷贝到 $HIVE_HOME/lib目录下。

JDBC 连接驱动类视情况决定选择 com.mysql.cj.jdbc.Driver 还是 com.mysql.jdbc.Driver。

3.3 远程 MetaStore

在远程模式下,MetaStore 服务和 Hive 服务运行在不同进程中。CLI、HiveServer2、HCatalog 以及其他进程使用 Thrift API(使用 hive.metastore.uris 属性配置)与 MetaStore 服务通信。MetaStore 服务通过 JDBC 与 MetaStore 数据库进行通信(使用 javax.jdo.option.ConnectionURL 属性配置):

在这种情况下,我们还可以单独部署一台 MetaStore 服务器,以提供更高可用性。这也可以有更好的可管理性/安全性,因为数据库层可以完全防火墙关闭。客户端不再需要与每个 Hiver 用户共享数据库凭据即可访问元存储数据库。

Hive MetaStore 服务端配置:

<property>  <name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive_meta?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>root</value>
</property>  <property>  <name>javax.jdo.option.ConnectionPassword</name><value>root</value>
</property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value>
</property><property><name>hive.metastore.port</name><value>9083</value>
</property>

Hive MetaStore 客户端配置:

<!-- 远程模式需要配置 9083 是默认监听端口号 -->
<property>  <name>hive.metastore.uris</name><value>thrift://xxx:9083</value>
</property><property>  <name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value>
</property>

4. 启动服务

我们可以通过执行以下命令来启动 MetaStore 服务:

hive --service metastore -p 9083 &

如果我们在 hive-site.xml 配置文件中指定了 hive.metastore.uris 的 port:

<property><name>hive.metastore.uris</name><value>thrift://xxx:9083</value>
</property>

我们就可以不指定端口进行启动:

hive --service metastore &

注意客户端中的端口配置需要和启动监听的端口一致。

参考:

  • Hadoop 权威指南
  • AdminManual Metastore Administration

Hive 元数据服务 MetaStore相关推荐

  1. Impala自动同步Hive元数据

    在Cloudera官方文档 Impala Metadata Management,找到了CDH平台中Impala自动同步Hive元数据的配置方法. 文档中提示这是CDH6.3/Impala3.3的一个 ...

  2. 新的比较详细的hive安装教程,包含:hadoop的安装配置,hive安装详细教程,大数据下hive详细配置和简单使用和hive元数据迁移相关安装配置操作

    简介:这是大数据里安装hive比较详细的教程,包括安装hive时hadoop的相关配置,hive安装,hive 之后的mysql安装,hive的元素配置到mysql相关配置,hive常见属性的相关配置 ...

  3. hive 启动服务命令及连接

    启动元数据服务 ./hive --service metastore & 启动server ./hive --service hiveserver2 -hiveconf hive.server ...

  4. hive安装测试及Hive 元数据的三种存储方式

    一  hive安装测试 1.下载解压 tar -xf hive-x.y.z.tar.gz(本次安装为hive-0.8.1.tar.gz) 将解压后的hive-0.8.1文件放在系统的/home/had ...

  5. 数据湖元数据服务的实现和挑战

    简介: 数据湖元数据服务为大数据而生,为互通生态而生,期望后续继续完善其服务能力和支撑更多的大数据引擎,通过开放的服务能力.存储能力.统一的权限及元数据管理能力,为客户节省管理/人力/存储等各项成本, ...

  6. Atlas2.1.0实战:安装、配置、导入hive元数据、编译排坑

    背景 随着公司数据仓库的建设,数仓hive表愈来愈多,如何管理这些表? 经调研,Atlas成为了我们的选择对象,本文是Atlas实战记录,感谢尚硅谷的学习视频 1.Atlas概述 1.1 Apache ...

  7. Hive元数据信息获取

    如何获取Hive库表字段分区信息 1 获取Hive的所有数据库信息 如果注释字段中文乱码,则需要修改字符集(正常情况都需要修改). SELECT`NAME` NAME,ANY_VALUE ( `DES ...

  8. Apache Atlas管理Hive元数据

    部署好Atlas服务后,重点是对Atlas的使用,这里对Atlas管理Hive元数据做简单总结. Hive元数据导入 全量导入 bash /usr/hdp/2.6.4.0-91/atlas/hook- ...

  9. clodera scm 数据库表信息 和 hive元数据整理

    一. cloudera 会将页面的数据存储到 SCM 中 其表结构梳理(对应生产BAOFOO_SCM) AUDITS 登录信息.服务,角色重启.配置更改 PROCESSES 进程信息.这里面有很多信息 ...

最新文章

  1. JAVA_OA管理系统(二)番外篇:IoC原理
  2. ng linux 存储 配置,linux学习之--安装一套OCS inventory-ng 环境
  3. 分布式实物实现方式_这是您完成实物产品设计任务的方式
  4. mysql卸载时弹框,win10卸载mysql5安装mysql8
  5. HDU 1217 Arbitrage (Floyd + SPFA判环)
  6. python-循环-打印菱形图案
  7. lambda 复制数组
  8. I00009 用1生成回文数
  9. python3安装numpy命令_Python3.8如何安装Numpy
  10. linux升级显卡vbios,【系列教程】显卡VBIOS刷新教程
  11. “红黑树”,我一脸懵逼......
  12. WIN7家庭版升级到旗舰版操作
  13. 2020年高效搬砖必备的IDEA插件(附安装包)
  14. 一个超好看的音乐网站设计与实现(HTML+CSS)
  15. webservice:com.sun.xml.internal.ws.server.ServerRtException: [failed to localize]
  16. 华为鲲鹏服务器安装操作系统,华为鲲鹏服务器安装docker-compose及运用
  17. Docker 生产环境之安全性 - 适用于 Docker 的 AppArmor 安全配置文件
  18. 软件加密系统Themida应用程序保护指南(七):外挂插件
  19. 使用pycharm 通过Excel表画图
  20. 中标麒麟 NeoKylin 5.1 安装C++环境

热门文章

  1. ubuntu20.04 Apache2.4配置C/C++ CGI环境
  2. [Servlet]HttpServletResponse设置响应标头、缓冲区、语系编码、MIME
  3. 领域驱动设计(3) DDD设计流程
  4. mysql 查找相似数据_跳槽必备:MySQL高频面试题,都在这了!
  5. Python数据分析基础: 异常值检测和处理
  6. 计算机主机箱安装,教你自己动手更换电脑主机箱,装机不求人!
  7. 万字详解数据安全关键技术之数据脱敏
  8. C++大作业——教师管理系统
  9. 华硕笔记本预装win8改装win7过程详述
  10. 网络时间同步服务器的应用