6、安装Hive


安装Hive

数据仓库(元数据存储在postgresql中,元数据包括表名、表的属性等,实际数据存储于 HDFS 中)

输入 start-all.sh,启动Hadoop集群,

hadoop01:

hadoop02:

image-20211029131444769

hadoop03:

image-20211029131552144

下载Hive,官网下载,由于Hadoop的版本是3.1.4,所以这里Hive选择3.1.2版本

image-20211101162046661

cd /usr/local
wget https://dlcdn.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

解压:tar -zxvf apache-hive-3.1.2-bin.tar.gz、改名:mv apache-hive-3.1.2-bin hive

image-20211101163212197

hive只需要在hadoop的namenode节点集群里安装即可,即hadoop01。

配置环境变量,编辑/etc/profile文件

export HIVE_HOME=/usr/local/hive
export HIVE_CONF_DIR=${HIVE_HOME}/conf
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=.:${HIVE_HOME}/lib:$CLASSPATH

source /etc/profile更新配置,输入hive --version查看hive版本

image-20211029153345926!

安装成功。

配置Hive

1.让hadoop新建/user/hive/warehouse目录,执行命令:

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

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

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

2.让hadoop新建tmp目录,执行命令:

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

赋予权限,执行命令:

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

3.查看hdfs目录和tmp目录是否创建成功

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

image-20211101142643164

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

cd /usr/local/hive/conf,修改hive-site.xml。

image-20211101163922052

如果没有,就以模板复制一个:

cp hive-default.xml.template hive-site.xml
vi hive-site.xml		//配置hive-site.xml
  1. 将hive-site.xml文件中的${system:java.io.tmpdir}替换为/usr/local/hive/tmp

%s#${system:java.io.tmpdir}#/usr/local/hive/tmp#g

image-20211101164105972

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

%s#${system:user.name}#root#g

image-20211101164138160

7.下载postgresql的jdbc驱动包(需要选择与自己系统环境相符的版本):

https://jdbc.postgresql.org/download/postgresql-42.2.24.jar

将驱动包移动到hive的lib目录下:mv postgresql-42.2.24.jar /usr/local/hive/lib

修改hive-site.xml,将默认数据库改为postgresql,添加以下内容


    javax.jdo.option.ConnectionURL
    jdbc:postgresql://192.168.115.130:5432/hive?characterEncoding=UTF-8
    JDBC connect string for a JDBC metastore


    javax.jdo.option.ConnectionDriverName
    org.postgresql.Driver
    Driver class name for a JDBC metastore


    javax.jdo.option.ConnectionUserName
    postgres
    username to use against metastore database


    javax.jdo.option.ConnectionPassword
    201314
    password to use against metastore database

image-20211104150351164

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

image-20211101152314536

查找ConnectionURL、ConnectionDriverName、ConnectionUserName、ConnectionPassword,将多余的注释掉,只保留一个

image-20211102102017662

image-20211102101337702

image-20211102102529450

image-20211102104242519

找到hive-site.xml的第3237行

image-20211102091745070

直接将注释掉

image-20211102092125740

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

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

vi hive-env.sh,添加以下内容

export  HADOOP_HOME=/usr/local/hadoop
export  PATH=$PATH:$HIVE_HOME/bin
export  HIVE_CONF_DIR=/usr/local/hive/conf
export  HIVE_AUX_JARS_PATH=/usr/local/hive/lib

9.查看hadoop和hive的两个guava.jar版本不一致,两个位置分别位于下面两个目录:

- /usr/local/hive/lib/
- /usr/local/hadoop/share/hadoop/common/lib/

解决办法:删除低版本的那个,将高版本的复制到低版本目录下,hadoop目录下的为guava-27.0-jre.jar,hive目录下的为guava-19.0.jar,删除hive目录下的guava-19.0.jar,将hadoop的复制过去

rm /usr/local/hive/lib/guava-19.0.jar

cp /usr/local/hadoop/share/hadoop/common/lib/guava-27.0-jre.jar /usr/local/hive/lib/

启动测试

初始化数据库./schematool -dbType postgres -initSchema,生成元数据

image-20211102104411407

启动hive,./hive

image-20211102111516729

执行show databases;查看数据库

image-20211102111340149

执行查看函数的命令show funtions;

image-20211102111719959

执行查看sum函数的详细信息的命令desc function sum;

image-20211102121928777

导入数据测试

1.在终端新建文件:touch /usr/local/hive/student.txt

image-20211102112409140

添加内容:vi /usr/local/hive/student.txt(注意:id和name直接是tab键)

001     zhangsan
002     lisi
003     wangwu
004     zhaoliu
005     chenqi

image-20211102121302594

2.新建数据库,创建数据表

create database db_hive_edu;
use db_hive_edu;
create table student(id int,name string) row format delimited fields terminated by '\t';

image-20211102123006506

3.将student.txt写入到数据表中

load data local inpath '/usr/local/hive/student.txt' into table db_hive_edu.student;

查看是否写入成功select * from student;

image-20211102123303359

4.在界面上查看刚才写入hdfs的数据,打开浏览器访问如下地址:

http://hadoop01:9870/explorer.html#/user/hive/warehouse/db_hive_edu.db

image-20211102123922026

点击student,

image-20211102124024013

再点击student.txt,会弹出一个框

image-20211102124109163

5.在MySQL数据库中查看hive创建的表

image-20211102125521723

完成。