1.下载hive安装包
到apache官网或者其它地方下载hive压缩包,然后解压到/usr/local/hive-2.0.0
2.依赖
hive依赖以下内容:
1)java 1.7或者更高版本
2)hadoop2.x,hadoop1.x(只支持hive1)
3)需要$HADOOP_HOME或者$HADOOP_PREFIX变量
3.配置元数据库
hive的元数据可以三种方式存储。参考:http://duguyiren3476.iteye.com/blog/1632868
这里选择以derby来存储元数据。也可以用mysql或者postgreySql来存储
(1)使用内置的derby数据库做为元数据库
使用derby的缺点是同一时刻只能有一个hive启动。并且在目录创建元数据库(metastore_db),十分的杂乱。
首先修改conf/hive-site.xml为如下内容:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
nfiguration>
<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>
然后删除$HIVE_HOME下的metastore_db文件夹
- [root@node1 hive-2.0.0]# rm -rf metastore_db
然后初始化元数据库
[root@node1 hive-2.0.0]# schematool -initSchema -dbType derby
测试:
[root@node1 hive-2.0.0]# hive
hive> show tables;
OK
Time taken: 1.154 seconds
(2)以数据库做为元数据库
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://yangxw:3306/hive_meta</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
<description>password to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>Username to use against metastore database</description>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
</configuration>
如果想把客户端和服务端分开,把蓝色背景的单独放在客户端hive-site.xml中即可
然后执行初始化元数据库:
schematool -dbType mysql -initSchema
开启元数据服务(可选):
hive --service metastore -p 9083
后台启用服务执行:
nohup bin/hive --service metastore -p 9083 >.metastore_log &
然后在客户端执行bin/hiv即可
关于metastore服务:
不启动metasotre服务的话,各个hive客户端分别连接到mysql数据库;启动后,客户端连接到metastore服务器,metastore服务器再连接mysql;所以一般情况下没必要启动metastore服务。CDH使用此种方式,因此必须启动metasotre服务.如果配置了:thrift://node1:9083 就必须启动metastore.
hive server是给hive之外的客户端用的,比如java。一般也不用启动。