Hive版本:apache-hive-1.2.1
Hadoop版本:hadoop-2.5.1
Hive中metastore(元数据存储)的三种方式:
a)本地Derby方式
b)本地mysql方式
c)Remote方式
步骤:
1、下载Hive:http://hive.apache.org/downloads.html
2、解压
# tar -zxvf apache-hive-1.2.1-bin.tar.gz
3、重命名
# mv apache-hive-1.2.1-bin apache-hive-1.2.1
4、添加Hive环境变量
# vi ~/.bash_profile
添加:
export HIVE_HOME=/home/apache-hive-1.2.1
export PATH=$PATH:$HIVE_HOME/bin
5、确定Hive里的jline版本与hadoop里的jline版本一致
Hive里的jline在:HIVE_HOME/lib
Hadoop里的jline在:HADOOP_HOME/share/hadoop/yarn/lib
若有问题则将Hive里的jline复制到Hadoop里
这是分割线
远端mysql的存储方式需要配置hive的服务端和客户端,条件需要一台远程mysql服务器,配置hive的服务端和客户端一共有2种方式:
一、hive的服务端和客户端在同一台服务器
二、hive的服务端和客户端不在同一台服务器
一、hive的服务端和客户端在同一台服务器
1、修改hive-default.xml.template文件,将文件复制并且重命名为hive-site.xml
# cp hive-default.xml.template hive-site.xml
编辑hive-site.xml
# vi hive-site.xml
清空里配置信息,光标定位到下方执行清空命令.,$-1d
在configuration里添加:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.152.112:3306/hive?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.uris</name>
<value>thrift://192.168.152.111:9083</value>
</property>
注意
192.168.152.112 是我的mysql服务器,要确保这台服务器是否开启mysql服务,是否允许其他主机ip地址访问,以及3306端口是否开放,否则就启动mysql服务
# service mysqld start
,关闭防火墙# service iptables stop
192.168.152.111 是我的hive地址
2、将mysql的jar包拷贝到$HIVE_HOME/lib目录下
3、启动hadoop
4、启动hive服务端
# hive --service metastore
此时当前窗口已经停止任何操作行为,需要另起一个终端
5、启动hive
二、hive的服务端和客户端不在同一台服务器
1、与上面配置主要区别是服务端和客户端是分开的,假设我的hive客户端是192.168.152.111,我的服务端是192.168.152.112
,并且2台机都要安装hive
2、配置服务端的hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.152.112:3306/hive?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>test</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
3、配置客户端的hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/opt/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.152.112:9083</value>
</property>
3、将mysql的jar包拷贝到$HIVE_HOME/lib目录下
4、启动hadoop
5、启动hive服务端
# hive --service metastore
5、启动hive