一、Hive的历史价值
1.Hive是Hadoop上的Killer Application,Hive是hadoop上的数据仓库,Hive同时 兼具有数据仓库的存储引擎和查询引擎的作用,而SparkSQL是一个更加出色和高级的查询引擎,所以现在在企业级应用中SparkSQL+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要操作的数据的描述信息,该Metastrore默认存储在Derby中,当Derby不能被生产环境下的多用户去使用,所以生产环境下一般常用的使用MySQL来存储Hive的元数据
3.Hive要操作的数据是由Hive的配置环境文件来决定的,生产环境下该数据位于HDFS上(其实就是HDFS上的普通文件而已,只不过是要按照Hive的方式进行组织的);
4.从Hive的角度来看,数据就是一张张的table,我们的操作就是基于SQL的多维度的查询Table;
5.我们一直努力使用Hive来取代传统的数据仓库,所以是以失败告终,因为Hive太慢了,所以业界目前的趋势上黄金组合是Hive(数据仓库的存储引擎)+SparkSQL(分析查询引擎);
6.HQL会被Hive解释优化并生成查询计划,一般情况而言查询计划会被转化为MapReduce任务
7.但是形如select * from table不会转化成为MapReduce任务;
8.Hive没有索引