Hive
首先,我们来介绍一下什么是Hive。有些人不仅会想,Hive不就是写SQL的吗。没错,Hive和SQL的语法结构很像,其实,二者没有多大区别,甚至可以这样讲,Hive就是写SQL。但是,问题就来了–它真正的就是SQL了吗?它和SQL数据库有什么区别?和其他的关传统的系型数据库又有什么区别和关系呢?一系类问题,别急,我们慢慢来分析。
1、Hive 由 Facebook 实现并开源
2、是基于 Hadoop 的一个数据仓库工具
3、可以将结构化的数据映射为一张数据库表
4、并提供 HQL(Hive SQL)查询功能
5、底层数据是存储在 HDFS 上
6、Hive的本质是将 SQL 语句转换为 MapReduce 任务运行
7、使不熟悉 MapReduce 的用户很方便地利用 HQL 处理和计算 HDFS 上的结构化的数据,适用于离线的批量数据计算。
数据仓库之父比尔·恩门(Bill Inmon)在 1991 年出版的“Building the Data Warehouse”(《建 立数据仓库》)一书中所提出的定义被广泛接受——数据仓库(Data Warehouse)是一个面 向主题的(Subject Oriented)、集成的(Integrated)、相对稳定的(Non-Volatile)、反映历史 变化(Time Variant)的数据集合,用于支持管理决策(Decision Making Support)。
Hive 依赖于 HDFS 存储数据,Hive 将 HQL 转换成 MapReduce 执行,所以说 Hive 是基于 Hadoop 的一个数据仓库工具,实质就是一款基于 HDFS 的 MapReduce 计算框架,对存储在 HDFS 中的数据进行分析和管理。
Hive的产生背景
大数据时代的到来,海量的数据对于传统的关系型数据库来说维护起来成本非常高,那该如何是好呢?这时候Hive就诞生了,最开始是facebook开源,最初用于解决海量结构化的日志数据统计问题;ETL (Extraction-Transformation-Loading )工具构建在Hadoop之上的数据仓库;数据计算使用MR ,数据存储使用HDFS。
Hive 定义了一种类 SQL 查询语言,叫做HQL;类似SQL,但不完全相同,通常用于进行离线数据处理(采用MapReduce);可认为是一个HQL MR的语言翻译器。
Apache Hive数据仓库软件可以使用SQL方便地阅读、编写和管理分布在分布式存储中的大型数据集。结构可以投射到已经存储的数据上。提供了一个命令行工具和JDBC驱动程序来将用户连接到Hive。产生背景有以下几个方面:
- MapReduce编程的不便性
- HDFS上的文件缺少某些字段
Hive 在Hadoop生态系统的位置
Hive体系架构
说了这么多,你对Hive的了解是不是高多了,那么问题来了,我们为什么要使用Hive呢?它有什么独特之处吗?使用 MapReduce不好吗?