在Hadoop生态系统中,HDFS用于存储数据,Yarn用于资源管理,MapReduce用于数据处理,而Hive是构建在Hadoop之上的数据仓库,包括以下方面:
使用HQL作为查询接口,注意是Sql,并不完全遵循sql语言
使用HDFS存储;
使用MapReduce或其它计算框架计算;
执行程序运行在Yarn上。
Hive的本质是:将Hive SQL转化成MapReduce程序,其灵活性和扩展性比较好,自定义存储格式等;适合离线数据处理。
Hive是由Facobook开发的,贡献给Apache的一套进行数据仓库管理的工具,使用类SQL语言来对分布式文件系统中的PB级别的数据来进行读写、管理以及分析
Hive是基于Hadoop来使用的,底层的默认计算引擎是MapReduce。Hive利用类SQL(HQL,Hive Query Language)语言来操作数据,但是底层是将SQL转化为MapReduce来执行(效率低下),Hive更适合于处理离线分析场景
Hive的支持的计算引擎:MapReduce、Tez、Spark。底层默认使用的是MapReduce,但是效率最高的是Spark
在Hive中,库名、表名、字段名、字段类型、分区、分桶等信息属于元数据,是存储在数据库中,默认支持的是Derby。但是Derby本身是一个单连接的数据库(只允许一个客户端),所以会将Hive的元数据库替换为MySQL。注意:Hive的元数据是存储在数据库的,Hive的数据是放在HDFS上!hdfs提供了多副本机制,hive中存放的大多都是历史数据,hive一般不会自动建立索引