hive基础理论
1.什么是hive
- hive是同一个SQL解析引擎,目的是将SQL转义成MR,其本质就是MR。
- hive本身不存储数据!它的数据存储在HDFS上,hive中有表定义,这个纯逻辑表,定义表的元数据。本质就是hadoop的目录/文件达到了元数据与数据存储分离的目的。
- hive的内容是读多写少,不支持多少对数据的改写和删除。
- hive的SQL与标准数据库的差别
HQL SQL 数据存储 HDFS,HBASE Local FS 数据格式 用户自定义 系统决定 数据更新 不支持数据更新 支持 索引 有(0.8之后有) 有 执行 MR Executor 执行延迟 高 低 可扩展性 高(UDF,UDAF,UDTF) 低 数据规模 大(数据大于TB) 小 数据检查 读时模式 写时模式
2.引入hive原因
通过上述的定义,我们基本可以梳理出引入hive的原因
1.对存在HDFS上的文件我们要进行查询处理的时候,需要手工写一堆的MR代码。但是引入hive后可以通过SQL与转译成MR, 缩短了开发周期。
2.对于统计任务,只能有懂MR的程序员才能搞定。引入hive,只要会SQL就可以搞定。
3.hive的体系架构
1.用户接口:client,通过该接口进行SQL交互
2.语句转化:driver,是hive的核心,将用户的查询和MR Task进行转换并执行
3.数据存储:实际存储数据的时HDFS ,元数据默认存储在Derby,但是一般用在mysql进行存储
4.数据管理:
1.table:默认表,内部表
2.external table:外部表
3.partiton:用户辅助查询表
4.bucket:采用,控制reduce的个数