Hive metastore三种配置方式
来源:互联网 发布:linux eth0没有ip地址 编辑:程序博客网 时间:2024/06/05 09:39
Hive metastore三种配置方式
Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储。远端存储比较适合生产环境。Hive官方wiki详细介绍了这三种方式,链接为:Hive Metastore。
一、本地derby
这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可
注:使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示如下错误
二、本地mysql
这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)。三、远端mysql
这种存储方式需要在远端服务器运行一个mysql服务器,并且需要在Hive服务器启动meta服务。
这里用mysql的测试服务器,ip位192.168.1.214,新建hive_remote数据库,字符集位latine1
注:这里把hive的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,将hive-site.xml配置文件拆为如下两部分
1)、服务端配置文件
2)、客户端配置文件
启动hive服务端程序
客户端直接使用hive命令即可
Hive学习之Metastore及其配置管理
在学习Hive的配置管理参数时,曾将参数分为四类:Hive管理参数、Hive元存储(Metastore)管理参数、与Hadoop交互的管理参数、用于传递运行时信息的参数,当时并没有对Metastore参数进行深入的学习,现在就开始学习这部分的内容。
Hive中表和分区的所有元数据都存储在Hive的元存储(Metastore)中。元数据使用JPOX(Java Persistent Objects)对象关系映射解决方案进行持久化,所以任何被JPOX支持的存储都可以被Hive使用。大多数商业关系型数据库和许多开源的数据存储都被支持,所以就可以被Hive使用存储元数据。Hive支持三种不同的元存储服务器,分别为:内嵌式元存储、本地元存储、远程元存储,每种存储方式使用不同的配置参数,相关的配置参数如下表所示:
配置参数
描述
javax.jdo.option.ConnectionURL
包含元数据的数据存储的JDBC连接字符串。默认值为jdbc:derby:;databaseName=metastore_db;create=true。
javax.jdo.option.ConnectionDriverName
包含元数据的数据存储的JDBC驱动类名称。默认值为org.apache.derby.jdbc.EmbeddedDriver。
hive.metastore.uris
Hive连接到该URI请求远程元存储的元数据。默认值为空。
hive.metastore.local
本地或者远程数据存储 (Hive-0.10已经不再使用该参数: 如果hive.metastore.uris
为空值则为本地模式,否则为远程模式)。
hive.metastore.warehouse.dir
本地表的默认位置,默认值为/user/hive/warehouse。
hive.metastore.metadb.dir
hive.metastore.rawstore.impl
实现org.apache.hadoop.hive.metastore.rawstore接口的类,该类用于存储和检索行元数据对象,如表、数据库。
hive.metastore.ds.connection.url.hook
提取JDO连接URL的钩子名称,若为空,则使用javax.jdo.option.ConnectionURL中的值。
hive.metastore.server.min.threads
Thrift服务器池中工作线程的最小数量,默认值为200。
hive.metastore.server.max.threads
Thrift 服务器池中工作线程的最大数量,默认值为10000。
hive.hmshandler.retry.attempts
在JDO数据存储出现错误后尝试连接的次数默认值为1。
hive.hmshandler.retry.interval
尝试间隔的毫秒数,默认值为1000。
前面提到Hive支持三种元存储方式,默认方式为内嵌式元存储。下面分别对三种存储方式如何配置进行学习。
内嵌式元存储
内嵌式元存储主要用于单元测试,在该模式下每次只有一个进程可以连接到元存储,Derby是内嵌式元存储的默认数据库。内嵌式元存储的配置如下:
配置参数
值
描述
javax.jdo.option.ConnectionURL
jdbc:derby:;databaseName=metastore_db;create=true
包含元数据的数据存储的JDBC连接字符串。
javax.jdo.option.ConnectionDriverName
org.apache.derby.jdbc.EmbeddedDriver
JDBC驱动类。
hive.metastore.warehouse.dir
/user/hive/warehouse
本地表的默认位置。
hive.metastore.uris
空值
内嵌式也是本地模式,所以为空值。
本地元存储
在本地模式下,每个Hive客户端都会打开到数据存储的连接并在该连接上请求SQL查询。下表展示了如何在MySQL数据库服务器中建立元存储,确保在Hive查询被执行的机器上是可以访问该数据库服务器的,同时确保JDBC类库在Hive客户端的类路径中。
配置参数
值
描述
javax.jdo.option.ConnectionURL
jdbc:mysql://<host name>/<database name>?createDatabaseIfNotExist=true
元数据存储在MySQL数据库中。
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
MySQL JDBC驱动类。
javax.jdo.option.ConnectionUserName
<user name>
连接MySQL的用户名。
javax.jdo.option.ConnectionPassword
<password>
连接MySQL的密码。
hive.metastore.uris
空值
本地模式下为空值。
hive.metastore.warehouse.dir
/user/hive/warehouse
Hive表的默认位置。
远程元存储
在远程模式下,所有的Hive客户端都将打开一个到元数据服务器的连接,该服务器依次查询元数据。元数据服务器和客户端之间使用Thrift协议通信,从Hive-0.5.0开始,可以执行下面的命令启动Thrift服务器:
hive--service metastore
下面以MySQL为例,分别学习服务器端和客户端的配置,服务器端的配置如下表所示:
配置参数
值
描述
javax.jdo.option.ConnectionURL
jdbc:mysql://<host name>/<database name>?createDatabaseIfNotExist=true
元数据存储在MySQL数据库中。
javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver
MySQL JDBC驱动类。
javax.jdo.option.ConnectionUserName
<user name>
连接MySQL的用户名。
javax.jdo.option.ConnectionPassword
<password>
连接MySQL的密码。
hive.metastore.warehouse.dir
/user/hive/warehouse
Hive表的默认位置。
客户端的配置为:
配置参数
值
描述
hive.metastore.uris
thrift://<host_name>:<port>
Thrift元存储服务器的主机和端口号。
hive.metastore.warehouse.dir
/user/hive/warehouse
Hive表的默认位置。
在启动客户端和元存储服务器之前需要将JDBC驱动类库放到$HIVE_HOME/lib目录下。
hive配置远程metastore
hive配置远程metastore的方法:
1)首先配置hive使用本地mysql存储metastore(服务器A 111.121.21.23)(也可以使用远程mysql存储)
2)配置完成后,在服务器A启动服务:bin/hive --service metastore (默认监听端口是:9083)
3)配置hive客户端,修改hive-site.xml:(服务器B-需要有hadoop环境)
<property>
<name>hive.metastore.local</name>
<value>false</value>
<description>controls whether to connect to remove metastore server or open a new metastore server in Hive Client JVM</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://111.121.21.23:9083</value>
<description></description>
</property>
4)运行:bin/hive ,执行测试hql
5)hive客户端连接成功后,hive服务器端输出以下日志
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive metastore三种配置方式
- Hive之——metastore三种配置方式
- Hive的Metastore三种配置方式分析
- Hive metastore三种存储方式
- Hive metastore三种存储方式
- Hive metastore三种存储方式
- Hive metastore三种存储方式
- Hive metastore三种存储方式
- Hive metastore三种存储方式
- Hive metastore三种存储方式
- Excel以文本存储的数字转成数字
- 【Scikit-Learn 中文文档】集成方法
- String path = request.getContextPath(); JSP中的相对Path的设置
- IMS/SIP
- shell中的各种括号的使用方法
- Hive metastore三种配置方式
- 【代码笔记】iOS-请求去掉url中的空格
- Go 并发编程之并发基础
- 雪花算法
- php开发公众号,查询用户分组,怎么知道用户属于哪个分组
- 深入浅出解读卷积神经网络
- 一致性协议之2PC。
- 这些IT界短笑话,你能get吗?
- 项目管理心得分享九点总结