前言

安装Apache Hive前提是要先安装hadoop集群,并且hive只需要在hadoop的namenode节点集群里安装即可,安装前需保证Hadoop已启(动文中用到了hadoop的hdfs命令)。

关于如何安装Hadoop集群请参照:CentOS7搭建Hadoop2.8.0集群及基础操作与测试

下载Apache Hadoop

下载

地址:http://hive.apache.org/downloads.html

执行hive导致linux空间满了 如何处理_hadoop

执行hive导致linux空间满了 如何处理_apache_02

执行hive导致linux空间满了 如何处理_apache_03

wget http://mirrors.hust.edu.cn/apache/hive/hive-2.1.1/apache-hive-2.1.1-bin.tar.gz
解压
tar -zxvf apache-hive-2.1.1-bin.tar.gz
移动文件夹
mv apache-hive-2.1.1-bin /usr/local/hadoop/
配置环境变量

执行hive导致linux空间满了 如何处理_apache_04

立即生效

source ~/.bashrc

修改配置

配置hive-site.xml

进入目录$HIVE_HOME/conf,将hive-default.xml.template文件复制一份并改名为hive-site.xml

#进入hive配置文件目录$HIVE_HOME/conf
cd $HIVE_HOME/conf 
#拷贝并重命名
cp hive-default.xml.template hive-site.xml

因为

执行hive导致linux空间满了 如何处理_hive_05

执行hive导致linux空间满了 如何处理_hadoop_06

所以要让hadoop新建/user/hive/warehouse目录,执行命令:

$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse

给刚才新建的目录赋予读写权限,执行命令:

$HADOOP_HOME/bin/hadoop fs -chmod 777 /user/hive/warehouse

让hadoop新建/tmp/hive/目录,执行命令:

$HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/

给刚才新建的目录赋予读写权限,执行命令:

$HADOOP_HOME/bin/hadoop fs -chmod 777 /tmp/hive

检查hdfs目录是否创建成功

检查/user/hive/warehouse目录是否创建成功,执行命令:

$HADOOP_HOME/bin/hadoop  fs  -ls  /user/hive/

如图:

执行hive导致linux空间满了 如何处理_hadoop_07

检查/tmp/hive是否创建成功,执行命令:

$HADOOP_HOME/bin/hadoop  fs  -ls /tmp/

如图:

执行hive导致linux空间满了 如何处理_hadoop_08

修改hive-site.xml中的临时目录

将hive-site.xml文件中的${system:java.io.tmpdir}替换为hive的临时目录,例如我替换为 /usr/local/hadoop/apache-hive-2.1.1-bin/tmp,该目录如果不存在则要自己手工创建,并且赋予读写权限。

如图:

执行hive导致linux空间满了 如何处理_hadoop_09

替换为

执行hive导致linux空间满了 如何处理_hive_10

将${system:user.name}都替换为root

执行hive导致linux空间满了 如何处理_hive_11

替换为

执行hive导致linux空间满了 如何处理_hadoop_12

切记要全部替换,以上只为示例。

修改hive-site.xml数据库相关的配置

本文使用postgres数据库

搜索javax.jdo.option.ConnectionURL,将该name对应的value修改为Postgres的地址,例如我修改后是:

     <name>javax.jdo.option.ConnectionURL</name>  
     <value>jdbc:postgresql://192.168.174.200:5432/postgres?charSet=utf-8</value>


搜索javax.jdo.option.ConnectionDriverName,将该name对应的value修改为MySQL驱动类路径,例如我的修改后是:

	<name>javax.jdo.option.ConnectionDriverName</name> 
    <value>org.postgresql.Driver</value> 
     


搜索javax.jdo.option.ConnectionUserName,将对应的value修改为MySQL数据库登录名:

    <name>javax.jdo.option.ConnectionUserName</name>

    <value>postgre</value>


搜索javax.jdo.option.ConnectionPassword,将对应的value修改为MySQL数据库的登录密码:

     <name>javax.jdo.option.ConnectionPassword</name>

     <value>postgre</value>


搜索hive.metastore.schema.verification,将对应的value修改为false:

    <name>hive.metastore.schema.verification</name>

    <value>false</value>
上传postgres驱动包到lib目录

将postgres驱动包上载到Hive的lib目录下,例如我是上载到/usr/local/hadoop/apache-hive-2.1.1-bin/lib目录下。

执行hive导致linux空间满了 如何处理_apache_13

新建hive-env.sh文件并进行修改

进入到/opt/hive/apache-hive-2.1.1-bin/conf目录,命令:

cd /opt/hive/apache-hive-2.1.1-bin/conf

将hive-env.sh.template文件复制一份,并且改名为hive-env.sh,命令:

cp hive-env.sh.template  hive-env.sh

打开hive-env.sh配置并且添加以下内容:

vim hive-env.sh
export  HADOOP_HOME=/usr/local/hadoop/hadoop-2.8.0
export  HIVE_CONF_DIR=/usr/local/hadoop/apache-hive-2.1.1-bin/conf
export  HIVE_AUX_JARS_PATH=/usr/local/hadoop/apache-hive-2.1.1-bin/lib

启动与测试

对postgres数据库进行初始化

进入到hive的bin目录 执行命令:

cd /usr/local/hadoop/apache-hive-2.1.1-bin/bin

对数据库进行初始化,执行命令:

schematool -initSchema -dbType postgres

如图:

执行hive导致linux空间满了 如何处理_hadoop_14

执行成功后,hive数据库里已经有一堆表创建好了

如图:

执行hive导致linux空间满了 如何处理_apache_15

启动hive

进入到hive的bin目录执行命令:

cd /usr/local/hadoop/apache-hive-2.1.1-bin/bin

执行hive脚本进行启动,执行命令:

./hive

如图:

执行hive导致linux空间满了 如何处理_hive_16

以上Hive配置完成