Hive基础篇
Hadoop生态系统
底层是HDFS存储系统,在此之上是HBase和MapReduce,再往上是Pig和Hive。
Pig适用于流处理,应用场景为ETL工具。Hive是适用于批处理,应用场景一般为BI报表。
Hive借助HDFS来完成存储数据,Hive将sql语句转化为Mapreduce作业,借助Mapreduce完成对数据的操作。
Hive基础架构
Hive包含三个重要模块
-
用户接口模块 (对外访问接口)
- CLI 命令行工具
- HWI Hive的web接口
- JDBC和ODBC 开放数据库连接接口
- Thrift Server,thrift架构开发的接口,允许外界通过这个接口实现对Hive仓库的RPC调用
-
驱动模块 (包含编译器,优化器,执行器)
-
元数据存储模块 Metastore
是一个独立的关系型数据库,通过MySql数据库来存储Hive元数据。
Hive HA的基本原理
高可用性
HAProxy ,用户访问的时候先通过HAProxy来访问Hive,对外来讲表现为一个统一的Hive,但是内部具有多个Hive实例。HAProxy会依次去询问底层的Hive是否可用,依次执行逻辑可用性测试判断是否可用。对不能通过逻辑可用性测试的Hive,HAProxy会将其加入黑名单。每隔一段时间会对黑名单中的Hive重新进行逻辑可用性测试,移除通过测试的Hive。
SQL转化为MapReduce作业的原理
Hive中将SQL转化为MapReduce的流程
驱动模块接受命令或查询编译器,对该命令进行解析编译,该命令或查询通过执行器进行执行,由优化器对该命令或查询进行优化计算。
输入 ——>1.Parser ——>2.Semantic Analyzer ——>3.Logical Plan Generator ——>4.Logical Optimizer ——>5.Physical Plan Generator ——>6.Physical Optimizer
1.Pareser:由Hive驱动模块的编译器将用户的SQL进行词法语法解析,转化为抽象的语法树。
2.Semantic Analyzer :把复杂抽象语法书转化为查询块
3.Logical Plan Generator:把查询块转化为逻辑查询计划,里面包含了许多逻辑操作符。
4.Logical Optimizer :重写逻辑查询计划,进行优化合并多余操作,减少MapReduce任务数量
5.Physical Plan Generator :将逻辑操作符转化为需要执行的具体的MapReduce任务
6.Physical Optimizer:对生成的MapReduce任务进行优化生成最终的MapReduce任务执行计划。
Hive本身不生成MapReduce程序,需要通过一个“Job执行计划”的XML文件驱动执行内置的原生的Mapper和Reducer模块。