hive,初步认知!!!
hi! 这是本猿的第一篇文,也是为了分享并记录本猿的码转生活,做好提升与成长,以下内容包含本猿的一点见解,如有不足,请批评指正,谢谢
1.Hive是什么
Hive是一个数据仓库基础工具,在Hadoop中用来处理结构化数据。它的架构用在Hadoop之上,使得数据查询和分析更加方便。提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行,弥补了MR的代码编写麻烦,是的数据查询分析的学习成本更低和更简单。hive的由来是因为使用传统的数据管理系统,难以加工大型数据。因此,Apache软件基金会推出了一款名为Hadoop的解决大数据管理和处理难题的框架。最初,Hive是由Facebook开发,后来由Apache开发,并进一步将它作为名义下一个开源项目。
2.对Hive的一般性误解
hive并不是一个关系数据库,也不是一个设计用于联机事务处理(OLTP),更不是用于实时查询和行级更新的语言
现代数据仓库,是构建在数据库之上的,使用数据库作为载体存放数据。
数据仓库着重强调的是存放的历史数据,数据库着重强调的是存放在线的数据。
数据仓库着重强调的是OLAP的操作,数据库着重强调的是OLTP的操作
数据仓库操作的都是历史数据,数据库操作的几乎都是在线交易数据
3.Hive的特点
(1)存储架构在一个数据库中并处理数据到HDFS;
(2)专为OLAP设计。
(3)提供SQL类型语言查询:HiveQL或HQL。
(4)熟知,快速和可扩展的,传统关系数据库只能拓展最多20个服务器,而Hive可以拓展到上百个服务器
数据处理大致可以分成两大类:联机事务处理OLTP(on-line transaction processing)、联机分析处理OLAP(On-Line Analytical Processing)。OLTP是传统的关系型数据库的主要应用,主要是基本的、日常的事务处理,例如银行交易。OLAP是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。
OLTP 系统强调数据库内存效率,强调内存各种指标的命令率,强调绑定变量,强调并发操作;
OLAP 系统则强调数据分析,强调SQL执行市场,强调磁盘I/O,强调分区等。
4.存储结构
Hive的数据存储基于Hadoop HDFS
Hive没有专门的数据存储格式
存储结构主要包括:数据库、文件、表、视图、索引
Hive默认可以直接加载文本文件(TextFile),还支持SequenceFile、RCFile 、ORCFile、Parquet
创建表时,指定Hive数据的列分隔符与行分隔符,Hive即可解析数据
5.Hive架构
用户接口:包括 CLI,JDBC/ODBC,WebUI
元数据存储:通常是存储在关系数据库如 mysql, derby等等中
Driver:解释器、编译器、优化器、执行器
Hadoop:用 HDFS 进行存储,利用 MapReduce 进行计算
单元名 | 操作 |
---|---|
用户接口/界面 | Hive是一个数据仓库基础工具软件,可以创建用户和HDFS之间互动。用户界面,Hive支持是Hive的Web UI,Hive命令行,HiveHD洞察(在Windows服务器) |
元存储 | Hive选择各自的数据库服务器,用以储存表,数据库,列模式或元数据表,它们的数据类型和HDFS映射 |
HQL处理引擎 | HiveQL类似于SQL的查询上Metastore模式信息。这是传统的方式进行MapReduce程序的替代品之一。相反,使用Java编写的MapReduce程序,可以编写为MapReduce工作,并处理它的查询 |
执行引擎 | HiveQL处理引擎和MapReduce的结合部分是由Hive执行引擎。执行引擎处理查询并产生结果和MapReduce的结果一样。它采用MapReduce方法 |
HDFS 或 HBASE | Hadoop的分布式文件系统或者HBASE数据存储技术是用于将数据存储到文件系统 |
6.Hive工作流程
NO | 操作 |
---|---|
1 | Execute Query Hive接口,如命令行或Web UI发送查询驱动程序(任何数据库驱动程序,如JDBC,ODBC等)来执行 |
2 | Get Plan 在驱动程序帮助下查询编译器,分析查询检查语法和查询计划或查询的要求 |
3 | Get Metadata 编译器发送元数据请求到Metastore(任何数据库) |
4 | Send Metadata Metastore发送元数据,以编译器的响应 |
5 | Send Plan 编译器检查要求,并重新发送计划给驱动程序。到此为止,查询解析和编译完成 |
6 | Execute Plan 驱动程序发送的执行计划到执行引擎 |
7 | Execute Job 在内部,执行作业的过程是一个MapReduce工作。执行引擎发送作业给JobTracker,在名称节点并把它分配作业到TaskTracker,这是在数据节点。在这里,查询执行MapReduce工作 |
7.1 | Metadata Ops 与此同时,在执行时,执行引擎可以通过Metastore执行元数据操作 |
8 | Fetch Result执行引擎接收来自数据节点的结果 |
9 | Send Results 执行引擎发送这些结果值给驱动程序 |
10 | Send Results驱动程序将结果发送给Hive接口 |