Hive 的安装和配置

2,305 阅读2分钟
原文链接: blog.sanyuehua.net

hadoop 环境上运行 Hive

用户通过用户接口连接 Hive  并发布 Hive SQL
Hive 解析查询并制定查询计划
Hive 将查询转换成 MapReduce 作业
Hive 在 Hadoop 上执行 MapReduce 作业

特别注意 :
HiveHDFS 中的默认位置是 /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 启动成功后效果如下图

    使用 show databases; 查看有哪些数据库

配置 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 包

启动 hive

初始化元数据库

schematool -initSchema -dbType mysql

启动 hadoop

start-all.sh

启动 Hive

hive
-------------本文结束 感谢您的阅读-------------