蜂巢 – 简介
蜂巢 – 简介
术语“大数据”用于包含大量、高速和日益增加的各种数据的大型数据集的集合。使用传统的数据管理系统,很难处理大数据。因此,Apache 软件基金会引入了一个名为 Hadoop 的框架来解决大数据管理和处理挑战。
Hadoop
Hadoop 是一个开源框架,用于在分布式环境中存储和处理大数据。它包含两个模块,一个是 MapReduce,另一个是 Hadoop 分布式文件系统 (HDFS)。
-
MapReduce:它是一种并行编程模型,用于在大型商品硬件集群上处理大量结构化、半结构化和非结构化数据。
-
HDFS: Hadoop分布式文件系统是Hadoop框架的一部分,用于存储和处理数据集。它提供了一个容错的文件系统,可以在商品硬件上运行。
Hadoop 生态系统包含不同的子项目(工具),例如 Sqoop、Pig 和 Hive,用于帮助 Hadoop 模块。
-
Sqoop:用于在 HDFS 和 RDBMS 之间导入和导出数据。
-
Pig:它是一个过程语言平台,用于为 MapReduce 操作开发脚本。
-
Hive:是一个用来开发SQL类型脚本做MapReduce操作的平台。
注意:有多种方式可以执行 MapReduce 操作:
- 传统方法使用 Java MapReduce 程序来处理结构化、半结构化和非结构化数据。
- MapReduce 使用 Pig 处理结构化和半结构化数据的脚本方法。
- MapReduce 使用 Hive 处理结构化数据的 Hive 查询语言(HiveQL 或 HQL)。
什么是蜂巢
Hive 是一个数据仓库基础设施工具,用于在 Hadoop 中处理结构化数据。它驻留在 Hadoop 之上以汇总大数据,并使查询和分析变得容易。
最初 Hive 是由 Facebook 开发的,后来 Apache 软件基金会接受了它,并将其进一步开发为名为 Apache Hive 的开源。它被不同的公司使用。例如,亚马逊在 Amazon Elastic MapReduce 中使用它。
蜂巢不是
- 关系型数据库
- 联机事务处理 (OLTP) 的设计
- 一种用于实时查询和行级更新的语言
蜂巢的特点
- 它将模式存储在数据库中并将处理后的数据存储到 HDFS。
- 它是为 OLAP 设计的。
- 它提供用于查询的 SQL 类型语言,称为 HiveQL 或 HQL。
- 它熟悉、快速、可扩展和可扩展。
Hive 的架构
下面的组件图描述了 Hive 的架构:
此组件图包含不同的单元。下表描述了每个单元:
Unit Name | 手术 |
---|---|
User Interface | Hive 是一种数据仓库基础架构软件,可以创建用户和 HDFS 之间的交互。Hive 支持的用户界面是 Hive Web UI、Hive 命令行和 Hive HD Insight(在 Windows 服务器中)。 |
Meta Store | Hive 选择各自的数据库服务器来存储表、数据库、表中的列、它们的数据类型和 HDFS 映射的模式或元数据。 |
HiveQL Process Engine | HiveQL 类似于 SQL,用于查询 Metastore 上的架构信息。它是 MapReduce 程序传统方法的替代品之一。我们可以为 MapReduce 作业编写一个查询并对其进行处理,而不是用 Java 编写 MapReduce 程序。 |
Execution Engine | HiveQL 流程引擎和 MapReduce 的结合部分是 Hive 执行引擎。执行引擎处理查询并生成与 MapReduce 结果相同的结果。它使用 MapReduce 的风格。 |
HDFS or HBASE | Hadoop 分布式文件系统或 HBASE 是将数据存储到文件系统中的数据存储技术。 |
Hive 的工作
下图描述了 Hive 和 Hadoop 之间的工作流。
下表定义了 Hive 如何与 Hadoop 框架交互:
Step No. | 手术 |
---|---|
1 | 执行查询
命令行或Web UI 等Hive 接口向Driver(任何数据库驱动程序,如JDBC、ODBC 等)发送查询以执行。 |
2 | 获取计划
驱动程序借助解析查询的查询编译器来检查语法和查询计划或查询的要求。 |
3 | 获取元数据
编译器向 Metastore(任何数据库)发送元数据请求。 |
4 | 发送元数据
Metastore 将元数据作为对编译器的响应发送。 |
5 | 发送计划
编译器检查需求并将计划重新发送给驱动程序。到这里,一个查询的解析和编译就完成了。 |
6 | 执行计划
驱动程序将执行计划发送到执行引擎。 |
7 | 执行作业
在内部,执行作业的过程是一个 MapReduce 作业。执行引擎将作业发送到 Name 节点中的 JobTracker,并将该作业分配给 Data 节点中的 TaskTracker。在这里,查询执行 MapReduce 作业。 |
7.1 | 元数据操作
同时在执行过程中,执行引擎可以通过Metastore来执行元数据操作。 |
8 | 获取结果
执行引擎从数据节点接收结果。 |
9 | 发送结果
执行引擎将这些结果值发送给驱动程序。 |
10 | 发送结果
驱动程序将结果发送到 Hive 接口。 |