hive三种元数据存储方式

2023-11-03

hive本身不存储数据,借助hdfs存储数据,hive和关系型数据库一样是有表结构的,这些信息hive也存储在第三方软件中,如derby、mysql。

根据元数据的存储方式,hive的部署可以分为三种:

一,local模式

采用内置的derby数据库存储元数据,这种方式只能有一个客户端访问hive,多个客户访问会报错,适合开发测试。

hive服务和metastore服务运行在同一个进程中,derby服务也运行在该进程中。

配置hive-site.xml:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>org.apache.derby.jdbc.EmbeddedDriver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>APP</value>
  <description>username to use against metastore database</description>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>mine</value>
  <description>password to use against metastore database</description>
</property>
 
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>file:///Users/micmiu/tmp/hive/warehouse</value>
  <description>unit test data goes in here on your local filesystem</description>
</property>

执行初始化命令:

schematool -dbType derby -initSchema

查看初始化后的信息:

 schematool -dbType derby -info

二,本地模式

使用mysql存储元数据。

hive服务和metastore服务运行在同一个进程中,mysql是单独的进程,可以在同一台机器上,也可以在远程机器上。

该模式配置hive-site.xml如下:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://127.0.0.1:3306/hivedb?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=UTF-8&amp;useSSL=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</value>
  <description>username to use against metastore database</description>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>micmiu</value>
  <description>password to use against metastore database</description>
</property>
 
<property>
  <name>hive.metastore.warehouse.dir</name>
  <!-- base hdfs path -->
  <value>/user/hive/warehouse</value>
  <description>location of default database for the warehouse</description>

需要把mysql的驱动包copy到目录 <HIVE_HOME>/lib 中

如果是第一次需要执行初始化命令:schematool -dbType mysql -initSchema

三,远程模式

使用mysql存储元数据,客户端不直接访问mysql,而是通过metaserver元数据服务访问MySQL,元数据服务允许并发访问,生产环境都是这种模式。

这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。

安装mysql的服务器为slave1

安装hive sevrver服务器为master

<configuration>
 
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://slave1: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>         #模式改成false,也就是使用远程模式,默认情况下是true,也就是使用本地模式
  <value>false</value>
</property>
 
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://master:9083</value>     #master为安装hive或者启动metastore服务的服务器地址
</property>
 
</configuration>

上面把客户端和服务端配置在一起,生产环境中,通常客户端和服务端是分开的,配置也要分开。

服务端配置:

<configuration>
 
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
 
<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://slave1: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>
</configuration>

客户端配置:

<configuration>
 
<property>
  <name>hive.metastore.warehouse.dir</name>
  <value>/user/hive/warehouse</value>
</property>
<property>
  <name>hive.metastore.local</name>         #模式改成false,也就是使用远程模式,默认情况下是true,也就是使用本地模式
  <value>false</value>
</property>
 
<property>
  <name>hive.metastore.uris</name>
  <value>thrift://master:9083</value>     #master为安装hive或者启动metastore服务的服务器地址
</property>
 
</configuration>
  • 需要把mysql的驱动包copy到目录 <HIVE_HOME>/lib 中

  • 如果是第一次需要执行初始化命令:schematool -dbType mysql -initSchema

  • hive metastore 服务端启动命令:hive --service metastore -p <port_num>

  • 如果不加端口默认启动:hive --service metastore,则默认监听端口是:9083 ,注意客户端中的端口配置需要和启动监听的端口一致。服务端启动正常后,客户端就可以执行hive操作了。

  • 如果要使用jdbc的方式连接,需要在服务器启动hiveserver2服务,该服务或者metastore服务都是使用thrift协议,监听10000端口。

  • 启动hiveserver2:hive --service hiveserver2 & 或者 hiveservre2 & 或者 nohup hiveserver2 1> xxx.log 2> xxx_err.log &

四,总结

远程的mysql并不能称之为“远程模式”,是否远程指的是metastore和hive服务是否在同一进程内,换句话说,“远”指的是metastore和hive服务离得“远”。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

hive三种元数据存储方式 的相关文章

  • Hive 函数替换列值中的逗号

    我有一个配置单元表 其中字符串列的值为 12 345 有没有什么方法可以在插入此配置单元表期间删除逗号的配置单元函数 您可以使用regexp replace string INITIAL STRING string PATTERN stri
  • Hive - hive 中的逆透视功能

    我有两个表如下 Table A userid code code name property id 0001 1 apple id Y1234 0031 4 mango id G4567 0008 3 grape id H1209 0001
  • 如何通过Spark Thrift Server访问自定义UDF?

    我正在 EMR 上运行 Spark Thrift 服务器 我通过以下方式启动 Spark Thrift 服务器 sudo u spark usr lib spark sbin start thriftserver sh queue inte
  • hive 查询特定联合类型的记录

    我创建了一个示例配置单元表 CREATE TABLE union test foo UNIONTYPE
  • 如何根据“^P”分隔符分隔的数据构建 Hive 表

    我的查询是 CREATE EXTERNAL TABLE gateway staging poll int total int transaction id int create time timestamp update time time
  • Hive 表的默认分隔符是什么?

    如果我们在创建表时不提及任何分隔符 hive 是否有默认分隔符 创建表日志 ts bigint 行字符串 按 dt 字符串 国家 地区字符串 分区 默认分隔符 001 如果创建hive表时没有设置 您可以将其更改为其他分隔符 例如 hive
  • Hive 中字符串数据类型是否有最大大小?

    谷歌了很多 但没有在任何地方找到它 或者这是否意味着只要允许集群 Hive 就可以支持任意大字符串数据类型 如果是这样 我在哪里可以找到我的集群可以支持的最大字符串数据类型大小 提前致谢 Hive 列表的当前文档STRING作为有效的数据类
  • 连接到 Hive 时使用 Spark 进行 Kinit

    我正在尝试从独立的 Spark 连接到 Hive hadoop 集群具有 kerberos 身份验证 有人可以让我知道如何在 Spark 程序中执行 kinit 我可以连接到配置单元吗 更新 我的 Spark 与 Hadoop 位于不同的集
  • Hive查询快速查找表大小(行数)

    是否有 Hive 查询可以快速查找表大小 即行数 而无需启动耗时的 MapReduce 作业 这就是为什么我想避免COUNT I tried DESCRIBE EXTENDED 但这产生了numRows 0这显然是不正确的 对新手问题表示歉
  • hive查询无法通过jdbc生成结果集

    我是 Hive 和 Hadoop 的新手 在我的教程中 我想将表创建为 import java sql SQLException import java sql Connection import java sql ResultSet im
  • Hadoop:读取ORC文件并放入RDBMS中?

    我有一个以 ORC 文件格式存储的配置单元表 我想将数据导出到 Teradata 数据库 我研究了 sqoop 但找不到导出 ORC 文件的方法 有没有办法让 sqoop 为 ORC 工作 或者有什么其他工具可以用来导出数据 Thanks
  • 如何将Hive数据表迁移到MySql?

    我想知道如何将日期从 Hive 转移到 MySQL 我看过有关如何将 Hive 数据移动到 Amazon DynamoDB 的示例 但没有看到有关如何将 Hive 数据移动到 MySQL 等 RDBMS 的示例 这是我在 DynamoDB
  • 当从 HDFS 手动删除分区数据时,如何更新 Hive 中的分区元数据

    自动更新Hive分区表元数据的方法是什么 如果新的分区数据被添加到HDFS 不执行alter table添加分区命令 然后我们可以通过执行命令 msck Repair 来同步元数据 如果从HDFS中删除了大量分区数据 没有执行alter t
  • Hive - 线程安全的自动递增序列号生成

    我遇到一种情况 需要将记录插入到特定的 Hive 表中 其中一列需要是自动递增的序列号 即在任何时间点都必须严格遵循 max value 1 规则 记录从许多并行的 Hive 作业插入到这个特定的表中 这些作业每天 每周 每月批量运行 现在
  • 使用 Hiveql 循环

    我正在尝试合并 2 个数据集 例如 A 和 B 数据集 A 有一个变量 Flag 它有 2 个值 我并没有只是将两个数据合并在一起 而是尝试根据 标志 变量合并两个数据集 合并代码如下 create table new data as se
  • hive sql查找最新记录

    该表是 create table test id string name string age string modified string 像这样的数据 id name age modifed 1 a 10 2011 11 11 11 1
  • Spark SQL sql("").first().getDouble(0) 给我不一致的结果

    我有下面的查询 它应该找到列值的平均值并返回一个数字的结果 val avgVal hiveContext sql select round avg amount 4 from users payment where dt between 2
  • <问题> Hive 中的浮点数据类型

    初始化数据 CREATE TABLE test test data user VARCHAR 10 amount FLOAT TBLPROPERTIES transactional true INSERT INTO test test da
  • 使用 impala 按范围连接表的有效方法

    我第一个有下表 Range 包括值范围和附加列 row From To Country 1 1200 1500 2 2200 2700 3 1700 1900 4 2100 2150 The From and Toare bigint并且是
  • Spark on Hive SQL 查询错误 NoSuchFieldError: HIVE_STATS_JDBC_TIMEOUT

    针对 Hive 2 1 0 提交 Spark 1 6 0 SQL 应用程序时出现错误 Exception in thread main java lang NoSuchFieldError HIVE STATS JDBC TIMEOUT a

随机推荐

  • 计算机应用与音乐论文,计算机应用论文的专辑

    计算机应用文如何写 下面是小编整理的一些关于计算机应用论文的范文 欢迎阅读 希望对你有帮助 微课运用下中职计算机应用的教学方法 摘要 微课在教育领域中的应用 可以被视为科学技术快速发展与教学水平不断优化的外在表现形式 在中职计算机应用基础教
  • 清理MSConfig系统设置下的启动项

    我使用的系统是windows server 2008 r2 最近发现msconfig很多以前禁用的启动项 太多想删除一下 第一下想到的就是使用xp下的msconfig cleanup 没想到在这个系统上也不能用了 system repair
  • Java中的集合框架

    一 概述 1 集合 数组都是对多个数据进行存储操作的结构 简称java容器 说明 此时的存储 只要指的是内存层面的存储 不涉及到持久化的存储 txtjpg avi 数据 2 数组在存储多个数据方面的特点 一旦初始化以后 其长度就确定了 数组
  • 为自己的 SSM项目设计评论功能

    为自己的 SSM项目设计评论功能 设计思路 增加评论 显示评论 评论总数 设计思路 首先需要设计评论信息的实体类 对应评论表 主要分为以下2个功能 显示所有评论 当我们进入文章详情页的时候 页面就会通过 ajax 发送请求给服务器 这个请求
  • 8,tcl注释与续行

    注 学习 交流就在博主的个人weixin公众号 FPGA动力联盟 留言或直接 博主weixin fpga start 私信 关于xilinx vivado FPGA XDC约束的所有讲解文档汇总 关于xilinxvivadoFPGAXDC约
  • 期货基础知识

    期货基础知识 1期货交易概述 1 1概念 一 期货合约 是指由期货交易所统一制订的 规定在将来某一特定的时间和地点交割一定数量和质量实物商品或金融商品的标准化合约 所谓标准化合约是指合约的数量 质量 交货时间和地点等都是既定的 唯一的变量是
  • golang学习demo5-redis和redis连接池的使用

    知识点 redis 的安装与了解 golang中对redis的操作 golang中的redis 连接池 安装并启动redis server之后的界面 我们就可以使用了 默认端口是6379 在client客户端里可以进行命令操作 一个基本的g
  • Python +selenium+unittest+ddt数据化实现自动化运行和脚本并生成报告

    一 unittest 框架解析 unittest 是 python 的单元测试框架 unittest 单元测试提供了创建测试用例 测试套件以及批量执行的方案 unittest 在安装 pyhton 以后就直接自带了 直接 import un
  • Linux Kernel:syscall之fork与exec

    目录 环境 一 前言 二 进程复制 1 写时复制 2 系统调用 3 kernel c
  • Web Socket rfc6455 握手 (C++)

    std string data const char buf gt data bytes transferred recycle buffer buf std string key Sec WebSocket Key auto pos da
  • 嵌入式系统调试方式

    word文档免费下载地址 https download csdn net download weixin 55953651 87962202 1 嵌入式系统调试方法概述 通用计算机一般采用桌面操作系统 调试器与被调试的程序常位于同一台计算机
  • 字符贪吃蛇创新玩法

    C语言贪吃蛇 include include include include include include include pragma comment lib Winmm lib 宏定义区 define X 500 保存蛇节点坐标的个数
  • brpc源码解析(十六)—— 作为client的连接建立和处理详解

    文章目录 一 连接方式的定义 二 连接方式的选择 三 获取用于连接的socket 3 1 获取指代具体下游服务的tmp socket 3 2 根据tmp socket获取用于发送数据的socket 3 3 连接以准备发送 四 数据发送完毕后
  • python setup.py install 常用命令参数详解

    setup py 命令 参数 setup py 文件有很多内置命令可供使用 查看所有支持的命令 python setup py help commands 注意要在有 setup py文件 的目录下用 cmd 运行此命令 常用命令 buil
  • 8、自定义映射resultMap

    8 自定义映射resultMap 搭建MyBatis框架 新建modules gt resultMap t emp表 SET NAMES utf8mb4 SET FOREIGN KEY CHECKS 0 Table structure fo
  • 5G小站中的数字预失真(DPD)技术

    5G小站中的数字预失真 DPD 技术 标题 一 基站中为什么要用数字预失真 DPD 技术 为了获得更大的输出信号功率 功率放大器一般会工作在接近饱和点的工作范围 这样功放的非线性失真会使其产生新的频率分量 如对于二阶失真会产生二次谐波和双音
  • Vijava 学习笔记之(Template 克隆虚拟机并修改Template 指定虚拟磁盘大小)

    源代码 package com vmware template import com vmware util Session import com vmware vim25 import com vmware vim25 mo import
  • 通过百度地图API和高德地图API进行反坐标逆向地理位置

    本文分别通过百度地图API和高德地图API 通过WGS84的坐标返回详细的地理位置 一 通过百度地图API进行反坐标逆向地理位置 import java io BufferedReader import java io IOExceptio
  • 英语CET6救命作文通用模板

    这是根据刘晓燕的6级救命班所写的笔记 建议结合 英语四六级万能作文模板 进行独一无二的英语作文模板创造 一 常见土单词排行榜 think 可替换为 have been convinced that be of the opinion tha
  • hive三种元数据存储方式

    hive本身不存储数据 借助hdfs存储数据 hive和关系型数据库一样是有表结构的 这些信息hive也存储在第三方软件中 如derby mysql 根据元数据的存储方式 hive的部署可以分为三种 一 local模式 采用内置的derby