Hadoop和Hive的区别
Hadoop: Hadoop 是一种框架或软件,旨在管理海量数据或大数据。Hadoop 用于存储和处理分布在商品服务器集群中的大型数据。Hadoop 使用 Hadoop 分布式文件系统存储数据,并使用 Map-Reduce 编程模型对其进行处理/查询。
Hive: Hive 是一个在 Hadoop 框架上运行的应用程序,并提供类似 SQL 的接口来处理/查询数据。Hive 在成为 Apache-Hadoop 项目的一部分之前由 Facebook 设计和开发。Hive 使用 HQL(Hive 查询语言)运行其查询。Hive 与 RDBMS 具有相同的结构,并且几乎相同的命令可以在 Hive 中使用。Hive 可以将数据存储在外部表中,因此不必使用 HDFS,它还支持 ORC、Avro 文件、序列文件和文本文件等文件格式。
下表列出了 Hadoop 和 Hive 之间的差异:
Hadoop | Hive |
---|---|
Hadoop 是一个处理/查询大数据的框架 | Hive 是一个基于 SQL 的工具,它构建在 Hadoop 之上来处理数据。 |
Hadoop 只能理解 Map Reduce。 | Hive 使用 HQL(Hive 查询语言)处理/查询所有数据,它是类 SQL 语言 |
Map Reduce 是 Hadoop 不可分割的一部分 | Hive 的查询首先转换为 Map Reduce,然后由 Hadoop 处理以查询数据。 |
Hadoop 仅使用基于 Java 的 Map Reduce 来理解 SQL。 | Hive 适用于 SQL Like 查询 |
在 Hadoop 中,必须使用与传统 Java 不同的 Java 编写复杂的 Map Reduce 程序。 | 在 Hive 中,早期使用的传统“关系数据库”命令也可用于查询大数据 |
Hadoop 适用于所有类型的数据,无论是结构化的、非结构化的还是半结构化的。 | Hive 只能处理/查询结构化数据 |
在简单的 Hadoop 生态系统中,需要为相同的数据编写复杂的 Java 程序。 | 使用 Hive,无需复杂编程即可处理/查询数据 |
一方面 Hadoop 框架需要 100 行来准备基于 Java 的 MR 程序 | Hive 可以使用 8 到 10 行 HQL 查询相同的数据。 |