开发电商网站,网站右下角浮动效果如何做,自助建站门户网站,wordpress竖排主题目录 一、架构及组件介绍
1.1 Hive底层架构
1.2 Hive组件
1.3 Hive与Hadoop交互过程
二、Hive SQL 编译成MR任务的流程
2.1 HQL转换为MR源码整体流程介绍
2.2 程序入口—CliDriver
2.3 HQL编译成MR任务的详细过程—Driver
2.3.1 将HQL语句转换成AST抽象语法树
词法、语…目录 一、架构及组件介绍
1.1 Hive底层架构
1.2 Hive组件
1.3 Hive与Hadoop交互过程
二、Hive SQL 编译成MR任务的流程
2.1 HQL转换为MR源码整体流程介绍
2.2 程序入口—CliDriver
2.3 HQL编译成MR任务的详细过程—Driver
2.3.1 将HQL语句转换成AST抽象语法树
词法、语法解析
2.3.2 将AST转换成TaskTree
语义解析 生成逻辑执行计划
优化逻辑执行计划 生成物理执行计划 HQL编译成MapReduce具体原理
JOIN GROUP BY
DISTINCT
优化物理执行计划
2.3.3 提交任务并执行 一、架构及组件介绍
1 Hive简介 Hive是Facebook实现的一个开源的数据仓库工具。将结构化的数据文件映射为数据库表并提供HQL查询功能将HQL语句转化为MapReduce任务运行 2 Hive本质将 HQL 转化成 MapReduce 程序 Hive 处理的数据存储在 HDFS Hive 分析数据底层的实现是 MapReduce 执行程序运行在 Yarn 上 1.1 Hive底层架构 1.2 Hive组件
用户接口Client CLIshell命令行JDBC/ODBCHive中的Thrift服务器允许外部客户端通过网络与Hive进行交互类似于JDBC或ODBC协议WEBUI通过浏览器访问Hive 元数据Metastore 通常是存储在关系数据库如 mysql/derby中。Hive 中的元数据包括表的名字表的列和分区及其属性表的属性是否为外部表等表的数据所在目录等。 Hadoop 数据利用 HDFS文件系统 进行存储使用 MapReduce 进行计算。 驱动器Driver 解析器SQL Parser将 SQL 字符串转换成抽象语法树 AST这一步一般都用第 三方工具库完成比如 antlr对 AST 进行语法分析比如表是否存在、字段是否存在、SQL 语义是否有误。 编译器Physical Plan将 AST 编译生成逻辑执行计划。 优化器Query Optimizer对逻辑执行计划进行优化。 执行器Execution把逻辑执行计划转换成可以运行的物理计划。当下Hive支持MapReduce、Tez、Spark3种执行引擎 Driver驱动器总结完成 HQL 查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在 HDFS 中随后执行引擎调用执行。当下Hive支持MapReduce、Tez、Spark3种执行引擎。 1.3 Hive与Hadoop交互过程 上图的基本流程是
步骤1Client 客户端调用 Driver的接口步骤2Driver驱动器为查询创建会话句柄并将查询发送到 Compiler(编译器组件)生成执行计划步骤3和4编译器从元数据存储库中获取本次查询所需要的元数据步骤5编译器生成各个阶段Stage的执行计划如果是一个MR任务该执行计划分为两部分Map Operator Treemap端的执行计划树和Reduce Operator Treereduce端的执行计划树,再将生成的逻辑执行计划发给Driver步骤6Driver将逻辑执行计划发给执行引擎Execution Engine将逻辑执行计划转化成具体的物理执行计划即mr任务 步骤6.1 / 6.2 /6.3 /6.4执行引擎将这些阶段Stage的具体执行内容提交给对应的组件。在每个 Task(mapper/reducer) 任务中从HDFS文件中读取与表相关的数据并通过算子树依次传递。最终的数据集借助序列化器写入到临时的HDFS文件中。 步骤7、8临时HDFS文件的内容由执行引擎读取后通过Driver将查询结果发送给Client 客户端
简化版本 总结Hive通过给用户提供的一系列交互接口接收到用户的指令sql,使用自己的driver结合元数据metastore,将这些指令翻译成 mapreduce任务提交到hadoop中执行最后将执行返回的结果输出到用户交互接口。
二、Hive SQL 编译成MR任务的流程
2.1 HQL转换为MR源码整体流程介绍 2.2 程序入口—CliDriver 我们执行一个 HQL 语句通常有以下几种方式 $HIVE_HOME/bin/hive进入客户端然后执行HQL $HIVE_HOME/bin/hive -e “hql” $HIVE_HOME/bin/hive -fhive.sql 先开启hivesever2服务端然后通过JDBC方式连接远程提交HQL。 可以知道我们执行 HQL 主要依赖于 $HIVE_HOME/bin/hive 和 $HIVE_HOME/bin/ 而在这两个脚本中最终启动的 JAVA 程序的主类为 “ org.apache.hadoop.hive.cli.CliDriver ” 所以其实 Hive程序的入口就是“CliDriver ”这个类。 2.3 HQL编译成MR任务的详细过程—Driver 2.3.1 将HQL语句转换成AST抽象语法树 词法、语法解析 Antlr 定义 SQL 的语法规则完成 SQL 词法语法解析将 SQL 转化为抽象语法树 AST Tree 例如AST如下图 2.3.2 将AST转换成TaskTree 语义解析 遍历 AST Tree抽象出一条SQL最基本组成单元 QueryBlock查询块该块包括三个部分输入源计算过程输出。简单而言一个QueryBlock就是一个子查询。 生成逻辑执行计划 遍历 QueryBlock翻译为执行操作树 OperatorTree操作树也就是逻辑执行计划Hive最终生成的MapReduce任务Map阶段和Reduce阶段均由OperatorTree组成。 基本的操作符包括 TableScanOperator SelectOperator FilterOperator JoinOperator GroupByOperator ReduceSinkOperator Operator操作算子在Map Reduce阶段之间的数据传递是一个流式的过程。每一个Operator对一行数据操作之后将数据传递给childOperator计算。 由于Join/GroupBy需要在Reduce阶段完成所以在生成相应操作的Operator之前都会先生成一个ReduceSinkOperator将字段组合并序列化为Reduce KeyReduce /value, Partition Key。 优化逻辑执行计划 逻辑优化器对OperatorTree操作树进行逻辑优化。例如合并不必要的ReduceSinkOperator减少数据传输及 shuffle 数据量 Hive中的逻辑查询优化可以大致分为以下几类 投影修剪 谓词下推 多路 Join 生成物理执行计划 遍历 OperatorTree转换成TaskTree任务树即物理执行计划即MR任务。生成物理执行计划即是将逻辑执行计划生成的OperatorTree转化为MapReduce Job的过程。 HQL编译成MapReduce具体原理 1 hive.fetch.task.conversion参数 在Hive中有些简单任务既可以转化为MR任务也可以Fetch本地抓取即直接读取table对应的hdfs存储目录下文件得到结果通过hive.fetch.task.conversion参数配置。默认情况使用参数more例如SELECT、FILTER、LIMIT等简单查找都使用Fetch本地抓取而其他复杂sql转为MR任务。 2转化为MR任务的SQL 需要转换成MR任务的sql通常会涉及到key值的shuffle例如join、groupby、distinct等接下来介绍此三种情况的sql转化。 JOIN
JOIN任务转化为MR任务的流程如下 Map 生成键值对以join on 条件中的列作为key以join之后所关心的列作为value值在value中还会包含表的Tag信息用于标明此value对应哪张表Shuffle 根据key值进行hash分区, 按照hash值将键值对key-value发送到不同的reducer中ReduceReducer通过Tag来识别不同的表中的数据根据key值进行join操作 以下列sql为例
SELECT pageid, age
FROM page_view
JOIN userinfo
ON page_view.userid userinfo.userid; sql转化为mr任务流程如下图 GROUP BY GROUP BY任务转化为MR任务的流程如下 Map 生成键值对以GROUP BY条件中的列作为key以聚集函数的结果作为valueShuffle 根据key值进行hash分区, 按照hash值将键值对key-value发送到不同的reducer中Reduce根据SELECT子句的列以及聚集函数进行Reduce 以下列sql为例
SELECT pageid,COUNT(1) as num
FROM page_view
GROUP BY pageid;sql转化为mr任务流程如下图 DISTINCT 与GROUP BY操作相同只是键值对中的value可为空。
以下列sql为例
SELECT DISTINCT pageid FROM page_view;
待补充~ 优化物理执行计划 物理优化器对进行TaskTree任务树即物理执行计划进行物理优化 Hive中的物理优化可以大致分为以下几类 分区修剪(Partition Pruning) 基于分区和桶的扫描修剪(Scan pruning) 在某些情况下在 mapper端进行 Group By分组的预聚合 在 mapper端执行Joinmap join 如果是简单的select查询可以设置为本地执行避免使用MapReduce作业 经过2.3.1 及2.3.2 这六个阶段HQL就被解析映射成了集群上的 MR任务。
2.3.3 提交任务并执行 获取MR临时工作目录定义Partitioner定义Mapper和Reducer实例化Job任务提交Job任务并执行
文章转载自: http://www.morning.rykx.cn.gov.cn.rykx.cn http://www.morning.hyhqd.cn.gov.cn.hyhqd.cn http://www.morning.bmtyn.cn.gov.cn.bmtyn.cn http://www.morning.rykmf.cn.gov.cn.rykmf.cn http://www.morning.jxtbr.cn.gov.cn.jxtbr.cn http://www.morning.wgdnd.cn.gov.cn.wgdnd.cn http://www.morning.zxzgr.cn.gov.cn.zxzgr.cn http://www.morning.wwkft.cn.gov.cn.wwkft.cn http://www.morning.mcqhb.cn.gov.cn.mcqhb.cn http://www.morning.dskzr.cn.gov.cn.dskzr.cn http://www.morning.jhkzl.cn.gov.cn.jhkzl.cn http://www.morning.egmux.cn.gov.cn.egmux.cn http://www.morning.joinyun.com.gov.cn.joinyun.com http://www.morning.ffksr.cn.gov.cn.ffksr.cn http://www.morning.fpxms.cn.gov.cn.fpxms.cn http://www.morning.hfyll.cn.gov.cn.hfyll.cn http://www.morning.zxhhy.cn.gov.cn.zxhhy.cn http://www.morning.mrfbp.cn.gov.cn.mrfbp.cn http://www.morning.lqlc.cn.gov.cn.lqlc.cn http://www.morning.lqqqh.cn.gov.cn.lqqqh.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.yxbrn.cn.gov.cn.yxbrn.cn http://www.morning.cklld.cn.gov.cn.cklld.cn http://www.morning.xtkw.cn.gov.cn.xtkw.cn http://www.morning.ljzss.cn.gov.cn.ljzss.cn http://www.morning.lnmby.cn.gov.cn.lnmby.cn http://www.morning.wmcng.cn.gov.cn.wmcng.cn http://www.morning.ypklb.cn.gov.cn.ypklb.cn http://www.morning.xhxsr.cn.gov.cn.xhxsr.cn http://www.morning.mrfr.cn.gov.cn.mrfr.cn http://www.morning.yghlr.cn.gov.cn.yghlr.cn http://www.morning.qllcm.cn.gov.cn.qllcm.cn http://www.morning.bmsqq.cn.gov.cn.bmsqq.cn http://www.morning.yxbdl.cn.gov.cn.yxbdl.cn http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn http://www.morning.ttdxn.cn.gov.cn.ttdxn.cn http://www.morning.gcrlb.cn.gov.cn.gcrlb.cn http://www.morning.lsfzq.cn.gov.cn.lsfzq.cn http://www.morning.hfrbt.cn.gov.cn.hfrbt.cn http://www.morning.gbcxb.cn.gov.cn.gbcxb.cn http://www.morning.bmbnc.cn.gov.cn.bmbnc.cn http://www.morning.rtsx.cn.gov.cn.rtsx.cn http://www.morning.wphfl.cn.gov.cn.wphfl.cn http://www.morning.cqyhdy.cn.gov.cn.cqyhdy.cn http://www.morning.brqjs.cn.gov.cn.brqjs.cn http://www.morning.ypdmr.cn.gov.cn.ypdmr.cn http://www.morning.lkbyj.cn.gov.cn.lkbyj.cn http://www.morning.wbxbj.cn.gov.cn.wbxbj.cn http://www.morning.kcdts.cn.gov.cn.kcdts.cn http://www.morning.mxtjl.cn.gov.cn.mxtjl.cn http://www.morning.gsyns.cn.gov.cn.gsyns.cn http://www.morning.pxlsh.cn.gov.cn.pxlsh.cn http://www.morning.klwxh.cn.gov.cn.klwxh.cn http://www.morning.ghgck.cn.gov.cn.ghgck.cn http://www.morning.xdjsx.cn.gov.cn.xdjsx.cn http://www.morning.xblrq.cn.gov.cn.xblrq.cn http://www.morning.phjyb.cn.gov.cn.phjyb.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.lwmxk.cn.gov.cn.lwmxk.cn http://www.morning.rcdmp.cn.gov.cn.rcdmp.cn http://www.morning.gqfks.cn.gov.cn.gqfks.cn http://www.morning.hpxxq.cn.gov.cn.hpxxq.cn http://www.morning.zgnng.cn.gov.cn.zgnng.cn http://www.morning.rszyf.cn.gov.cn.rszyf.cn http://www.morning.mmkrd.cn.gov.cn.mmkrd.cn http://www.morning.gqcsd.cn.gov.cn.gqcsd.cn http://www.morning.kstgt.cn.gov.cn.kstgt.cn http://www.morning.lmmh.cn.gov.cn.lmmh.cn http://www.morning.khzml.cn.gov.cn.khzml.cn http://www.morning.zqwp.cn.gov.cn.zqwp.cn http://www.morning.langlaitech.cn.gov.cn.langlaitech.cn http://www.morning.xltdh.cn.gov.cn.xltdh.cn http://www.morning.lfsmf.cn.gov.cn.lfsmf.cn http://www.morning.ljdhj.cn.gov.cn.ljdhj.cn http://www.morning.lztrt.cn.gov.cn.lztrt.cn http://www.morning.lxqyf.cn.gov.cn.lxqyf.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.mkrjf.cn.gov.cn.mkrjf.cn http://www.morning.jrpmf.cn.gov.cn.jrpmf.cn