目录
引言
Hive是一个基于Hadoop的数据仓库工具, 可以将结构化的数据文件映射为一张表, 并提供类似于SQL的查询功能。
Hive本身并不存储和处理数据,更像是一个接口,存储由HDFS实现,处理数据由MapReduce实现。简单来说,Hive可以将sql语句转换为MapReduce任务, 在HDFS上进行数据查询。
Hive的特点
- Hive采用类SQL开发,简单容易上手,避免了编写MapReduce的工作
- Hive执行延迟比较高,无法胜任实时的工作(OLTP),大多用于数据分析工作(OLAP)。
- Hive擅长处理大规模的数据
Hive系统架构
Hive主要由以下三个模块组成:
用户接口模块,含CLI、HWI、JDBC、Thrift Server等,用来实现对Hive的访问。CLI是Hive自带的命令行界面;HWI是Hive的一个简单网页界面;JDBC、ODBC以及Thrift Server可向用户提供进行编程的接口,其中Thrift Server是基于Thrift软件框架开发的,提供Hive的RPC通信接口。
驱动模块(Driver),含编译器、优化器、执行器等,负责把HiveQL语句转换成一系列MR作业,所有命令和查询都会进入驱动模块,通过该模块的解析变异,对计算过程进行优化,然后按照指定的步骤执行。
元数据存储模块(Metastore),是一个独立的关系型数据库,通常与MySQL数据库连接后创建的一个MySQL实例,也可以是Hive自带的Derby数据库实例。此模块主要保存表模式和其他系统元数据,如表的名称、表的列及其属性、表的分区及其属性、表的属性、表中数据所在位置信息等。
Hive的工作流程
Hive的工作流程可以被归纳成下图。
上面的的每一步流程对应下面的文字流程
1.用户提交查询任务给Driver。
2.Driver将查询任务给编译器,并请求返回一个plan。
3.编译器向MetaStore获取必要的元数据。
4.MetaStore返回编译器请求的元数据。
5.编译器生成多个stage的DAG作为plan,并将plan交给Driver。每个stage代表着一个map/reduce任务,或一个元数据操作,或一个HDFS操作。这相当于做了一套job的流水线。在Map stage中,plan包含了Map Operator Tree; 在Reduce stage中,plan包含了Reduce Operator Tree。
6.Driver上交plan给执行器去执行,获取元数据信息,提交给JobTracker或者ResourceManager去处理该任务,任务会直接读取HDFS中文件进行相应的操作。
7.获取执行的结果。
8.取得并返回执行结果。
Hive2.3.9安装
1.下载Hive
我们安装hive之前需要把Hadoop、MySQL、以及jdk这些组件安装好,因为hive依赖于这几个组件
下载hive2.3.9的安装包(apache-hive-2.3.9-bin.tar.gz),点击下面的链接下载自己需要的版本。
Index of /hive (apache.org)https://dlcdn.apache.org/hive/
2.上传安装包
将安装包(apache-hive-2.3.9-bin.tar.gz)上传到Centos7
3.解压
将Hive压缩包解压到/usr/local路径下,使用以下命令
tar -zxvf apache-hive-2.3.9-bin.tar.gz -C /usr/local
4.设置环境变量
设置HIVE_HOME环境变量以及PATH环境变量,可直接复制
vi /etc/profile
export HIVE_HOME=/usr/local/apache-hive-2.3.9-bin
export HIVE_PREFIX=$HIVE_HOME
export HIVE_CONF_DIR=$HIVE_HOME/etc/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/sbin:$PATH
设置完后更新环境变量,使用以下命令
source /etc/profile
5.创建hive-site.xml文件
将当前路径切换到hive的配置文件路径:cd $HIVE_HOME/conf(如果直接执行进不去这个目录,可以先进入主目录 cd /usr/local,再切换到conf目录。)并在该路径下创建一个hive-site.xml文件,编辑进入hive-site.xml,该文件内容如下(可直接复制,mysql地址信息、密码等要按实际情况修改):
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!-- mysql jdbc驱动 -->
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.cj.jdbc.Driver</value>
</property>
<!-- mysql 地址 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.159.128:3306/hive_metadata?serverTimezone=UTC&characterEncoding=UTF-8</value>
</property>
<!-- mysql 用户名 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<!-- mysql 密码 -->
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>Lzzy@2022</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
</configuration>
6.上传jar包
将mysql驱动mysql-connector-java-8.0.15.jar上传到hive的lib路径下
mysql-connector-java-8.0.15.jar供java程序或框架连接mysql数据库使用
相关下载链接://download.csdn.net/download/stevenjeason/11108837?utm_source=bbsseo
7.在mysql上创建一个数据库
进入MySQL命令:mysql -u root -p。数据库用来存hive的元数据信息(表名、表结构等信息)。mysql数据库建表语句:
CREATE DATABASE hive_metadata DEFAULT CHARACTER SET UTF8
8.启动hadoop
start-all.sh
9.hive初始化
元数据库初始化,切换到hive的bin目录下 执行
./schematool -dbType mysql -initSchema
10.hive的启动
运行hive之前要确保hadoop集群启动和MySQL服务启动正常开启的情况下
由于配置过环境变量,可以直接在命令行中输入hive 本地启动命令 hive
以上正常执行,表明hive已经安装和配置完成。可去hdfs图形界面上查看建的表,访问hadoopIP:50070
今天的分享就到这啦,希望能给你带来帮助!