1.安装前的准备:
首先需要搭建好hadoop集群并启动(需要启动hdfs和yarn)
mysql启动正常
2.hive的安装
方式一(不推荐):内嵌 Derby 版本
1、 上传安装包 apache-hive-2.3.2-bin.tar.gz
2、 解压安装包 tar -zxvf apache-hive-2.3.2-bin.tar.gz -C /home/hadoop/apps/
3、 进入到 bin 目录,运行 hive 脚本:[hadoop@hadoop02 bin]$ ./hive
方式二(推荐):外置 MySQL 版本
1、 准备好 MySQL(设置好远程连接)
2、 上传安装包 apache-hive-2.3.3-bin.tar.gz
3、 解压安装包 tar -zxvf apache-hive-2.3.3-bin.tar.gz -C ~/apps/
4、 修改配置文件(安装在哪里都可以,为了演示我们mysql安装在hadoop02,hive我们安装在hadoop05)
[hadoop@hadoop05 ~]# cd /home/hadoop/apps/apache-hive-2.3.3-bin/conf
[hadoop@hadoop05 conf]# touch hive-site.xml
[hadoop@hadoop05 conf]# vi hive-site.xml
写入内容如下
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://hadoop02:3306/hive_metastore_233?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
<!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
<!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
<!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
</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>root</value>
<description>password to use against metastore database</description>
</property>
</configuration>
5.一定要记得加入 MySQL 驱动包(mysql-connector-java-5.1.40-bin.jar)
该 jar 包放置在 hive的根路径下的 lib 目录
上传MySQL 驱动包(mysql-connector-java-5.1.40-bin.jar)
mv mysql-connector-java-5.1.40-bin.jar ~/apps/apache-hive-2.3.3-bin/lib/
6.确保hadoop集群和mYSQL启动正常
7.安装完成,配置环境变量
vi ~/.bashrc
添加以下两行内容:
export HIVE_HOME=/home/hadoop/apps/apache-hive-2.3.3-bin
export PATH=$PATH:$HIVE_HOME/bin
保存退出。
[hadoop@hadoop02 bin]$ source ~/.bashrc
8.验证 Hive 安装
[hadoop@hadoop05 bin]$ hive --help
9.初始化元数据库
注意:当使用的 hive 是 2.x 之前的版本,不做初始化也是 OK 的,当 hive 第一次启动的时候会自动进行初始化,只不过会不会生成足够多的元数据库中的表。在使用过程中会慢慢生成。但最后进行初始化。如果使用的 2.x 版本的 Hive,那么就必须手动初始化元数据库。使用命令:
[hadoop@hadoop05 bin]$ schematool -dbType mysql -initSchema
10.启动 Hive 客户端
注意要先启动mysql:
[hadoop@hadoop02 ~]$ service mysql start
查看mysql启动进程:
[hadoop@hadoop02 ~]$ ps -ef|grep mysql
hive --service cli
或者 hive
11.测试
先进入http://hadoop03:50070 查看一下
创建一个数据库:
create database myhive;
执行完命令查看发现多了一个文件夹
点进去之后,发现出现如下图所示多了一个myhive的数据库
同时也增加了一条映射记录在mysql里面
查看显示数据库
show databases;
使用数据库
use 数据库名;
创建一张表(以下两条命令都可以): 95022,郑明,男,20,MA"
create table student(id int, name string, sex string, age int, department string) row format delimited fields terminated by "," lines terminated by "\n";
create table student(id int, name string, sex string, age int, department string) row format delimited fields terminated by ",";
发现hdfs的相关路径文件夹下中多了一张表
同时也增加了一条表的映射记录
同时也增加了字段的映射
然后把student.txt文件上传到linux系统中。
里面的内容是
95002,刘晨,女,19,IS
95017,王风娟,女,18,IS
95018,王一,女,19,IS
95013,冯伟,男,21,CS
95014,王小丽,女,19,CS
95019,邢小丽,女,19,IS
95020,赵钱,男,21,IS
95003,王敏,女,22,MA
95004,张立,男,19,IS
95012,孙花,女,20,CS
95010,孔小涛,男,19,CS
95005,刘刚,男,18,MA
95006,孙庆,男,23,CS
95007,易思玲,女,19,MA
95008,李娜,女,18,CS
95021,周二,男,17,MA
95022,郑明,男,20,MA
95001,李勇,男,20,CS
95011,包小柏,男,18,MA
95009,梦圆圆,女,18,MA
95015,王君,男,18,MA
然后,往创建好的student表中插入一份数据文件:(注意先使用student表所在的数据库)
load data local inpath "/home/hadoop/student.txt" into table student;
使用SQL进行查询
到此hive即为安装正常
12.退出hive
hive> quit;
或者hive> exit;