Hadoop 中的 Hive 是什么? 历史及其组成部分
已发表: 2021-10-07Apache Hive 是一个构建在 Hadoop 之上的开源仓储系统。 Hive 用于查询和分析存储在 Hadoop 中的海量数据集。 它通过处理结构化和半结构化数据来工作。
通过这篇文章,让我们详细谈谈 Hadoop 中的 Hive、它的历史、它的重要性、Hive 架构、一些关键特性、一些限制等等!
目录
什么是蜂巢?
Apache Hive 只是一个以 Hadoop 为基础构建的数据仓库软件。 在 Apache Hive 之前,大数据工程师必须编写复杂的 map-reduce 作业来执行查询任务。 另一方面,有了 Hive,事情就大大减少了,因为工程师现在只需要了解 SQL。
Hive 使用一种称为 HiveQL(类似于 SQL)的语言,使具有 SQL 工作知识的工程师更容易。 HiveQL 自动将您的 SQL 查询转换为 Hadoop 可以执行的 map-reduce 作业。
在此过程中,Apache 将抽象概念引入到 Hadoop 的工作中,并允许数据专家处理复杂的数据集,而无需学习使用 Hive 的 Java 编程语言。 Apache Hive 在您的工作站上运行,并将 SQL 查询转换为要在 Hadoop 集群上执行的 map-reduce 作业。 Hive 将所有数据分类到表中,从而为 HDFS 中存在的所有数据提供结构。
Apache Hive 的历史
数据基础架构团队在 Facebook 推出了 Apache Hive。 它是 Facebook 上积极用于多种内部目的的技术之一。 多年来,Apache Hive 在集群上运行了数千个作业,拥有数百名用户,用于一系列应用程序。
Facebook 的 Hive-Hadoop 集群存储了超过 3PB 的原始数据。 它每天可以实时加载 15TB 的数据。 从那里开始,Apache Hive 在其用例中发展得更多,如今,它被 IBM、雅虎、亚马逊、FINRA、Netflix 等巨头使用。
从世界顶级大学在线获取您的数据科学认证。 获得行政 PG 课程、高级证书课程或硕士课程,以加快您的职业生涯。
为什么需要 Apache Hive?
在提出 Apache Hive 之前,Facebook 一直在努力应对许多挑战,例如要分析的数据量不断增加,以及这个大型数据集的完全不一致。 这些挑战使 Facebook 难以无缝处理其数据密集型任务。 传统的基于 RDBMS 的结构不足以控制不断增加的压力。
Facebook 首先引入了 map-reduce 来克服这些挑战,但随后通过提供适用于 HiveQL 的 Apache Hive 进一步简化了它。
最终,Apache Hive 成为了急需的救星,帮助 Facebook 克服了各种挑战。 现在,使用 Apache Hive,Facebook 能够实现以下目标:
- 模式的演变和灵活性。
- 表的分区和分桶。
- 直接在 HDFS 中定义 Hive 表。
- ODBC/JDBC 驱动程序的可用性。
总而言之,Apache Hive 帮助开发人员节省了大量时间,否则这些时间将用于编写复杂的 map-reduce 作业。 Hive 简化了数据的汇总、分析、查询和探索。
Apache Hive 仅依赖于 SQL,是一个快速且可扩展的框架,并且具有高度可扩展性。 如果您了解使用 SQL 进行基本查询,您将能够立即使用 Apache Hive! 它还提供对 HBase 和 HDFS 等不同数据存储的文件访问。
Apache Hive 的架构
既然您了解了 Apache Hive 的重要性和出现,那么我们来看看 Apache Hive 的主要组件。 Apache Hive 的架构包括:
1.元存储
这用于存储每个表的元数据。 元数据通常由位置和模式组成。 Metastore 还包含分区元数据,可帮助工程师跟踪已分布在集群上的不同数据集的进度。 此处存储的数据采用传统的 RDBMS 格式。
2. 司机
Apache Hive 中的驱动程序就像一个控制器,负责接收 HiveQL 语句。 然后,它通过创建不同的会话开始执行这些语句。 驱动程序还负责监视和管理实施的生命周期及其沿途的进展。 驱动程序包含执行 HiveQL 语句时生成的所有重要元数据。 它还充当 map-reduce 操作后获得的数据的收集点。
3. 编译器
编译器用于编译 HiveQL 查询。 它将用户生成的查询转换为一个万无一失的执行计划,其中包含所有需要执行的任务。 该计划还包括遵循 map-reduce 以获得所需输出所需的所有步骤和过程。 Hive 编译器将用户输入查询转换为 AST(抽象语法树)以检查编译时错误或兼容性问题。 当没有遇到任何问题时,AST 将转换为有向无环图 (DAG)。
4.优化器
优化器对执行计划执行所有转换,以达到优化的 DAG。 它通过将所有转换聚合在一起来实现这一点,例如将单个连接数组转换为单个连接 - 以提高性能。 此外,优化器可以在执行缩减操作之前通过对数据应用转换来拆分不同的任务——再次提高整体性能。
5. 执行者——
一旦 Apache Hive 执行了编译和优化任务,执行器就会执行最终的执行。 它负责将任务流水线化并完成任务。
6. CLI、UI 和 Thrift 服务器
命令行界面 (CLI) 用于为外部用户提供用户界面以与 Apache Hive 的不同功能进行交互。 CLI 是为最终用户组成 Hive 的 UI。 另一方面,Thrift 服务器允许外部客户端通过网络与 Hive 交互,类似于 ODBC 或 JDBC 协议。
Apache Hive 的核心特性
如前所述,Apache Hive 为工程师处理数据作业的方式带来了急需的改变。 Java 不再是首选语言,开发人员只需使用 SQL 即可工作。 除此之外,Hive 还有其他几个基本功能,例如:
- Apache Hive 以更加简化的方式提供数据汇总、分析和查询。
- Hive 支持内部和外部表,使得无需将外部数据带入 H DFS 即可处理外部数据。
- Apache Hive 非常适合 Hadoop 的低级接口需求。
- 通过支持表级别的数据分区,Apache Hive 有助于提高整体性能。
- 它有一个基于规则的优化器,用于优化不同的逻辑计划。
- 它适用于 HiveQL,一种类似于 SQL 的语言,这意味着开发人员无需掌握另一种语言即可处理大型数据集。
- 在 Hive 中查询非常简单,类似于 SQL。
- 我们还可以使用 Hive 为数据分析运行 Ad-hoc 查询。
Apache Hive 的限制
由于数据科学领域相对较新且不断发展,即使是市场上最好的工具也有一些局限性。 解决这些限制将为我们提供下一个最佳工具。 以下是使用 Apache Hive 的一些限制,供您牢记:
- Hive 不提供行级更新和实时查询。
- Apache Hive 为交互提供了可接受的延迟。
- 它不是处理在线交易的最佳选择。
- Hive 查询中的延迟通常高于平均水平。
综上所述
Apache Hive 为数据工程师处理大型数据集的方式带来了巨大而惊人的改进。 此外,通过完全消除对 Java 编程语言的需求,Apache Hive 为数据工程师带来了熟悉的舒适感。 今天,如果您具备 SQL 查询的基础知识,就可以顺利使用 Apache Hive。
正如我们前面提到的,数据科学是一个动态且不断发展的领域。 我们确信,未来几年将会出现新的工具和框架来进一步简化事情。 如果您是一名数据爱好者,希望学习数据科学行业的所有工具,那么现在是使用 Hive 等大数据工具的最佳时机。
在 upGrad,我们指导和指导了来自世界各地的学生,帮助不同背景的人在数据科学行业站稳脚跟。 我们的专家教师、行业合作伙伴、安置帮助和强大的校友网络确保您在这个旅程中永远不会孤单。 因此,请查看我们的数据科学执行 PG 计划,并让自己报名参加适合您的课程——剩下的交给我们!
Apache Hive 是一个用于存储、查询和分析大型数据集的框架或系统。 Apache Hive 由 Facebook 引入以增强其内部运营,此后一直是数据科学领域不可或缺的一部分。 不! 只需 SQL 的工作知识就足以让您开始使用 Apache Hive! Apache Hive一般用于OLAP(批处理),一般不用于OLTP,因为对数据库的操作是实时的。Hadoop 中的 Apache Hive 是什么?
我是否需要学习任何特定语言才能在 Hadoop 中使用 Apache Hive?
Apache Hive 不用于什么?