Hive 元数据服务 MetaStore
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相关推荐
- Impala自动同步Hive元数据
在Cloudera官方文档 Impala Metadata Management,找到了CDH平台中Impala自动同步Hive元数据的配置方法. 文档中提示这是CDH6.3/Impala3.3的一个 ...
- 新的比较详细的hive安装教程,包含:hadoop的安装配置,hive安装详细教程,大数据下hive详细配置和简单使用和hive元数据迁移相关安装配置操作
简介:这是大数据里安装hive比较详细的教程,包括安装hive时hadoop的相关配置,hive安装,hive 之后的mysql安装,hive的元素配置到mysql相关配置,hive常见属性的相关配置 ...
- hive 启动服务命令及连接
启动元数据服务 ./hive --service metastore & 启动server ./hive --service hiveserver2 -hiveconf hive.server ...
- hive安装测试及Hive 元数据的三种存储方式
一 hive安装测试 1.下载解压 tar -xf hive-x.y.z.tar.gz(本次安装为hive-0.8.1.tar.gz) 将解压后的hive-0.8.1文件放在系统的/home/had ...
- 数据湖元数据服务的实现和挑战
简介: 数据湖元数据服务为大数据而生,为互通生态而生,期望后续继续完善其服务能力和支撑更多的大数据引擎,通过开放的服务能力.存储能力.统一的权限及元数据管理能力,为客户节省管理/人力/存储等各项成本, ...
- Atlas2.1.0实战:安装、配置、导入hive元数据、编译排坑
背景 随着公司数据仓库的建设,数仓hive表愈来愈多,如何管理这些表? 经调研,Atlas成为了我们的选择对象,本文是Atlas实战记录,感谢尚硅谷的学习视频 1.Atlas概述 1.1 Apache ...
- Hive元数据信息获取
如何获取Hive库表字段分区信息 1 获取Hive的所有数据库信息 如果注释字段中文乱码,则需要修改字符集(正常情况都需要修改). SELECT`NAME` NAME,ANY_VALUE ( `DES ...
- Apache Atlas管理Hive元数据
部署好Atlas服务后,重点是对Atlas的使用,这里对Atlas管理Hive元数据做简单总结. Hive元数据导入 全量导入 bash /usr/hdp/2.6.4.0-91/atlas/hook- ...
- clodera scm 数据库表信息 和 hive元数据整理
一. cloudera 会将页面的数据存储到 SCM 中 其表结构梳理(对应生产BAOFOO_SCM) AUDITS 登录信息.服务,角色重启.配置更改 PROCESSES 进程信息.这里面有很多信息 ...
最新文章
- JAVA_OA管理系统(二)番外篇:IoC原理
- ng linux 存储 配置,linux学习之--安装一套OCS inventory-ng 环境
- 分布式实物实现方式_这是您完成实物产品设计任务的方式
- mysql卸载时弹框,win10卸载mysql5安装mysql8
- HDU 1217 Arbitrage (Floyd + SPFA判环)
- python-循环-打印菱形图案
- lambda 复制数组
- I00009 用1生成回文数
- python3安装numpy命令_Python3.8如何安装Numpy
- linux升级显卡vbios,【系列教程】显卡VBIOS刷新教程
- “红黑树”,我一脸懵逼......
- WIN7家庭版升级到旗舰版操作
- 2020年高效搬砖必备的IDEA插件(附安装包)
- 一个超好看的音乐网站设计与实现(HTML+CSS)
- webservice:com.sun.xml.internal.ws.server.ServerRtException: [failed to localize]
- 华为鲲鹏服务器安装操作系统,华为鲲鹏服务器安装docker-compose及运用
- Docker 生产环境之安全性 - 适用于 Docker 的 AppArmor 安全配置文件
- 软件加密系统Themida应用程序保护指南(七):外挂插件
- 使用pycharm 通过Excel表画图
- 中标麒麟 NeoKylin 5.1 安装C++环境
热门文章
- ubuntu20.04 Apache2.4配置C/C++ CGI环境
- [Servlet]HttpServletResponse设置响应标头、缓冲区、语系编码、MIME
- 领域驱动设计(3) DDD设计流程
- mysql 查找相似数据_跳槽必备:MySQL高频面试题,都在这了!
- Python数据分析基础: 异常值检测和处理
- 计算机主机箱安装,教你自己动手更换电脑主机箱,装机不求人!
- 万字详解数据安全关键技术之数据脱敏
- C++大作业——教师管理系统
- 华硕笔记本预装win8改装win7过程详述
- 网络时间同步服务器的应用