什么是 Apache Hadoop?

Apache Hadoop 软件是一个开源框架,支持使用简单的编程模型跨计算机集群对大型数据集进行分布式存储和处理。Hadoop 支持从一台计算机扩容至包含数千台计算机的集群,其中每台机器均提供本地计算和存储功能。通过这种方式,Hadoop 可以高效存储和处理从 GB 级到 PB 级的大型数据集。

了解如何使用 Dataproc 在 Google Cloud 上以更简单、更经济实惠的集成方式运行 Apache Hadoop 集群。

Hadoop 历史记录

Hadoop 起源于万维网的早期时代。随着网络不断发展到数百万个乃至数十亿个网页,搜索和返回搜索结果的任务已成为最严峻的挑战之一。Google、Yahoo 和 AltaVista 等初创公司开始构建框架来实现搜索结果自动化。计算机科学家 Doug Cutting 和 Mike Cafarella 根据 Google 在 MapReduce(后续内容更多)和 Google File System 的早期工作的基础上构建了一个名为 Nutch 的项目。Nutch 最终迁移到了 Apache 开源软件基础,并在 Nutch 和 Hadoop 之间拆分。2006 年,Cutting 开始在 Yahoo 工作,而 Yahoo 在 2008 年开放了 Hadoop 的源代码。

虽然 Hadoop 有时被称作面向高可用性分布式对象的平台的首字母缩略词,但它最初是以 Cutting 儿子的玩具大象命名的。

Hadoop 定义

Hadoop 是基于 Java 的开源框架,用于管理应用的大量数据的存储和处理。Hadoop 使用分布式存储和并行处理来处理大数据和分析作业,将工作负载分解为可同时运行的较小工作负载。

Hadoop 框架主要由四个模块组成,这四个模块协同运行以形成 Hadoop 生态系统:

Hadoop 分布式文件系统 (HDFS):作为 Hadoop 生态系统的主要组件,HDFS 是一种分布式文件系统,其中各个 Hadoop 节点处理其本地存储中的数据。这样可以消除网络延迟,从而实现对应用数据的高吞吐量访问。此外,管理员也不需要预先定义架构。

Yet Another Resource Negotiator (YARN):YARN 是一个资源管理平台,负责管理集群中的计算资源并使用它们来调度用户的应用。它在整个 Hadoop 系统上执行调度和资源分配。

MapReduce:MapReduce 是一个用于大规模数据处理的编程模型。在 MapReduce 模型中,较大数据集的子集和用于处理这些子集的指令会被分派给多个不同的节点,其中每个子集都由一个节点与其他处理作业并行处理。处理结果后,各个子集会组合成一个较小且更易于管理的数据集。

Hadoop Common:Hadoop Common 包括其他Hadoop 模块使用和共享的库和实用程序。

除了 HDFS、YARN 和 MapReduce 以外,整个 Hadoop 开源生态系统仍在不断发展,其中包括许多可帮助收集、存储、处理、分析和管理大数据的工具和应用。例如 Apache Pig、Apache Hive、Apache HBase、Apache Spark、Presto 和 Apache Zeppelin。

Hadoop 的工作原理

Hadoop 支持在商品硬件集群中分布数据集。处理是同时在多台服务器上并行执行的。

软件客户端将数据输入 Hadoop。HDFS 会处理元数据和分布式文件系统。然后,MapReduce 会处理并转换数据。最后,YARN 会在计算集群中划分作业。

所有 Hadoop 模块的设计均基于以下基本假设:单个机器或多个机器的硬件故障很常见,应由框架在软件中自动处理。

Hadoop 有哪些优势?

可伸缩性

Hadoop 是快速存储和处理海量数据的主要工具之一, 它通过使用分布式计算模型来实现这一点,该模型支持快速处理可通过添加计算节点快速扩缩的数据。

费用低

作为一个可以在商品硬件上运行并且拥有庞大的工具生态系统的开源框架,Hadoop 是存储和管理大数据的低成本方案。

灵活性

Hadoop 可提供数据存储的灵活性,因为数据在存储之前不需要预处理,这意味着组织可以存储任意数量的数据,并在以后使用。

弹性

作为一种分布式计算模型,Hadoop 支持容错和系统弹性,这意味着,如果其中一个硬件节点发生故障,作业会重定向到其他节点。存储在一个 Hadoop 集群中的数据会在系统内的其他节点上复制,以防范硬件或软件故障。

Hadoop 面临哪些挑战?

MapReduce 复杂性和限制

作为一个文件密集型系统,MapReduce 可能难以用于复杂的作业(例如交互式分析任务)。MapReduce 函数也需要用 Java 编写,并且可能需要很长的学习时间。MapReduce 生态系统非常庞大,许多组件对应不同的功能,因此很难确定要使用哪些工具。

安全

由于 Hadoop 需要处理如此庞大的数据集,因此可能会出现数据敏感和保护方面的问题。关于身份验证、加密、审核和预配工具的生态系统已经兴起,可帮助开发者保护 Hadoop 中的数据。

治理和管理

Hadoop 没有太多强大的数据管理和治理工具,也不适用于数据质量和标准化。

人才短缺

与许多编程领域一样,Hadoop 也存在众所周知的人才短缺。要找到同时具备 Java 必备技能以便对 MapReduce、操作系统和硬件进行编程的开发者绝非易事。此外,MapReduce 学习难度较大,这使得新程序员很难快速掌握其最佳实践和生态系统。

为什么 Hadoop 很重要?

研究公司 IDC 估计,在物联网、社交媒体、边缘计算和云端产生的数据的推动下,2020 年创建或复制了 62.4 ZB 的数据。该公司预测,从 2020 年到 2025 年,预计每年的数据增长 23%。虽然并非所有数据都会保存(使用后会被删除或被覆盖),但全球的数据需求仍在增长。

Hadoop 工具

Hadoop 拥有庞大的开源工具生态系统,可增强和扩展核心模块的功能。可用于 Hadoop 的一些主要软件工具包括:

Apache Hive:一种数据仓库,允许程序员使用名为 HiveQL(类似于 SQL)的查询语言处理 HDFS 中的数据

Apache HBase:一种开源非关系型分布式数据库,通常与 Hadoop 搭配使用

Apache Pig:一种在 MapReduce 上用作抽象层的工具,用于分析大量数据,并启用过滤、排序、加载和加入等功能

Apache Impala:一种用于大规模并行处理的开源 SQL 查询引擎,常与 Hadoop 搭配使用

Apache Sqoop:一种命令行界面应用,用于在关系型数据库和 Hadoop 之间高效传输批量数据

ApacheZooKeeper:一种开源服务器,能够在 Hadoop 中实现可靠的分布式协调;一项用于“维护配置信息、命名、提供分布式同步和提供群组服务”的服务

Apache Oozie:Hadoop 作业的工作流调度器

Apache Hadoop 有哪些用途?

以下是 Apache Hadoop 的常见使用场景:

分析和大数据

许许多多的公司和组织将 Hadoop 用于研究、生产数据处理和分析,这些任务需要处理 TB 级或 PB 级的大数据、存储各种数据集以及进行数据并行处理。

数据存储和归档

由于 Hadoop 支持在商品硬件上进行大容量存储,因此它适合作为各类数据的低成本存储方案,例如事务、点击流或传感器和机器数据。

数据湖

由于 Hadoop 可以帮助存储数据而无需预处理,因此可用于对存储大量未优化数据的数据湖进行补充。

营销分析

营销部门通常使用 Hadoop 来存储和分析客户关系管理 (CRM) 数据。

风险管理

银行、保险公司和其他金融服务公司使用 Hadoop 构建风险分析和管理模型。

AI 和机器学习

Hadoop 生态系统有助于为机器学习应用处理数据和模型训练操作。

更进一步

获享 $300 赠金以及 20 多种提供“始终免费”用量的产品,开始在 Google Cloud 上构建项目。

Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
控制台