hadoop 环境上运行 Hive
用户通过用户接口连接 Hive 并发布 Hive SQL
Hive 解析查询并制定查询计划
Hive 将查询转换成 MapReduce 作业
Hive 在 Hadoop 上执行 MapReduce 作业
特别注意 :
Hive 在 HDFS 中的默认位置是 /user/hive/warehouse,是由配置文件 hive-conf.xml 中属性 hive.metastore.warehouse.dir 决定的。
安装 Hive - derby
虚拟机 : VirtualBox 5.1.30
系统 : Ubuntu 14.04.5
Hive : hive-2.1.1
前置条件 : hadoop 伪分布式配置成功并可以启动 NameNode 和 DataNode 进程 ;
运行下面命令之前生效一次用户环境变量 (~/.bashrc)
配置环境变量
- 选择一个版本 下载 hive , 这里笔者下载的是 2.1.1 版本 , 下载完成后将安装包放在 Ubuntu 的某个文件夹下面
# 创建一个文件夹 用于放置 hive 的配置文件
sudo mkdir $HADOOP_HOME/apps # 这里的 $HADOOP_HOME = /usr/local/hadoop
# 解压 hive
sudo tar -zxvf apache-hive-2.1.1-bin.tar.gz –C /usr/local/hadoop/apps
cd /usr/local/hadoop/apps
sudo mv apache-hive-2.1.1 hive
# 修改 hive 文件夹的所有者 , 笔者这里将其 所有者 改为当前登录的用户
sudo chown -R hadoop0 hive
# 修改~/.bashrc,加入环境变量
export HIVE_HOME=$HADOOP_HOME/apps/hive
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin:
# 生效环境变量
source ~/.bashrc
修改 hive-config.sh
经笔者测试,此文件可以无需修改,也可运行 Hive
cd $HIVE_HOME/bin
gedit hive-config.sh
# 打开此文件之后添加如下三行内容
export JAVA_HOME=/usr/local/jdk # jdk 的 bin文件夹所在的目录
export HIVE_HOME=/usr/local/hadoop/apps/hive # Hive 的 bin文件夹所在的目录
export HADOOP_HOME=/usr/local/hadoop # hadoop 的 bin文件夹所在的目录
修改 hive-env.sh
cd $HADOOP_HOME/apps/hive/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh +48
# 进入 hive-env.sh 文件后修改,这里记得放开 HADOOP_HOME 此行的注释
HADOOP_HOME=$HADOOP_HOME
export HIVE_CONF_DIR=$HIVE_HOME/conf
修改 hive-site.xml
cd $HADOOP_HOME/apps/hive/conf
cp hive-default.xml.template hive-site.xml # 拷贝一个新的文件出来
vim hive-site.xml
-
修改 hive-site.xml 文件 , 由于此文件内容繁多 , 修改内容时请搜索 name 后面的关键字
<property>
<!-- vim hive-site.xml +1515 -->
<name>hive.querylog.location</name>
<value>/usr/local/hadoop/apps/hive/iotmp</value>
</property>
<property>
<!-- vim hive-site.xml +43 -->
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hadoop/apps/hive/iotmp</value>
</property>
<property>
<!-- vim hive-site.xml +48 -->
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hadoop/apps/hive/iotmp</value>
</property> -
在 HIVE_HOME 目录下创建 iotmp 目录
cd $HIVE_HOME
mkdir iotmp
启动 Hive
启动 hive 之前 , 需要初始化元数据库 , 初始化元数据库时尽量进入一个比较好记的目录下 ; 并保证此目录下面没有 metastore_db 文件夹的存在
cd ~
# 初始化元数据库
schematool -initSchema -dbType derby
# 初始化没有报错即可启动 Hive
start-all.sh # 首先启动hadoop , 若已经启动过 hadoop 请直接启动 Hive
hive # 启动 Hive
配置 Hive - MySQL
配置 MySQL 之前请先配置一次 derby
安装 MySQL
sudo apt-get install mysql-server mysql-client
# 安装过程中需要输入 root 账户的密码
# 进入 MySQL
mysql -u root -p # 回车后输入 root 账户的密码
- 进入 MySQL后 , 建立 hive 用户 , 并配置 hive 用户的权限
create user 'hive' identified by 'hive';
-- 添加权限
grant all privileges on *.* to 'hive'@'%' with grant option;
flush privileges;
-- 退出当前的 mysql
exit;
-- 使用 hive 账户登录 , -p后面无空格
mysql -u hive -phive
-- 建立 hive 数据库
create database hive;
配置 hive-site.xml
# 进入 hive-site.xml 文件所在目录
cd $HIVE_HOME/conf
# 打开要修改的文件
vim hive-site.xml
- 在 hive-site.xml 里面添加如下内容
<configuration>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?characterEncoding=UTF-8</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/usr/local/hadoop/apps/hive/iotmp</value>
</property>
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/hadoop/apps/hive/iotmp</value>
</property>
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/hadoop/apps/hive/iotmp</value>
</property>
</configuration>
配置连接 jar 包
- 下载 mysql-connector-java-5.1.44-bin.jar
下载完成后将 jar 包放置到 $HIVE_HOME/lib 目录下
启动 hive
初始化元数据库
schematool -initSchema -dbType mysql
启动 hadoop
start-all.sh
启动 Hive
hive
-------------本文结束 感谢您的阅读-------------