今天在学习Hive的资料,需要搭建Hive环境,做个简单的记录 也可以供大家参考!
注:
根据自己的需要下载相应版本,以及存放目录。文档中的版本及目录都是本人环境,大家请根据自己的情况相应调整!
前提:
Hive是依赖于hadoop系统的,因此在运行Hive之前需要保证已经搭建好hadoop环境。
1、下载安装包
下载hive http://mirrors.hust.edu.cn/apache/
我下载的是apache-hive-2.1.1-bin.tar.gz ,放到该目录下 /home/XXX /
2、安装hive
1,解压安装包
命令:cd /home/XXX
命令:tar -zxvf apache-hive-2.1.1-bin.tar.gz
2、配置环境变量
1)命令:sudo vi /etc/profile
2)增加hive环境变量配置内容:
HIVE_HOME=/home/XXX/apache-hive-2.1.1-bin
PATH=$PATH:$HIVE_HOME/bin
export PATH
3)使环境变量生效
命令:source /etc/profile
3、修改配置文件
支持三种方式,请选择适合自己的:
- 进入到HIVE_HOME/conf目录下
- 配置hive-env.sh:
- 复制出hive-env.sh:cp hive-env.sh.template hive-env.sh
- 编辑hive-env.sh:vi hive-env.sh
- 设置Hadoop环境变量(放开HADOOP_HOME注释,并设置当前Hadoop的目录):HADOOP_HOME=/home/XXX/hadoop-2.8.0
- 设置Hive配置文件目录: export HIVE_CONF_DIR=/home/XXX/apache-hive-2.1.1-bin/conf
- 保存并退出编辑:wq
1)内嵌模式
内嵌模式是指元数据是内嵌在Derby数据库中的,只能允许一个会话连接,数据会存放到HDFS上。
- 进入到HIVE_HOME/conf目录下
- 配置hive-env.sh:
- 复制出hive-env.sh:cp hive-env.sh.template hive-env.sh
- 编辑hive-env.sh:vi hive-env.sh
- 设置Hadoop环境变量(放开HADOOP_HOME注释,并设置当前Hadoop的目录):HADOOP_HOME=/home/XXX/hadoop-2.8.0
- 设置Hive配置文件目录: export HIVE_CONF_DIR=/home/XXX/apache-hive-2.1.1-bin/conf
- 保存并退出编辑:wq
- 配置hive-site.xml(可以不作修改,直接默认;如需要修改,请查阅“本地模式”中配置说明)
- 初始化元数据
schematool -dbType derby -initSchema
2)本地模式
本地模式和内嵌模式的区别是不再使用内嵌的Derby作为元数据的存储介质,而是使用其他数据库(比如mysql、oracle;此处以mysql数据库举例)来存储元数据。
这是一个多用户的模式,运行多个用户客户端连接到同一个数据库。
所以就有一个前提,mysql数据库已经正确安装,且每一个用户必须要有对mysql的访问权利,即每一个客户端都需要知道或拥有mysql的用户名和密码。
- 创建mysql数据库用户(也可以直接使用已有用户)
- insert into mysql.user(Host,User,Password) values("localhost","hive",password("hive"));
- 创建数据库hive
- create database hive;
- 授权hive用户的权限
- grant all on hive.* to hive@'%' identified by 'hive';
- grant all on hive.* to hive@'localhost' identified by 'hive';
- flush privileges;
- 退出数据库
- exit;
- 进入到HIVE_HOME/conf目录下
- 配置hive-env.sh:
- 复制出hive-env.sh:cp hive-env.sh.template hive-env.sh
- 编辑hive-env.sh:vi hive-env.sh
- 设置Hadoop环境变量(放开HADOOP_HOME注释,并设置当前Hadoop的目录):HADOOP_HOME=/home/XXX/hadoop-2.8.0
- 设置Hive配置文件目录: export HIVE_CONF_DIR=/home/XXX/apache-hive-2.1.1-bin/conf
- 保存并退出编辑:wq
- 创建hive-site.xml文件
- hive-default.xml.template拷贝一份,命名为hive-site.xml:cp hive-default.xml.template hive-site.xml
- hive-default.xml.template拷贝一份,命名为hive-site.xml:cp hive-default.xml.template hive-site.xml
- 配置hive-site.xml
- vi hive-env.sh
- 修改javax.jdo.option.ConnectionURL属性
<property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property>
-
修改javax.jdo.option.ConnectionDriverName属性
<property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> <description>Driver class name for a JDBC metastore</description> </property>
-
- 修改javax.jdo.option.ConnectionUserName属性
<property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property>
- 修改javax.jdo.option.ConnectionPassword属性
- 修改javax.jdo.option.ConnectionUserName属性
-
-
<property> <name>javax.jdo.option.ConnectionPassword</name> <value>hive</value> <description>password to use against metastore database</description> </property>
-
- 将所有值包含“${system:java.io.tmpdir}” 的属性值设定为自己的实际路径
- 保存并退出编辑:wq
- 拷贝mysql-connector-java-5.1.6-bin.jar(使用自己的mysql相应版本) 到hive 的lib下面
- 将hive下的jline-2.12.jar替换掉hadoop自带的包,不然会报错。
cp /home/XXX/apache-hive-2.1.1-bin/lib/jline-2.12.jar /home/xxx/hadoop-2.8.0/share/hadoop/yarn/lib/
- 初始化元数据
schematool -dbType mysql -initSchema
- 配置hive-env.sh:
- 创建mysql数据库用户(也可以直接使用已有用户)
3)远程模式安装,即server模式
远程模式需要使用hive安装目录下提供的beeline+hiveserver2配合使用才可以。
远程模式的原理就是将metadata作为一个单独的服务进行启动,客户端通过beeline来连接,连接之前无需知道数据库的密码。
- 启动hiveserver2
./hiveserver2 start
- 在新的命令行窗口,执行beeline命令
beeline
- 启动hiveserver2
4、测试 :
- 执行要hive命令
- 显示数据库
- 执行要hive命令
到此hive安装已经初步完成,文章中未提及的详细部分,大家还请根据自己需要去查找相关资料!