一、Hive介绍
什么是hive
hive是一个构建在hadoop上的数据仓库框架,是应facebook每天产生的海量新兴社会网络数据进行管理和(机器)学习的需求而产生和发展的,其设计目的是让精通sql技能但java编程技能较弱的分析师能够对facebook存放在hdfs中的大规模数据集执行查询。
hive与传统数据仓库的区别
传统数据仓库采用oracle或mysql等数据库搭建,其数据也是存储在这些数据库中;而hive是建立在hadoop的hdfs上的数据仓库基础框架,其数据存储在hdfs上,但其元数据(metadata)因其metaStore配置不同而存在不同的地方。
hive的metastore有三种不同的配置方式:
- 默认是采用嵌入方式
内部集成derby数据库(hive自带的),元数据存储在deby中;这种方式的局限在于:只允许创建一个连接,同时只允许一个用户访问,适用于作演示用的demo这种方式的特性是hive服务和metastore服务(derby)在同一个jvm
- 本地模式
元数据存储在外部数据库mysql(或其他)中mysql和hive运行在同一台物理机上,多用于开发和测试允许创建多个连接
- 远程模式
元数据存储在外部数据库mysql(或其他)中hive和mysql运行在不同的机器上,多用于生产环境,允许创建多个连接
hive的metastore的三种不同配置方式,也对应了三种不同的安装方式,本文主要介绍第二种安装方式。
二、Hive安装
1、安装hadoop
采用伪分布式安装可参考:http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-common/SingleCluster.html
2、安装mysql
3、安装Hive
1)下载和Hadoop匹配的hive稳定版本 官网:http://hive.apache.org/downloads.html (看和你安装的Hadoop版本相对应)
2)安装hive安装包
cd /usr/local/
tar -zxvf /var/ftp/pub/apache-hive-3.1.2-bin.tar.gz
mv apache-hive-3.1.2-bin/ apache-hive-3.1.2/
3)添加环境变量
/etc/profile
#Hive
export HIVE_HOME="/usr/local/apache-hive-3.1.2"
export HCAT_HOME="/usr/local/apache-hive-3.1.2/hcatalog"
export PATH=".$PATH:$HCAT_HOME/bin:$HIVE_HOME/bin"
4)mysql创建用户
# 登录数据库命令行
mysql -u root
# 创建数据库hive
create database hive;
# 新建用户hadoop,主机为localhost,密码为mysql
create user 'hadoop'@'localhost' identified by 'mysql';
# 为刚创建的用户授权
grant all privileges on *.* to 'hadoop'@'localhost' with grant option;
flush privileges;
# 查看用户
select user,host from mysql.user;
5)修改配置文件
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--加入上一步创建的mysql的用户名、密码、数据库表连接url -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hadoop</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>mysql</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>mysql
<value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>
</property>
<!-- 数据库连接驱动器 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- 版本信息配置 -->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
6)在hadoop中创建hive所需的仓库
# $HADOOP_HOME为hadoop的主目录
$HADOOP_HOME/bin/hadoop fs -mkdir /tmp
$HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse
7)hive初始化mysql中的数据库hive
#统一hive和mysql服务的时区。
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime // hive和mysql服务器都要执行,mysql要重启服务
# $HIVE_HOME为hive安装路径的主目录
$HIVE_HOME/bin/schematool -dbType msyql -initSchema
mysql connector jar包下载地址:https://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-8.0.21.zip (可换成对应版本的地址)
8)启动hive的metastore server服务进程
$HIVE_HOME/bin/hive --service metastore &
9)登录hive客户端
# 若配置了hive环境变量,可以直接执行hive
$HIVE_HOME/bin/ hive
三、使用hiveserver2和beeline
1)修改$HADOOP_HOME/etc/hadoop/core-site.xml文件,增加如下配置:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
2)启动hiveserver2
cd /usr/local/apache-hive-3.1.2/bin/
hiveserver2
hiveserver2 & // 以后台形式运行
3)进入beeline命令行
beeline -u jdbc:hive2://***.***.***.***:10000
4)使用DBeaver连接
驱动选择jdbc:hive2即可以正常连接
参考文章:
https://www.cnblogs.com/zhi-leaf/p/11506148.html
https://www.cxyzjd.com/article/qq_43688472/99431002