hive体系结构

1、什么是hive

Hive是一个基于Hadoop的数据仓库,可以将结构化数据映射成一张表,并提供类SQL的功能,最初由Facebook提供,使用HQL作为查询接口、HDFS作为存储底层、mapReduce作为执行层,设计目的是让SQL技能良好,但Java技能较弱的分析师可以查询海量数据,2008年facebook把Hive项目贡献给Apache。Hive提供了比较完整的SQL功能(本质是将SQL转换为MapReduce),自身最大的缺点就是执行速度慢。Hive有自身的元数据结构描述,可以使用MySql\ProstgreSql\oracle 等关系型数据库来进行存储,但请注意Hive中的所有数据都存储在HDFS中。Hive具有比较好的灵活性和扩展性,支持UDF,自定义存储格式,适合离线数据处理。Hive在hadoop生态系统中地位如下图所示:

wps5EFC.tmp

2、hive的架构

wps5EFD.tmp

用户接口:client

CLI(hive shell)、JDBC/ODBC(java访问hive),WEBUI(浏览器访问hive)

元数据:metastore

元数据包括:表名、表所属数据库、表的拥有者、列/分区字段、表的类型、表数据所在目录。

Hadoop

使用hdfs进程数据存储,运行在yarn上,使用mapreduce进行计算。

驱动器:dirver

包含:解析器、编译器、优化器、执行器

解析器:将SQL字符串转换成抽象语法树AST,这一步一般都是用第三方工具库完成,比如antlr;对AST语法树进行分析,比如表否存在、字段是否存在、SQL语义是否有误。

编译器:将AST编译生成逻辑执行计划。

优化器:对逻辑执行计划进行优化。

执行器:把逻辑执行计划转换成物理执行计划。对于hive来说,就是MR/TEZ/Spark;

3、hive的优点及使用场景

1)操作接口使用SQL语法,提供快速开发的能力。

2)避免了去屑mapreduce,减少开发人员学习成本。

3)统一元数据管理,可与impala/spark等共享元数据。

4)因底层基于hadoop,易于扩展,支持自定义函数UDF。

5)数据离线处理,比如日志分析,海量数据结构化分析。

6)Hive执行延迟比较高,适合于做离线分析处理,不适合实时查询。

7)Hive优势在于处理大数据集,对于小数据集没有优势。

posted @   ChavinKing  阅读(1988)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
点击右上角即可分享
微信分享提示