HIve的安装与配置
本文中hive版本2.3.2,默认环境中jdk已经正常安装,hadoop集群正常启动
1.1下载hive安装文件
可以从Apache官网下载安装文件,即http://mirror.bit.edu.cn/apache/hive/
由于hive是默认将元数据保存在本地内置的Derby数据库中,Derby是单用户模式,不支持会话连接(具体体现:当你进行切换目录启动的时候需要重新元数据库的初始化工作,原来的目录下的初始化的元数据访问不了),本人选择MySQL作为元数据存储。个人百度网盘 内附hive2.3.2安装包和源码以及MySQL驱动包链接:https://pan.baidu.com/s/1uKzgIBSjnL_ZPGEL-VhpVA 密码:kdci
本文使用hive版本2.3.2,
解压安装文件到指定的文件夹 tar -xvzf apache-hive-2.3.2-bin.tar.gz -C /home/hadoop/apps/
2.1配置相关文件和环境变量
配置hive环境变量 vi /etc/profile
配置完成可输入hive --version 查看版本
修改hive配置文件 /home/hadoop/apps/apache-hive-2.3.2-bin/conf 路径下
初次解压发现hive-site.xml配置文件并没有,此时需要我们自己创建并配置hive-site.xml
hive-site.xml
<configuration>
<property>
<!-- 元数据库的链接地址 mysql -->
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
<!-- 如果 mysql 和 hive 在同一个服务器节点,那么请更改 hadoop02 为 localhost -->
</property>
<property>
<!-- 指定mysql驱动 -->
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<!-- 指定mysql用户名 -->
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<!-- 指定mysql密码 请输入自己的MySQL连接密码 -->
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
<description>password to use against metastore database</description>
</property><property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
<description>hive default warehouse, if nessecory, change it</description>
</property>
</configuration>
hive-site.xml详细图解:
将MySQL的驱动添加到hive安装目录的lib下 mysql-connector-java-5.1.40-bin (ps:个人网盘上有,链接在上面,也可自行去下载)
元数据库的初始化 schematool -dbType mysql -initSchema (ps:也可切换到hive的bin目录下 ./schematool -dbType mysql -initSchema)
3.1hive的启动
运行hive之前要确保hadoop集群启动和MySQL服务启动正常开启的情况下
3.1hive的启动
运行hive之前要确保hadoop集群启动和MySQL服务启动正常开启的情况下
3.1.1本地hive启动 CLI方式(若hive当前节点使用,此启动方式即可)
由于配置过环境变量,可以直接在命令行中输入hive 本地启动命令 hive
3.1.2 HiveServer2/beeline 客户端方式启动
由于hive启动,hadoop集群中其他节点是无法访问的,只能在hive安装的当前节点使用,若需要在其他节点操作hive,则可以用HiveServer2/beeline方式,下面就简单介绍下 HiveServer2/beeline
第一:修改 hadoop 集群的 hdfs-site.xml 配置文件:加入一条配置信息,表示启用 webhdfs
第二:修改 hadoop 集群的 core-site.xml 配置文件:加入两条配置信息:表示设置 hadoop 的代理用户
配置解析: hadoop.proxyuser.hadoop.hosts 配置成*的意义,表示任意节点使用 hadoop 集群的代理用户 hadoop 都能访问 hdfs 集群,hadoop.proxyuser.hadoop.groups 表示代理用户的组所属
第一步:先启动 hiveserver2 服务
前台启动方式:hiveserver2
后台启动方式:
nohup hiveserver2 1>/home/hadoop/hiveserver.log 2>/home/hadoop/hiveserver.err &
或者:nohup hiveserver2 1>/dev/null 2>/dev/null &
或者:nohup hiveserver2 >/dev/null 2>&1 &
以上 3 个命令是等价的,第一个表示记录日志,第二个和第三个表示不记录日志 (ps:注意符号&是结尾符,一定要带上,本人刚开始操作的时候经常忘记0.0,提醒一下)
命令中的 1 和 2 的意义分别是: 1:表示标准日志输出 2:表示错误日志输出 如果我没有配置日志的输出路径,日志会生成在当前工作目录,默认的日志名称叫做: nohup.xxx
第二步:然后启动 beeline 客户端去连接:
beeline -u jdbc:hive2://hadoop01:10000 -n hadoop -u : 指定元数据库的链接信息 -n : 指定用户名和密码
不过我比较习惯常用的是先执行 beeline 然后按图所示输入:!connect jdbc:hive2://hadoop01:10000 按回车,然后输入用户名,这个 用户名就是安装 hadoop 集群的用户名,情形如下图
接下来便可以做 hive 操作
还有第三种hive启动方式 Web UI ,配置相对繁琐,本文不做过多介绍,有兴趣的朋友可以去了解一下。
4.1测试hive
这个部分比较简单就不截图了,附上一组小命令,自行检测。
show databases;
create database test_work; //新建一个测试库
use test_work;
craete table course(id string);
insert into table course values("qq");
exit;
以上正常执行,表明hive已经安装和配置完成。可去hdfs图形界面上查看建的表,访问xxxx.50070
(ps:mysql上只存储hive的元数据,而原始数据是存储在hdfs上的,默认存储路径上面配置hive-site.xml时已有说明,如果没有指定hive.metastore.warehouse.dir属性,则默认值是/user/hive/warehouse)