1.Hive二轮学习初衷
本人研二,大跨度非科班转行大数据,此前粗略了解了hive的搭建以及工作原理,但日前找实习经历了美团基础研发部的一二轮面试,发现面试官对hive框架的能力考察还是十分看重,因此特别进行hive的强化学习,主要基于尚硅谷分享的Hive教学视频,进行包括概念和原理的整理以及对一些简单案例的实践。由于本人水平有限,这个笔记仅供个人理解总结之用,难免有错误局限之处,欢迎大家批评指正,一起交流讨论。
2.Hive基本概念
2.1数仓和数据库
相较于轻快小巧,实时性强的数据库而言,数据仓库的突出特点就是笨重,但这不是一味的贬义词,只是说在实时性高,且涉及到数据修改更新的业务场景中数仓并不适用,但是对于大规模重量级的数据的存储和批处理,历史数据的聚合统计等等就是数据仓库的强项。
2.2Hive概念和功能
从某个角度上而言,Hive只是一个客户端,它的所有具体功能都是借助第三方组件予以实现,例如元数据的记录使用Mysql,对Hql逻辑实际的执行使用的MR,对数据的存储使用的Hdfs。那么Hive存在的价值是什么?提供了一个友好便捷的接口,一套类似于Sql的极其简单易上手的Hql语法,一套精致的翻译工具和优化工具实现Hql到MR的映射,使得工作人员无须为底层复杂的MR实现所费心,夸张一点地说,技术人员培训两个月的SQL语法,即可上手操作简单的大数据开发。
需要注意的是,Hive之所以能被定义为数据仓库,这一标签是Hdfs的可靠存储,高度扩展性以及MapReduce的分布式计算功能赋予它的,因此不能割裂底层的框架支持,孤立地去评价Hive是数仓,而应该将几者作为一个关联整体,认为它们共同构成了数据仓库的功能实现。
2.3Hive架构
元数据区(Meta store):Hive通常使用Mysql作为元数据区,通过一系列的元数据表记录了映射Hdfs中文件对应Hive中表格的映射关系;
客户端(Client):提供给用户的接口,包括Web UI,CUI,ThriftServer等;
驱动:
解析器(SQL Parser)——解析Hql基本语法,数据是否有误;
编译器(Physical Plan)——将Hql翻译成MR
优化器(Query Optimizer),执行器(Execution)——对Hql的执行和优化
计算框架和存储框架:MapReduce和Hdfs
——————————————————————————————————
待续…