Hive 是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类 SQL 查询功能, Hive 底层是将 SQL 语句转换为 MapReduce 任务运行

一、前 期准备


1.保证 Hadoop 集群搭建成功并启动

hadoop集群搭建教程:http://39.105.70.212/?p=109

# 启动HDFS
start-dfs.sh
# 启动yarn集群
start-yarn.sh
2.下载 Hive 安装包并上传至 Linux 服务器

下载地址:http://www.cqzstation.com:8000/f/ca074303a6/?raw=1

3.解压 Hive 安装包
tar -zxvf apache-hive-1.2.1-bin.tar.gz
4.配置环境变量

(1)编辑配置文件,使用命令:

vim /home/xutao/.bash_profile

(2)将以下内容添加到配置文件的底部:

export HIVE_HOME=/home/xutao/Desktop/software/apache-hive-1.2.1-bin
export PATH=$PATH:$HIVE_HOME/bin

(3)让配置文件立即生效:

source /home/xutao/.bash_profile

(4)验证hive是否安装成功:

hive --help

二.hive的三种运行模式

因为hive有三种运行模式:内嵌模式、本地模式、远程模式,这次就教大家本地模式安装和远程模式安装
本地模式安装
安装mysql

1.检查以前是否安装过 MySQL,若有则卸载:
查找
rpm -qa | grep -i mysql
卸载
rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
2.删除老版本 MySQL 的开发头文件和库:
rm -rf /usr/lib/mysql
rm -rf /usr/include/mysql
rm -f /etc/my.cnf
rm -rf /var/lib/mysql

注意:卸载后 /var/lib/mysql(数据库文件的存放目录) 中的数据及 /etc/my.cnf(配置文件) 不会删除, 确定没用后就手工删除。

3.准备mysql安装包,上传至Linux服务器并解压:

下载地址:http://www.cqzstation.com:8000/f/b6a90f173b/?raw=1

tar -xvf MySQL-5.6.26-1.linux_glibc2.5.x86_64.rpm-bundle.tar

解压后有7个文件,我们只需要MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm和MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm

4、安装服务端Server:
rpm -ivh MySQL-server-5.6.26-1.linux_glibc2.5.x86_64.rpm
5、安装客户端client:
rpm -ivh MySQL-client-5.6.26-1.linux_glibc2.5.x86_64.rpm
6、开启MySQL服务:
service mysql start
7、在日志文件中我们发现,登录MySQL,初始密码在/root/.mysql_secret 这个文件里:
查看初始密码
cat /root/.mysql_secret
登录数据库
mysql -uroot -p初始密码
8、修改登录密码:
修改密码为123456
mysql> set PASSWORD=PASSWORD('123456');
9、增加远程登录权限,执行以下三个命令:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'xutao' WITH GRANT OPTION;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'hadoop01' IDENTIFIED BY 'xutao' WITH GRANT OPTION;
mysql> FLUSH PRIVILEGES;
命令释义: GRANT 权限 1,权限 2,…权限 n ON 数据库名称.表名称 TO 用户名@用户地址 IDENTIFIED BY ‘密码’;

当权限 1,权限 2,…权限 n 被 all privileges 或者 all 代替,表示赋予用户全部权限。select, insert, update, delete, create, drop, index, alter, grant,references, reload, shutdown, process, file 等 14 个权限。

数据库名称.表名称:被.代替时,表示赋予用户操作服务器上所有数据库所有表的权限。

用户名@用户地址 :用户地址可以是 localhost,也可以是 ip 地址、主机名、域名。也可以用’%’(任何主机)地址连接。’root’@’Hadoop1’含义就是允许 root 用户在 Hadoop1(Hive 安装主机) 进行远程登陆,并设置 root 用户的密码为 xutao。

WITH GRANT OPTION:用于对象授权。使用 with grant option,被授权用户可将所获得的权限再次授予其它用户或角色。

FLUSH PRIVILEGES:告诉服务器重新加载授权表。

修改 Hive 配置修改 Hive 配置

1.进入hive配置文件夹内:
cd /home/xutao/Desktop/software/apache-hive-1.2.1-bin/conf
2.新建hive-site.xml配置文件,写入以下配置信息:
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Hadoop1:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>xutao</value>
<description>password to use against metastore database</description>
</property>
</configuration>
配置文件注释:
javax.jdo.option.ConnectionURL:JDBC连接字符串

javax.jdo.option.ConnectionDriverName:JDBC的driver

javax.jdo.option.ConnectionUserName:登录数据库的用户名

javax.jdo.option.ConnectionPassword:登录数据库的密码
3.将 MySQL 的驱动包(mysql-connector-java-5.1.40-bin.jar)放到 %HIVE_HOME%/lib 目录下

下载地址:http://www.cqzstation.com:8000/f/b5550b8289/?raw=1

4.启动 Hive:
hive
远程模式安装
这种模式需要使用 HIVE_HOME/bin 目录下提供的 beeline+hiveserver2 配合使用才可以。

其原理就是将 metadata 作为一个单独的服务进行启动。各种客户端通过 beeline 来连接,连接之前无需知道数据库的用户名和密码。

1、因其连接之前无需知道数据库的用户名和密码,所以在 hive-site.xml 中只需要配置以下两项即可,其他步骤和本地模式一样:

<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://Hadoop1:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
</configuration>
2、hadoop01中启动 hive thrift 服务端,使用命令:
hiveserver2
启动后命令行会一直监听不退出,我们可以看到它监听了10000端口:
netstat -antp
3.在hadoop02中,执行 beeline 命令:
beeline
进入beeline>模式,输入:
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://Hadoop1:10000
Connecting to jdbc:hive2://Hadoop1:10000
Enter username for jdbc:hive2://Hadoop1:10000: lemenness    # 安装hadoop集群的用户名
Enter password for jdbc:hive2://Hadoop1:10000: ************ # 安装hadoop集群的密码
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://Hadoop1:10000>show database;  # 输入命令
+----------------+--+
| database_name  |
+----------------+--+
| default        |
| hive           |
| test           |
+----------------+--+
3 rows selected (0.245 seconds)
0: jdbc:hive2://Hadoop1:10000>

如果连接失败,原因可能是hive找不到配置文件目录,进入hadoop02中hive的配置目录:

cd /home/xutao/Desktop/software/apache-hive-1.2.1-bin/conf

修改hive-env.sh,添加hive的conf路径。

Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/home/xuto/Desktop/software/apache-hive-1.2.1-bin/conf
以上就是Hive搭建