化学网站建设,小程序制作软件下载,罗夫曼三大社区模式,做直播网站需要学什么软件有哪些本文主要介绍Hive的架构和以及HQL的查询阶段#xff0c;主要内容包括#xff1a;Hive的架构架构中的相关组件介绍HQL的查询阶段Hive的架构hive的基本架构图如下图所示#xff1a;相关组件介绍数据存储Hive中的数据可以存储在任意与Hadoop兼容的文件系统#xff0c;其最常见…本文主要介绍Hive的架构和以及HQL的查询阶段主要内容包括Hive的架构架构中的相关组件介绍HQL的查询阶段Hive的架构hive的基本架构图如下图所示相关组件介绍数据存储Hive中的数据可以存储在任意与Hadoop兼容的文件系统其最常见的存储文件格式主要有ORC和Parquet。除了HDFS之外也支持一些商用的云对象存储比如AWS S3等。另外Hive可以读入并写入数据到其他的独立处理系统比如Druid、HBase等。Data catalogHive使用Hive Metastore(HMS)存储元数据信息使用关系型数据库来持久化存储这些信息其依赖于DataNucleus(提供了标准的接口JDO, JPA来访问各种类型的数据库资源 ),用于简化操作各种关系型数据库。为了请求低延迟HMS会直接通过DataNucleus直接查询关系型数据库。HMS的API支持多种编程语言。执行引擎最初版本的Hive支持MapReduce作为执行引擎后来又支持Tez和Spark作为执行引擎这些执行引擎都可以运行在YARN上。查询服务Hiveserver2(HS2)允许用户执行SQL查询Hiveserver2允许多个客户端提交请求到Hive并返回执行结果HS2支持本地和远程JDBC和ODBC连接另外Hive的发布版中包括一个JDBC的客户端称之为Beeline。Hive客户端Hive支持多种客户端比如Python, Java, C, Ruby等可以使用JDBC、ODBC和Thrift drivers连接HiveHive的客户端主要归为3类1Thrift ClientsHive的Server是基于Apache Thrift的所以支持thrift客户端的查询请求2JDBC Client允许使用Java通过JDBC driver连接HiveJDBC driver使用Thrift与Hive进行通信的3ODBC ClientHive的ODBC driver允许使用基于ODBC协议的应用来连接Hive与JDBC driver类似ODBC driver也是通过Thrift与Hive server进行通信的Hive DriverHive Driver接收来自客户端提交的HQL语句创建session handles并将查询发送到Compiler(编译器)。Hive CompilerHive的Compiler解析查询语句编译器会借助Hive的metastore存储的元数据信息对不同的查询块和查询表达式执行语义分析和类型检查然后生成执行计划。编译器生成的执行计划就是DAG每个Stage可能代表一个MR作业。Optimizer(优化器)比如列裁剪、谓词下推等优化提升查询效率执行过程Step1执行查询通过客户端提交查询Step2获取执行计划dirver接收到查询会创建session handle并将该查询传递给编译器生成执行计划Step3获取元数据编译器会向metastore发送获取元数据的请求Step4发送元数据metastore向编译器发送元数据编译器使用元数据执行类型检查和语义分析。编译器会生成执行计划(DAG),对于MapReduce作业而言执行计划包括map operator trees和reduce operator treeStep5发送执行计划编译器向Driver发送生成的执行计划Step6执行查询计划从编译器那里获取执行计划之后Driver会向执行引擎发送执行计划Step7提交MR作业Step8返回查询结果将查询结果通过Driver返回个查询客户端HQL的查询阶段Hive的查询阶段如下图所示具体分析如下如上图所示1.用户提交查询到HS22.该查询被Driver处理由编译器会解析该查询语句并从AST中生成一个Calcite逻辑计划3.优化逻辑计划HS2会访问关于HMS的元数据信息用来达到验证和优化的目的4.优化的逻辑计划被转换为物理执行计划5.向量化的执行计划6.生成具体的task可以是mr或者spark、Tez并通过Driver提交任务到YARN7.执行结束后将结果返回给用户总结本文首先介绍了Hive的架构并对每个组件进行了描述。然后阐述了Hive的具体执行过程最后对HQL的执行阶段进行了说明。往期精彩回顾数仓|Hive性能调优指北Hive的条件函数与日期函数全面汇总解析Hive开窗函数实战http://weixin.qq.com/r/Gi99ZWjEjDXzrSwG93oI (二维码自动识别)