Hive的历史价值和Hive的架构设计
一:Hive的历史价值
- 1, Hive是Hadoop上的Killer Application,Hive是Hadoop上的数据仓库,Hive同时兼具有数据仓库中的存储引擎和查询引擎的作用;而Spark SQL是一个更加出色和高级的查询引擎,所以在现在企业级应用中Spark SQL+Hive成为了业界使用大数据最为高效和流行的趋势。
- 2, Hive是Facebook的推出,主要是为了让不动Java代码编程的人员也能够通过SQL来驾驭Hadoop集群进行分布式数据的多维度分析,甚至您可以只通过Web界面来直接操作Hive(通过Hive来驾驭Hadoop),这对于市场营销人员、系统管理员、数据分析师至关重要;
- 3, Hive的核心是把Hive自己的SQL语言即HQL翻译成为MapReduce代码,然后交给Hadoop集群执行,也就是说Hive本身是一个单机版本的软件!!!
- 4, 由于是通过写HQL来完成业务需求的,所以相对编程MapReduce而言,非常的简易和灵活,能够非常轻易的满足业务的需求和多变的场景;
- 5, Hive几乎存在于一切使用大数据的公司中!
二:Hive的架构设计
1, Hive的架构如下:
2, Hive中的数据只是元数据,所谓元数据就是Hive要操作的数据的描述信息,该Metastore默认存储在Derby中,但是Derby不能被生产环境下的多用去使用,所有生产环境下一般最常用的使用MySQL来存储Hive的元数据;
- 3, Hive要操作的数据是由Hive的配置文件来决定的,在生产环境下该数据位于HDFS上(其实也就是HDFS上的普通文件而已,只不过是按照Hive的方式进行组织);
- 4, 从Hive的角度看,数据就是一张张的Table,我们的操作就是基于SQL的多维度的查询Table;
- 5, 人们一直努力用Hive来取代传统的数据仓库,但是以失败告终!因为Hive太慢啦!!!所以业界目前趋势上黄金组合是Hive(数据仓库的存储引擎)+Spark SQL(分析查询引擎);
- 6, HQL会被Hive解释、优化并生成查询计划,一般情况而言查询计划会被转化为MapReduce任务;
- 7, 但是形如select * from table 在不会转化成为MapReduce任务;
- 8, Hive有索引吗?没有!