8.3 Hive的安装和配置
安装模式:
- 嵌入模式 :不需要使用MySQL,需要Hive自带的一个关系型数据库:Derby
 - 本地模式、远程模式 ----> 需要MySQL数据库的支持
 
安装 hive 安装包
1、解压
	tar -zxvf apache-hive-2.3.0-bin.tar.gz -C ~/training/
2、设置环境变量:
	vi ~/.bash_profile
        HIVE_HOME=/root/training/apache-hive-2.3.0-bin
        export HIVE_HOME
        PATH=$HIVE_HOME/bin:$PATH
        export PATH
    source ~/.bash_profile
 
核心的配置文件 conf/hive-site.xml
8.3.1 嵌入模式
在嵌入模式下,在哪个目录下执行的数据库初始化,就应该在哪个目录下执行: hive
- 使用Hive自带的Derby数据库来存储元信息
 - Hive只支持一个连接:创建 conf/hive-site.xml
 - 用于开发和测试,不能用于生产环境
 
| 参数文件 | 配置参数 | 参考值 | 
|---|---|---|
| hive-site.xml | javax.jdo.option.ConnectionURL | jdbc:derby:;databaseName=metastore_db;create=true | 
| javax.jdo.option.ConnectionDriverName | org.apache.derby.jdbc.EmbeddedDriver | |
| hive.metastore.local | true | |
| hive.metastore.warehouse.dir | file:///root/training/apache-hive-2.3.0-bin/warehouse | 
conf/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:;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>file:///root/training/apache-hive-2.3.0-bin/warehouse</value>
	</property>		
</configuration>	
 
初始化MetaStore:
 schematool -dbType derby -initSchema

 通过find -name 文件名可以查看文件所在的位置
启动hive

日志:
Hive-on-MR is deprecated in Hive 2 and may not be available in the future versions. Consider using a different execution engine (i.e. spark, tez) or using Hive 1.X releases.
hive 测试:创建学生表

创建的学生表在 conf/hive-site.xml 配置文件的设置的路径下

8.3.2 安装配置MySQL数据库
在虚拟机上安装MySQL:
yum remove mysql-libs
rpm -ivh mysql-community-common-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.19-1.el7.x86_64.rpm
rpm -ivh mysql-community-devel-5.7.19-1.el7.x86_64.rpm (可选)
启动MySQL:service mysqld start
或者:systemctl start mysqld.service
修改MySQL密码
查看root用户的密码:cat /var/log/mysqld.log | grep password
登录后修改密码:alter user ‘root’@‘localhost’ identified by ‘Welcome_1’;
MySQL数据库的配置:
创建一个新的数据库:create database hive;
创建一个新的用户:create user ‘hiveowner’@‘%’ identified by ‘Welcome_1’;
给该用户授权
 grant all on hive.* TO ‘hiveowner’@‘%’;
 grant all on hive.* TO ‘hiveowner’@‘localhost’ identified by ‘Welcome_1’;

8.3.3 远程模式
远程模式:MySQL
- 配置MySQL的数据库:http://www.mysqlfront.de/
 - 配置hive-site.xml: JDBC的参数
 - 把MySQL数据库的驱动放到: Hive/lib下
 - 初始化MySQL数据库 
  
- 老版本的Hive:第一次运行Hive
 - 新版本的hive:schematool -dbType mysql -initSchema
 
 
| 参数文件 | 配置参数 | 参考值 | 
|---|---|---|
| hive-site.xml | javax.jdo.option.ConnectionURL | jdbc:mysql://localhost:3306/hive?useSSL=false | 
| javax.jdo.option.ConnectionDriverName | com.mysql.jdbc.Driver | |
| javax.jdo.option.ConnectionUserName | hiveowner | |
| javax.jdo.option.ConnectionPassword | Welcome_1 | 
<?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:mysql://localhost:3306/hive?useSSL=false</value>
	</property>	
	<property>
	  <name>javax.jdo.option.ConnectionDriverName</name>
	  <value>com.mysql.jdbc.Driver</value>
	</property>	
	
	<property>
	  <name>javax.jdo.option.ConnectionUserName</name>
	  <value>hiveowner</value>
	</property>	
	
	<property>
	  <name>javax.jdo.option.ConnectionPassword</name>
	  <value>Welcome_1</value>
	</property>	
	
</configuration>
 
初始化MetaStore:
 schematool -dbType derby -initSchema

网页端查看hive表
启动hive,然后创建测试学生表,同嵌入模式一样,然后通过网页的方式进行查询

需要停止Hadoop环境,修改hdfs-site.xml,打开禁用HDFS的权限检查的功能,然后重新启动




















