Hive Using Derby in Server Mode(用Derby配置Hive的metastore——服务器模式)

本文档详细介绍了如何将Derby配置为Hive的网络服务器模式,以便允许多个用户同时从不同系统访问。内容包括Java和Hadoop的版本要求,Derby的下载安装,环境变量设置,Hive配置文件修改,jar包复制,Derby服务器的启动,以及初始化和启动Hive的步骤。特别强调了启动Derby服务器时的注意事项,以及避免阻塞的后台启动方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么要配置Derby的服务器模式呢?答案如下:

官方文档的一段话:Hive in embedded mode has a limitation of one active user at a time. You may want to run Derby as a Network Server, this way multiple users can access it simultaneously from different systems.

大概意思是:

Hive默认有一次只允许一个活动用户的限制。 您可能要运行Derby作为网络服务器,这样多个用户可以从不同的系统同时访问它。

注意!!!很重要:版本不匹配导致安装失败是最蛋疼的事;所以请耐心看下官网的软件安装环境要求:比较简单,我就不翻译了,相信你比我理解的更好大笑

Requirements

  • Java 1.7
    Note:  Hive versions 1.2 onward require Java 1.7 or newer. Hive versions 0.14 to 1.1 work with Java 1.6 as well. Users are strongly advised to start moving to Java 1.8 .  
  • Hadoop 2.x (preferred), 1.x (not supported by Hive 2.0.0 onward).
    Hive versions up to 0.13 also supported Hadoop 0.20.x, 0.23.x.

进入主题:

开始配置:

1.下载安装Derby

http://db.apache.org/derby/derby_downloads.html


2.设置环境变量

修改/etc/profile 文件;

最终结果如下:

export JAVA_HOME=/usr/local/java/jdk1.8.0_101
export HADOOP_HOME=/cloud/hadoop-2.2.0
export HIVE_HOME=/cloud/hive-2.1.0
export DERBY_HOME=/cloud/derby-10.12.1.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:$DERBY_HOME/bin


3.配置Hive连接服务器模式下的Derby

在Hive的安装目录下的conf目录下执行重命名hive-default.xml.template 为hive-site.xml

[root@rm conf]# pwd
/cloud/hive-2.1.0/conf
[root@rm conf]# ls
beeline-log4j2.properties.template    hive-site.xml
hive-default.xml.template             ivysettings.xml
hive-env.sh.template                  llap-cli-log4j2.properties.template
hive-exec-log4j2.properties.template  llap-daemon-log4j2.properties.template
hive-log4j2.properties.template       parquet-logging.properties
[root@rm conf]# mv hive-default.xml.template hive-site.xml
接着修改hive-site.xml
最终内容如下:

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

	<property>
		<name>javax.jdo.option.ConnectionURL</name>
		<value>jdbc:derby://rm:1527/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.ClientDriver</value>
		<description>Driver class name for a JDBC metastore</description>
	</property>
</configuration>
解释: jdbc:derby: //rm:1527/metastore_db;create=true; 这是一个jdbc连接地址,其中的rm是我的主机名,这里应该改为你的ip或主机名;

4.复制jar包

把Derby安装目录下的lib目录下的derbyclient.jar 和derbytools.jar分别复制到hive安装目录下的lib目录下和Hadoop安装目录下的lib目录


5.开启Derby服务器

Derby安装目录下的bin目录下( 我的是/cloud/derby-10.12.1.1/bin)执行:

[root@rm bin]# ./NetworkServerControl start -h 192.168.1.106 -p 1527

其中 -h用来指定server的ip(这里应该是你允许Derby的主机ip)-p 用来指定端口号,一般为1527不要随意指定

注意:一定要采用这种启动方式,否则Derby将会默认只允许本机连接,而不是对外的一个服务器模式;

6.初始化hive

在如下目录下执行如下操作:

[root@rm bin]# pwd
/cloud/hive-2.1.0/bin
[root@rm bin]# ./schematool -dbType derby -initSchema 

如果这里提示初始化完成(Completely!)

基本上已经成功了。看最后一步

7.开启hive

在如下目录下执行如下操作:

[root@rm bin]# pwd
/cloud/hive-2.1.0/bin
[root@rm bin]# ./hive


启动成功后就进入了hive 的shell界面:" Hive > "


最后一次注意:

以后启动hive只需要执行第5步和第7步

要同时开启两个窗口:因为Derby服务器跑起来后是阻塞的状态(命令行停在那不动,你千万不要以为程序卡在那里了,我的天!!!);

这时候你千万不能用Ctrl+C来中断,因为你将中断的是服务器,你要在另一个窗口执行第7步。

当然你也可以以后台进程的形式来启动derby(第5步):

./NetworkServerControl start -h 192.168.1.106 -p 1527 >/dev/null  2>&1 &

这样就不会阻塞在那里,而非得再开一个窗口了:



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值