Hive(一):基础知识最全总结(转载)

Hive基础
一、基础概念
Hive:facebook实现并开源的Hadoop的一个数据仓库工具,底层数据存储依赖于Hadoop的HDFS分布式文件存储上,将结构化数据映射到一张数据库表中,并提供HQL的查询功能,HQL的本质在于将HQL解析,转换为MapReduce任务进行数据的分析。

概括下:Hive就是基于HDFS进行数据存储,HSQ基于MapReduce任务进行数据分析的Hadoop数据仓库工具。


MapReduce 所面临的问题:

1、人员学习成本太高
2、项目周期要求太短
3、MapReduce实现复杂查询逻辑开发难度太大
为什么要使用 Hive

1、更友好的接口:操作接口采用类 SQL 的语法,提供快速开发的能力
2、更低的学习成本:避免了写 MapReduce,减少开发人员的学习成本
3、更好的扩展性:可自由扩展集群规模而无需重启服务,还支持用户自定义函数
二、数据仓库与数据库
数据库:Database (Oracle, Mysql, PostgreSQL)主要用于事务处理(OLTP)
典型代表:常用的关系型数据库(RDBMS):MySQL,Oracle,SqlServer等
数据仓库:Datawarehouse (Amazon Redshift, Hive)主要用于数据分析(OLAP)。
典型代表:AWS Redshift, Greenplum, Hive等
Hive与关系型数据库(RDBMS)对比


三、Hive的基本特性
采用批处理方式处理海量数据
Hive需要把HiveQL语句转换成MapReduce任务进行运行。
数据仓库存储的是静态数据,对静态数据的分析适合采用批处理方式,不需要快速响应给出结果,而且数据本身也不会频繁变化。
提供适合数据仓库操作的工具
Hive本身提供了一系列对数据进行提取、转换、加载(ETL)的工具,可以存储、查询和分析存储在Hadoop中的大规模数据。
这些工具能够很好地满足数据仓库各种应用场景。
四、Hive基础组件


用户接口模块包括CLI、HWI、JDBC、ODBC、Thrift Server。
CLI,Shell 终端命令行(Command Line Interface),采用交互形式使用 Hive 命令行与 Hive 进行交互,最常用(学习,调试,生产)
JDBC/ODBC,是Hive的基于JDBC操作提供的客户端,用户(开发员,运维人员)通过 这连接至 Hive server 服务。
Web UI,通过浏览器访问 Hive。
驱动模块(Driver)包括编译器、优化器、执行器等,负责把HiveSQL语句转换成一系列MapReduce作业。
Hive的核心是驱动引擎, 驱动引擎由四部分组成:
(1) 解释器:解释器的作用是将 HiveSQL 语句转换为抽象语法树(AST)
(2) 编译器:编译器是将语法树编译为逻辑执行计划
(3) 优化器:优化器是对逻辑执行计划进行优化
(4) 执行器:执行器是调用底层的运行框架执行逻辑执行计划
元数据存储模块(Metastore)是一个独立的关系型数据库(自带derby数据库,或MySQL数据库)
Hive 中的元数据通常包括:表的名字,表的列和分区及其属性,表的属性(内部表和 外部表),表的数据所在目录。
Metastore 默认存在自带的Derby数据库中。缺点就是不适合多用户操作,并且数据存储目录不固定。数据库跟着 Hive打开的路径走,极度不方便管理。
解决方案:通常存我们自己创建的MySQL库(本地或远程),Hive 和 MySQL 之间通过 MetaStore 服务交互。
五、Hive的工作原理
① SQL语句转换成MapReduce作业的基本原理
以Join语句和Group by语句为例

Join过程


Group by过程

② HQL查询转换成MapReduce作业


第1步:由Hive驱动模块中的编译器对用户输入的SQL语言进行词法和语法解析,将SQL语句转化为抽象语法树的形式。
第2步:抽象语法树的结构仍很复杂,不方便直接翻译为MapReduce算法程序,因此,把抽象语法书转化为查询块。
第3步:把查询块转换成逻辑查询计划,里面包含了许多逻辑操作符。
第4步:重写逻辑查询计划,进行优化,合并多余操作,减少MapReduce任务数量。
第5步:将逻辑操作符转换成需要执行的具体MapReduce任务。
第6步:对生成的MapReduce任务进行优化,生成最终的MapReduce任务执行计划。
第7步:由Hive驱动模块中的执行器,对最终的MapReduce任务进行执行输出。
注意事项

扫描二维码关注公众号,回复: 11410582 查看本文章

当启动MapReduce程序时,Hive本身是不会生成MapReduce算法程序的,需要通过一个表示“Job执行计划”的XML文件驱动执行内置的、原生的Mapper和Reducer模块。
Hive通过和JobTracker通信来初始化MapReduce任务,不必直接部署在JobTracker所在的管理节点上执行。
通常在大型集群上,会有专门的网关机来部署Hive工具。网关机的作用主要是远程操作和管理节点上的JobTracker通信来执行任务。
数据文件通常存储在HDFS上,HDFS由名称节点管理。

版权声明:本文为CSDN博主「F道人」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_38246518/article/details/106629218

猜你喜欢

转载自blog.csdn.net/CH_sir/article/details/107511902