Hive的Metastore三种配置方式

这篇具有很好参考价值的文章主要介绍了Hive的Metastore三种配置方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

metastore 是 Hive 元数据的集中存放地。metastore 元数据存储主要体现在两个方面:服务和后台数据的存储。元数据包含用 Hive 创建的 database、table 等的元信息。元数据存储在关系型数据库中。如 Derby、MySQL 等。

客户端连接 metastore 服务,metastore 再去连接 MySQL 数据库来存取元数据。有了 metastore 服务,就可以有多个客户端同时连接,而且这些客户端不需要知道 MySQL 数据库的用户名和密码,只需要连接 metastore 服务即可。

一 、内嵌配置

默认情况下,metastore 服务和 Hive 的服务运行在同一个 JVM 中,包含了一个内嵌的以本地磁盘作为存储的Derby( Hive 自带的数据库)数据库实例。同时,这种配置也被称为内嵌配置。但是这种方式的不好之处就在于每次只有一个内嵌的 Derby 数据库可以访问某个磁盘上的数据文件,也就是说一次只能为每个 metastore 打开一个 hive 会话。如果尝试连接多个,会报错。这样效率很低。

二、本地配置

如果要支持多会话,或者多用户的话,需要使用一个独立的数据库(比如 mysql 比较常用),这种配置方式称为本地 metastore 配置。虽然这种方式 Hvie 服务和 Metastore 服务仍然在一个 JVM 进程中,但连接的却是另外一个进程中运行的数据库,在同一台机器上或者远程机器上。任何 JDBC 兼容的数据库都可以通过 javax.jdo.option.* 配置属性来供 metastore 使用。

这种安装方式和嵌入式的区别在于,不再使用内嵌的Derby作为元数据的存储介质,而是使用其他数据库比如MySQL来存储元数据。
hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以同一台机器,也可以在远程机器上。
这种方式是一个多用户的模式,运行多个用户client连接到一个数据库中。这种方式一般作为公司内部同时使用Hive。
每一个用户必须要有对MySQL的访问权利,即每一个客户端使用者需要知道MySQL的用户名和密码才行。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive_remote/warehouse</value>
</property>
<property>
  <name>hive.metastore.local</name>
  <value>true</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost/hive_remote?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>
</configuration>

三、远程配置

还有一种配置是远程 metastore 配置,这种配置情况下,一个或多个 metastore 服务器和 Hive 服务运行在不同的进程中。这样一来,数据库层可以完全置于防火墙后,客户端则不需要数据库凭证(密码账号),从而提供了更好的可管理性和安全。可以通过 hive.metastore.uris 设置为 metastore 服务器 URI(如果有多个服务器,可以用逗号分割),把 hive 服务设为使用远程 metastore 服务器的URI的格式为:thrift://host:port。

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://192.168.1.214:3306/hive_remote?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>
<property>
  <name>hive.metastore.local</name>
  <value>false</value>
</property>
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://192.168.1.188:9083</valu>
</property>
</configuration>

总结:

本地模式和远程模式的区别:本地模式不需要单独起metastore服务,用的是跟hive在同一个进程里的metastore服务。

远程模式需要单独起metastore服务,然后每个客户端都在配置文件里配置连接到该metastore服务。远程模式的metastore服务和hive运行在不同的进程里。服务端指的是Metastore服务所在的机器,即安装metastore的机器。文章来源地址https://www.toymoban.com/news/detail-485336.html

到了这里,关于Hive的Metastore三种配置方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Hive Metastore 表结构

    Hive MetaStore 的ER 图如下。 部分表结构和说明。 CTLGS(CATALOGS) catalogs 可以隔离元数据。默认只有1行。一个 CATALOG 可以有多个数据库。 记录示例 DBS(数据库表) 每个数据库一条记录。 记录示例 TBLS(表记录) 表结构 记录示例 PARTITION_KEYS(表的分区字段) PARTITIONS(分区信息) 记录示例 可

    2024年02月13日
    浏览(104)
  • hive 架构及 metastore 功能简单介绍

    这两天在调研用 java 怎么能通过 hive metastore 将 hive 表中的数据读出来(不能用 hive2),最好是能直接支持 sql 查询。各种查跟尝试,最终确定这条路走不通。期间研究了下 hive 的内部架构,其实就是看了一遍官方文档。记录下怕忘了。 hive 中主要有两个组件 hive server2 和 hiv

    2024年02月11日
    浏览(42)
  • MySQL到TiDB:Hive Metastore横向扩展之路

    作者:vivo 互联网大数据团队 - Wang Zhiwen 本文介绍了vivo在大数据元数据服务横向扩展道路上的探索历程,由实际面临的问题出发,对当前主流的横向扩展方案进行了调研及对比测试,通过多方面对比数据择优选择TiDB方案。其次分享了整个扩展方案流程、实施遇到的问题及解决

    2024年02月07日
    浏览(43)
  • 【运维】hive 高可用详解: Hive MetaStore HA、hive server HA原理详解;hive高可用实现

    Hive元数据存储在MetaStore中,包括表的定义、分区、表的属性等信息。 hive metastore 配置多台,可以避免单节点故障导致整个集群的hive client不可用。 原理如下: Active-active mode is not supported for Hive Metastore. Hence, there is one active instance of the Hive Metastore service at any given point in time.

    2024年02月02日
    浏览(42)
  • Hive初始化遇到的问题:org.apache.hadoop.hive.metastore.HiveMetaException: 失败加载驱动程序

    Hive初始化遇到的问题:org.apache.hadoop.hive.metastore.HiveMetaException: 失败加载驱动程序 在大数据领域,Hive是一个常用的数据仓库工具,它构建在Hadoop之上,提供了一种类似于SQL的查询语言,用于处理大规模的数据集。然而,有时在Hive的初始化过程中,可能会遇到一些错误。其中

    2024年02月08日
    浏览(54)
  • 【运维】hive 终端突然不能使用:Hive Schema version does not match metastore‘s schema version

    进入hive终端,执行如下命令报错: Error “Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient” 字面意思就是无法实例化hive Metastore client端。   先朝着hive的一些配置入手排查: hive元数据库是否初始化,库是否正常存在,hive的元数据配置在mysql: 元数据库没有问

    2024年02月14日
    浏览(37)
  • 低代码平台探讨-MetaStore元数据缓存

    之前提到我们模型驱动的实现选择的是解释型,需要模型的元数据信息,在接到请求后动态处理逻辑. 此外,应用的通用能力中还包括:页面dsl查询,菜单查询等. 而且后期加入触发器,用户自定义api后,这些元数据也需要提供查询服务. 所以我们需要一个元数据模块,需要提供两个基础

    2024年02月08日
    浏览(31)
  • 常见的bug---3、没有启动metaStore和Hiveserver2服务导致在本机上的IDEA无法连接上虚拟机上的HIve

    在IEDA连接虚拟机上的Hive报的 Exception in thread “main” org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient at org.apache.spark.sql.hive.HiveExternalCatalog.withClient(HiveExternalCatalog.scala:11

    2024年02月15日
    浏览(50)
  • Airflow metastore清理

    点赞发Nature 关注中Science Airflow 运行中存在许多status record以table的形式保存的数据库中,需要定时清理: 用airflow command line tool可以进行清理: airflow db clean --clean-before-timestamp timestamp -t table_name --dry-run -verborse -y airflow metastore的table主要有 log task_instance dag_run dag task_fail task_ins

    2024年02月13日
    浏览(35)
  • Hive:元数据的三种部署方式

    1.内嵌模式示意图: 2.Derby数据库: Derby数据库是Java编写的内存数据库,在内嵌模式中与应用程序共享一个JVM,应用程序负责启动和停止。 初始化Derby数据库 1)在hive根目录下,使用/bin目录中的schematool命令初始化hive自带的Derby元数据库 [atguigu@hadoop102 hive]$ bin/schematool -dbType

    2024年01月17日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包