本帖主要针对于伪分布式集群的Hive搭建
环境准备:Hive的文件包、且虚拟机中已经安装了mysql和hadoop
1.解压hive压缩文件包:这里使用的是Hive 1.x cdh版本,解压Hive包放置在/opt/soft/hive110目录下
tar -zxf hive-1.1.0-cdh5.14.2.tar.gz /opt/soft/hive110 --strip-components 1
2.解压后进入 hive110/conf 目录下,修改该目录下的 hive-site.xml
文件(如果该文件不存在,需要先创建一个)
Hive逻辑架构如下图所示:Hive本身不存放任何数据,它的元数据(即数据的信息,例如数据的大小、存放地址等)是存放在配置的关系型数据库中(默认存放在derby中),而Hive的数据则存放在HDFS上,因此需要对Hive进行相关的配置。
配置文件信息如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--hive文件(数据文件)在hadoop中的默认存放路径-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive110/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<!--当mysql数据库不在本地时,此处为false-->
<value>false</value>
</property>
<!--mysql在本地时,此处值为localhost,不在本地时,值为mysql所在虚拟机的IP地址-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.100.155:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--mysql驱动-->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!--mysql的账户名和密码-->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
<!--使第三方连接hive时不需要密码-->
<property>
<name>hive.server2.authentication</name>
<value>NONE</value>
</property>
<!--第三方连接hive必须要密码时,配置账户名和和密码-->
<property>
<name>hive.server2.thrift.client.user</name>
<value>root</value>
</property>
<property>
<name>hive.server2.thrift.client.password</name>
<value>passwod</value>
</property>
</configuration>
3.由于 hive
连接 mysql
时也属于第三方连接,因此需要将连接 mysql
所需要的jar包拖入hive的lib目录下,才能让 hive
通过调用相关 jar包启动 mysql
4.配置环境变量:vim /etc/profile
#hive environment
export HIVE_HOME=/opt/soft/hive110 #hive所在路径
export PATH=$PATH:$HIVE_HOME/bin
5.保存后激活配置文件:source /etc/profile
6.启动 hadoop
集群,初始化hive元数据库
schematool -dbType mysql -initSchema
当显示如下信息时,说明 hive 数据库已搭建完成。