Hive学习1:Hive原理

Hive最终被编译成MapReduce,通过SQL执行MapReduce

1.产生原因Why

  • MapReduce写起来复杂,Hive简单
  • Hive学习成本低,方便非Java编程者对hdfs的数据做MapReduce操作。便于推广,

Hive是什么What(分析HDFS上的结构化数据)

  • 是数据仓库(不是交互式的,一般存储历史数据,反范式,面向分析) 范式数据库?解决数据冗余
  • 解释器、编译器、优化器等
  • Hive运行时,元数据(表、数据库、分区、字段的定义和属性等)存储在关系型数据库(Mysql等,默认DB)里面(考虑到性能问题,访问读取多)

Hive架构

  • 用户接口主要有三个:CLI、Client、WUI。最常用CLI。
    - CLI启动时,会同时生成一个Hive副本。
    - Client是Hive的客户端,用户连接至Hive Server。在启动Client时,需要指出Hive Server的所在节点,并且在该节点上启动Hive Server。
    - WUI是通过浏览器访问Hive
  • Hive将元数据存储在关系数据库中:MataStore。如Mysql、derby。
    Hive元数据包括:表的名字、列和分区及其属性。表的属性(是否外部表),表的数据所在目录。
  • 解释器、编译器、优化器完成HQL查询语句从词法分析、语法分析、编译、优化以及查询计划的生成。生成的查询计划存储在HDFS中,并在随后由MapReduce调用。
  • Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成。(包含* 等的直接查询,不会生成MapReduce任务)

Hive学习1:Hive原理
注:在hadoop2.x之后,Job Tracker 由YARN的Source Manager实现。
Hive学习1:Hive原理

Hive编译解析结果:执行计划Operator

  • 编译器将一个HQL转为操作符(最小的执行单元:Operator:树状结构)
  • 操作符是Hive最小的处理单元
  • 每个操作符代表HDFS的一个操作或者一道MapReduce作业
    Hive学习1:Hive原理
antlr词法语法分析工具解析HQL

Hive学习1:Hive原理

Hive三种模式

  • local模式(本地derby):数据库用内置的Derby,即客户端和数据库在同一个服务器上。一般用于单元测试
    Hive学习1:Hive原理
  • 单用户模式:客户端单独一台服务器,数据库单独一台服务器,Mysql Hive CLI-> Mysql
    限制:多台Hive服务器不能同时对同一元数据(Mysql)进行访问。
    Hive学习1:Hive原理
  • 多用户模式(远程服务器模式:项目上线用这种模式): Hive CLI->MataStore Server->Mysql
    用于非Java客户端访问元数据,在服务器端启动MetaStoreServer,客户端利用Thrift协议通过MetaStoreServer访问元数据库
    Remote一体:MataStore Client和MataStore Server放在一起,类似于单用户模式
    Remote分开
    Hive学习1:Hive原理

可以看出划分方式:划分方式:元数据存储位置和管理

下一节:Hive搭建
http://blog.csdn.net/qq_36743482/article/details/78380141