Hive引擎底层初探

打印 上一主题 下一主题

主题 888|帖子 888|积分 2664

作者:京东物流 沈世莹
     1、什么是Hive

     Hive是一个基于Hadoop的数据堆栈工具,用于处理和分析大规模结构化数据。Hive提供了类似SQL的查询语言(HiveQL),使得认识SQL的用户能够查询数据。Hive将SQL查询转换为MapReduce任务,以在Hadoop集群上实行数据处理和分析。
     2、Hive劈头

     回答这个题目之前,先介绍下Hadoop。Hadoop是专门为离线和大数据分析而设计的分布式基础架构。Hadoop的盘算模子是MapReduce,将盘算任务分割成多个处理单元,并将其分散到一群家用或服务级别的硬件机器上,从而降低本钱。但是直接用MapReduce处理大数据碰面临难题:
     •MapReduce开发需要具备较高的底层细节知识,开发难度大,学习本钱高
     •使用MapReduce框架开发,项目周期长,本钱高
     在此配景下Hive应运而生。Hive是基于Hadoop的一个数据堆栈工具,本质是将SQL转换成MapReduce任务进行运算。将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,极大降低用户使用难度。
     3、Hive架构

     3.1 基本组成部分

     Hive的架构是一个复杂的系统,通过用户接口、元数据存储、驱动器和Hadoop集群等多个组件的协同工作,实现了对大规模数据的高效存储和查询处理。其架构图如下图所示。
     

     •用户接口模块
     这是用户与Hive进行交互的主要方式。Hive提供了多种用户接口,包括CLI(命令行接口)、Client(客户端)、WUI(Web用户界面)以及JDBC/ODBC(答应Java或其他编程语言通过JDBC或ODBC访问Hive)。通过这些接口,用户可以实行HQL(Hive查询语言)语句,进行数据的查询、分析和管理。
     BDP平台将页面的SQL转换成SHELL脚本,调用CLI来启动Hive引擎。
     

     

     •元数据模块
     Hive是将数据文件映射成一张表,元数据模块主要负责形貌和管理数据存储、表结构、分区信息等,通常存储在关系型数据库中,如MySQL或Derby。
     

     •驱动器(Driver)
     驱动器是Hive的焦点组件,主要作用是将HiveQL语句转换成一系列的MapReduce(MR)作业。驱动器中包含了剖析器、编译器、优化器和实行器等多个子组件。剖析器将用户的HQL查询语句转换为抽象语法树(AST),编译器将AST编译成逻辑实行计划,优化器对逻辑计划进行优化,末了实行器将优化后的计划转换成可以运行的物理计划并实行。
     

     •Hadoop集群
     Hive是创建在Hadoop上的数据堆栈基础构架,因此Hadoop集群是Hive架构的告急组成部分。Hive使用Hadoop的分布式文件系统(HDFS)进行数据存储,利用Hadoop的MapReduce框架进行大规模数据的盘算和处理。
     3.2 Hadoop

     Hadoop是开源的分布式存储和盘算系统,旨在处理大规模数据集。它最初由Apache软件基金会开发,现已成为处理大数据的行业标准之一。Hadoop主要包括以下焦点组件:HDFS、MapReduce。
     3.2.1 分布式文件系统(HDFS)

     HDFS是Hadoop的分布式文件系统,用于存储大规模数据集。它将数据分布存储在集群中的多台服务器上,通过数据冗余存储来提供容错性和高可靠性。
     ◦高可靠性
     HDFS它将文件数据划分为多个数据块,并在集群中的多个节点上进行复制存储。每个数据块默认会有多个(通常是三个)副本存储在不同的节点上。这种冗余存储机制确保了即使某个节点或副本发生故障,数据仍然可以从其他副本中恢复,从而保证了数据的高可靠性。
     ◦HDFS架构
     HDFS采用了主从架构,包括一个NameNode和多个DataNode。NameNode负责管理文件系统的定名空间和元数据信息,而DataNode负责存储实际的数据块。
     ◦读取文件的过程:
     1.客户端向NameNode请求获取文件,并对请求进行查抄。
     2.假如请求查抄通过,NameNode将查询元数据,向客户端返回文件所在的各个Block的DN地址。
     3.客户端拿到DN列表之后,按照Block,根据负载规则请求一台服务器,创建通道读取数据。
     4.DN接收到请求后,向客户端传输Block内容。
     5.获取到的内容,存入本地缓存,然后写入到输出目标中。
     

     3.2.2 分布式盘算框架(MapReduce)

     MapReduce是Hadoop的分布式盘算框架,用于在大规模数据集上实行并行盘算任务。它将盘算任务分解为多个独立的子任务,然后在集群中的多台盘算节点上并行实行这些子任务。MapReduce包括Map阶段和Reduce阶段 ,2个阶段。
     ◦Map阶段将原始数据分解为更小的数据单元,这些单元可以被并行处理,且相互之间没有太多依赖。
     ◦Reduce阶段则对Map阶段天生的中间结果进行汇总,以得到终极的处理结果。
     

     4、Hive工作流程

     Hive是一个创建在Hadoop之上的数据堆栈系统,它提供了类似于SQL的查询语言(HiveQL),使用户可以在大规模数据集上实行查询和分析操纵。下面是Hive的工作流程:
     1.剖析HiveSQL
     ◦当用户提交一个HiveSQL查询时,Hive的剖析器首先会剖析这个查询,将其转换成一个抽象语法树(AST)。
     ◦剖析器会查抄SQL语法的正确性,并将SQL语句的各个部分(如SELECT、FROM、WHERE等)转换为相应的内部表示。
     2.语义分析
     ◦语义分析阶段会查抄查询的语义正确性,确保全部引用的表、列和函数都存在且有效。
     ◦在这个阶段,Hive还会获取表的元数据,如列的数据范例、表的分区信息等,为后续的计划天生做准备。
     3.天生逻辑实行计划
     ◦接下来,Hive会根据剖析和语义分析的结果,天生一个逻辑实行计划。这个计划形貌了查询的实行步骤,但不涉及具体的物理操纵。
     ◦逻辑计划通常包括一系列的操纵,如扫描表、过滤数据、聚合数据等。
     4.逻辑计划优化
     ◦在天生逻辑计划后,Hive会对其进行优化,以提高查询的实行服从。
     ◦优化可能包括重写查询、消除冗余操纵、选择更有效的毗连计谋等。
     5.天生物理实行计划
     ◦优化后的逻辑计划会被转换为物理实行计划。物理计划形貌了如安在Hadoop集群上实际实行查询。
     ◦在这个阶段,Hive会决定将哪些操纵映射到MapReduce任务上,以及如安在集群中分配这些任务。
     6.实行MapReduce任务
     ◦根据物理实行计划,Hive会启动MapReduce任务来实行查询。任务读取的数据来自HDFS。
     ◦Map阶段通常负责读取数据并进行一些基本的处理,如过滤和转换。
     ◦Reduce阶段则负责聚合数据并天生最闭幕果。
     7.返回结果
     ◦当全部MapReduce任务完成后,Hive会收集并整理结果,然后将其返回给用户。
     


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

石小疯

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表