Hive的运行时架构

Hive的运行时架构

1 Hive的主要组件

Hive的主要组件有3个

  • Serrializers/DeSerializers组件

    • 这个组件是一个序列化框架,同时伴随着序列化与反序列化的库;其中包含着大量内置的序列化/反序列化器,同时支持用户自定义的序列化反序列化器。

      • read数据的生命周期
        HDFS File -> inputformat(RecordReader) -> <k,v> -> deSerializer -> Row object

      • write数据生命周期
        Row object -> serializer -> <k,v> -> outputformat(RecordWriter) -> HDFS File

  • MetaStore组件

    • 这个组件管理并存储着数据仓库(Hive)中的所有的表、分区的元数据信息,默认是存储在derby数据库中,但是derby数据库在同一时间只允许一个用户访问,为了保证多用户访问元数据,建议将元数据迁移到MySQL等其它数据库。
  • QueryProcessor组件

    • 这个组件一个处理框架,其中包含着自己的基础组件,可以将SQL转化成MR作业,然后交给执行的组件按照一定的依赖顺序去执行这些MR作业。

1.1 QueryProcessor组件剖析

  • 解析&语义分析器

    • 这个组件负责解析SQL,整个解析转化流程如下

      • SQL -> AbstractSyntaxTree(语法树)-> 执行计划 -> 最终的Task物理执行图
        #这些执行图将会被Driver.java这个类启动并执行
        
  • 优化器

    • 优化器包含一些简单的优化规则,比如列裁剪、分区裁剪等。
  • 编译器

    • 将语言编译成可以执行的语言
  • 执行引擎

    • 用来执行优化之后的tasks
  • 元数据访问层

    • 用来访问Hive的表的元数据
  • Hive的函数组件

    • 包含内置的SQL函数,同时支持用户自定义函数,并投入Hive的资源中使用。

2 其它组件

  • command line interface 命令行接口
    • 用来连接Hive server的服务,进行交互式访问;
  • Hive server
    • 提供所有的Hive服务,允许外部应用访问Hive的API;
  • 公共组件
    • 管理一些Java代码以及Hive的配置信息的组件;
  • 基础工具
    • 用来构建Hive的基础环境;
  • 脚本
    • 用来辅助启动Hive Cli,加载内置函数,配置信息。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值