Hive metastore三种配置方式

news/2024/12/2 14:48:49/

Hive的meta数据支持以下三种存储方式,其中两种属于本地存储,一种为远端存储。远端存储比较适合生产环境。Hive官方wiki详细介绍了这三种方式,链接为:Hive Metastore。

一、本地derby

这种方式是最简单的存储方式,只需要在hive-site.xml做如下配置便可

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?><configuration><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.local</name><value>true</value>
</property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value>
</property>
</configuration>

注:使用derby存储方式时,运行hive会在当前目录生成一个derby文件和一个metastore_db目录。这种存储方式的弊端是在同一个目录下同时只能有一个hive客户端能使用数据库,否则会提示如下错误

hive> show tables;
FAILED: Error in metadata: javax.jdo.JDOFatalDataStoreException: Failed to start database 'metastore_db', see the next exception for details.
NestedThrowables:
java.sql.SQLException: Failed to start database 'metastore_db', see the next exception for details.
FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask

二、本地mysql

这种存储方式需要在本地运行一个mysql服务器,并作如下配置(下面两种使用mysql的方式,需要将mysql的jar包拷贝到$HIVE_HOME/lib目录下)。

<?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>

三、远端mysql

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

这里用mysql的测试服务器,ip位192.168.1.214,新建hive_remote数据库,字符集位latine1

<?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</value>
</property></configuration>

注:这里把hive的服务端和客户端都放在同一台服务器上了。服务端和客户端可以拆开,将hive-site.xml配置文件拆为如下两部分

         1)、服务端配置文件
<?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>root</value>
</property><property><name>javax.jdo.option.ConnectionPassword</name><value>test1234</value>
</property>
</configuration>
  2)、客户端配置文件
<?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>hive.metastore.local</name><value>false</value>
</property><property><name>hive.metastore.uris</name><value>thrift://192.168.1.188:9083</value>
</property></configuration>

启动hive服务端程序

$ hive --service metastore 

客户端直接使用hive命令即可

root@my188:~$ hive 
Hive history file=/tmp/root/hive_job_log_root_201301301416_955801255.txt
hive> show tables;
OK
test_hive
Time taken: 0.736 seconds
hive>

 

转载于:https://www.cnblogs.com/itboys/p/9254221.html


http://www.ppmy.cn/news/614439.html

相关文章

Docker的Entrypoint和CMD的区别

Docker中的Entrypoint和Cmd都是用于指定容器启动时要运行的命令&#xff0c;它们的区别在于它们的作用和使用方式。 Entrypoint是指定容器启动时要执行的可执行文件或脚本&#xff0c;并且该命令在运行容器时不能被覆盖。Entrypoint可以看作是容器的默认执行命令&#xff0c;它…

PHP分布式链路追踪,SkyWalking:分布式架构链路追踪-SkyWalking介绍

前面几篇文章提到了微服务相关系统的使用与搭建&#xff0c;在微服务架构下的问题也比较突出。正常系统下我们的每个请求都会在同一个系统中进行输出。但是在微服务架构中一个请求可能设置一到多个服务进行处理。服务之间相互依赖&#xff0c;服务之间形成一个调用链。如果调用…

单目摄像头标定与测距

单目摄像头标定与测距 一、 标定 首先要对摄像头做标定&#xff0c;具体的公式推导在learning opencv中有详细的解释&#xff0c;这里顺带提一句&#xff0c;这本书虽然确实老&#xff0c;但有些理论、算法类的东西里面还是讲的很不错的&#xff0c;必要的时候可以去看看。1.单…

Java动态代理和静态代理区别

静态代理 package staticproxy;/*** 接口* author newtouch**/ public interface IHello {public void sayHello();public String doSomethong(String s);}package staticproxy;/*** 实现类* author newtouch**/ public class Hello implements IHello{Overridepublic void say…

L4自动驾驶技术

L4自动驾驶技术 一&#xff0e;SAE的五个级别分别是&#xff1a; L0&#xff1a;驾驶员完全掌控车辆&#xff0c;无任何自动化能力。 L1&#xff1a;自动系统有时能够辅助驾驶员完成某些驾驶任务。比如高速自动巡航&#xff08;自动认知所在车道&#xff09;&#xff0c;和一…

php mms,PHP代码示例_PHP账号余额查询接口 | 微米-中国领先的短信彩信接口平台服务商...

PHP余额查询接口代码示例请求$ch curl_init();curl_setopt($ch, CURLOPT_URL, "http://api.weimi.cc/2/account/balance.html");curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);curl_setopt($ch, CURLOPT_POST, TRUE);/*设定微米账号的接口UID和接口密码*/curl_se…

工作经验:Java 系统记录调用日志,并且记录错误堆栈

前言&#xff1a;现在有一个系统&#xff0c;主要是为了给其他系统提供数据查询接口的&#xff0c;这个系统上线不会轻易更新&#xff0c;更不会跟随业务系统的更新而更新&#xff08;这也是有一个数据查询接口系统的原因&#xff0c;解耦&#xff09;。这时&#xff0c;这个系…

ASML光刻机PK 原子弹,难度?

ASML光刻机PK 原子弹&#xff0c;难度&#xff1f; 一. 物理世界和网络世界的交汇点&#xff1a;光刻机 光刻机的技术有多高级&#xff0c;看看这个知乎提问&#xff0c;可以感受一下&#xff1a; 有人这样形容光刻机&#xff1a;这是一种集合了数学、光学、流体力学、高分子…