美文网首页
hive核心组件及流程(一)

hive核心组件及流程(一)

作者: 傻疯子 | 来源:发表于2021-11-28 21:52 被阅读0次

    hive核心组件

    依赖第三方组件: Meta store(mysql),hdfs,MapReduce
    hive:
    Client客户端 CLI、JDBC
    Driver连接客户端与服务端的桥梁
    SQL Pareser解析器,将SQL转换为抽象语法树AST
    1.将HQL语句转换为Token
    2.对Token进行解析,生成AST
    Physical Plan编译器将AST编译生成逻辑执行计划
    Query Optimizer优化器,对逻辑执行计划进行优化
    1.将AST转换为QueryBlock
    2.将QueryBlock转换为OperatorTree
    3.OperatorTree进行逻辑优化
    4.生成TaskTree
    5.TaskTree执行物理优化
    Execution执行器把逻辑执行计划转换成可以运行的物理计划
    1.获取MR临时工作目录
    3.定义Mapper和Reducer
    2.定义Partitioner
    4.实例化Job
    5.提交Job

    hive将SQL转换为MR的流程:

    1.以Antlr定义的语法规则,对SQL完成词法解析,将SQL转换为AST
    2.遍历AST,抽象出查询基本组成单元QueryBlock。
    3.遍历QueryBlock,将其转换为OperatorTree,逻辑执行单元
    4.利用逻辑优化器对OperatorTree进行逻辑优化。
    5.遍历OperatorTree转换为TaskTree,将逻辑执行计划转化为物理执行计划
    6.使用物理优化器对TaskTree进行物理优化
    7.生成最终的执行计划,提交执行

    CliDriver

    $HIVE_HOME/bin/hive可以进入客户端

    $HIVE_HOME/bin/hive -e "{SQL语句}"可以执行SQL语句

    $HIVE_HOME/bin/hive -f {SQL文件名.sql}可以执行sql文件

    开启hiveserver2服务,可以通过JDBC提交SQL

    启动流程

    创建Driver
    创建OptionsProcessor
    初始化log4j
    标准输入输出以及错误输出流的定义,后续需要输入 SQL 以及打印控制台信息
    解析输入的参数,包含"-e -f -v -database"
    读取输入的sql
    按照";"分割的方式解析
    解析单行SQL
    遇到为"quit"或者"exit"退出
    遇到为"source"开头,执行 SQL 文件,读取文件并解析
    如果命令以"!"开头,则表示用户需要执行 shell命令
    以上三种都不是的情况下执行SQL,进行SQL解析

    SQL执行流程

    获取当前系统时间
    获取系统结束时间
    编译SQL语句
    SQL生成AST,构建词法解析器,将关键词替换为TOKEN,进行语法解析,生成最终AST
    处理AST,转换为QueryBlock然后转换为OperatorTree,对Operator进行逻辑优化,然后转换为任务树,然后进行物理优化。
    根据任务树构建MrJob
    添加启动任务,根据是否可以并行来决定是否并行启动Task
    设置MR任务的InputFormat、OutputFormat 等等这些 MRJob 的执行类
    构建执行MR任务的命令
    向yarn提交任务
    打印头信息
    获取结果集并获取抓取到的条数
    打印SQL执行时间及数据条数

    相关文章

      网友评论

          本文标题:hive核心组件及流程(一)

          本文链接:https://www.haomeiwen.com/subject/hnbhxrtx.html