概述
什么是Hive
- 由Facabook开源用于解决海量结构化日志的数据统计
- Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射成一张表,并提供类SQL查询功能;
- 构建在Hadoop之上的数据仓库;
- 使用HQL作为查询接口
- 使用HDFS存储
- 使用MapReduce计算;
- 本质是将HQL转化成MapReduce程序
- 灵活性和扩展性比较好:支持UDF,自定义存储格式等;
- 适合处理离线数据
Hive在Hadoop生态系统中的位置
Hive在Hadoop生态系统中的位置Hive架构设计
Hive架构设计Hive 依赖两个外部程序
- HDFS
- MapReduce
- MySQL ( 图中Meta store ) 存储Hive中的表信息,比如表名,表中有哪些字段,数据存储在哪些地方等等
图解流程:
一. 首先获取SQL 语句 通过 CLO JDBC Driver
二. 然后经历四个阶段
图中对应的四个阶段:
- SQL Parser: SQL解析,检查SQL语句是否正常
- Query Optimizer: 编译
- Physical Plan:优化
- Execution:执行
三. 查询Meta store 中数据存放位置
四. Execution部分执行Map Reduce计算
五. 结果返回给客户端
Hive的优点及应用场景
- 操作接口采用类SQL语法,提供快速开发的能力(简单,容易上手);
- 避免了去写MapReduce,减少开发人员的学习成本
- 统一的元数据管理,可与impala/spark等共享元数据
- 易扩展(HDFS+MapReduce):可以扩展集群规模;支持自定义函数;
- 数据的离线处理;比如:日志分析,海量结构化离线分析
- Hive的执行延迟比较高,因为Hive常用于数据分析的,对实时性要求不高的场合;
- Hive优势在于处理大数据,对于处理小数据没有优势,因为Hive的执行延迟比较高
网友评论