6、安装Hive
安装Hive
数据仓库(元数据存储在postgresql中,元数据包括表名、表的属性等,实际数据存储于 HDFS 中)
输入 start-all.sh
,启动Hadoop集群,
hadoop01:
hadoop02:
hadoop03:
下载Hive,官网下载,由于Hadoop的版本是3.1.4,所以这里Hive选择3.1.2版本
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
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版本
!
安装成功。
配置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/
4.修改hive-site.xml中的临时目录
cd /usr/local/hive/conf
,修改hive-site.xml。
如果没有,就以模板复制一个:
cp hive-default.xml.template hive-site.xml
vi hive-site.xml //配置hive-site.xml
- 将hive-site.xml文件中的${system:java.io.tmpdir}替换为/usr/local/hive/tmp
%s#${system:java.io.tmpdir}#/usr/local/hive/tmp#g
6.将${system:user.name}都替换为root
%s#${system:user.name}#root#g
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
修改hive.metastore.schema.verification,将对应的value修改为false
查找ConnectionURL、ConnectionDriverName、ConnectionUserName、ConnectionPassword,将多余的注释掉,只保留一个
找到hive-site.xml的第3237行
直接将
注释掉
- 将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
,生成元数据
启动hive,./hive
执行show databases;
查看数据库
执行查看函数的命令show funtions;
执行查看sum函数的详细信息的命令desc function sum;
导入数据测试
1.在终端新建文件:touch /usr/local/hive/student.txt
添加内容:vi /usr/local/hive/student.txt
(注意:id和name直接是tab键)
001 zhangsan
002 lisi
003 wangwu
004 zhaoliu
005 chenqi
2.新建数据库,创建数据表
create database db_hive_edu;
use db_hive_edu;
create table student(id int,name string) row format delimited fields terminated by '\t';
3.将student.txt写入到数据表中
load data local inpath '/usr/local/hive/student.txt' into table db_hive_edu.student;
查看是否写入成功select * from student;
4.在界面上查看刚才写入hdfs的数据,打开浏览器访问如下地址:
http://hadoop01:9870/explorer.html#/user/hive/warehouse/db_hive_edu.db
点击student,
再点击student.txt,会弹出一个框
5.在MySQL数据库中查看hive创建的表
完成。