Hadoop 概述

文章目录

  • Hadoop 概述
    • Hadoop 是什么
    • Hadoop 主要发展历程
    • Hadoop 优势
    • Hadoop 组成
      • Hadoop 1.x、2.x、3.x 区别
      • HDFS 概述
      • YARN 概述
      • MapReduce 架构概述
      • HDFS、YARN、MapReduce 三者关系
    • Hadoop 生态圈

Hadoop 概述

Hadoop 是什么

  • Hadoop 是一个由 Apache 基金会开发的开源分布式计算框架,旨在处理和分析海量数据。它提供了对大数据进行存储、处理和分析的基础架构,并且可以在低成本的硬件集群上运行。
  • 通常情况下 Hadoop 是指一个更广泛的概念——Hadoop 生态圈。

Hadoop 主要发展历程

  • 2005年:诞生和初期阶段
    • Hadoop 的起源可以追溯到雅虎(Yahoo)的工程师 Doug Cutting 和 Mike Cafarella,他们创建了一个开源的分布式文件系统(DFS)和分布式计算框架。
    • Hadoop 最初是为支持 Nutch 搜索引擎项目而开发的。
  • 2006年:成为 Apache 项目
    • Hadoop 被移交给 Apache 软件基金会,并成为其顶级项目。
    • 分布式文件系统(HDFS)和分布式计算框架(MapReduce)成为 Hadoop 的核心组件。
  • 2008年:Hadoop 0.18 发布
    • Apache Hadoop 0.18 版本发布,标志着 Hadoop 在稳定性和功能上取得了重大进展。
  • 2009年:Hadoop 生态系统的扩展
    • Hadoop 生态系统开始迅速扩展,引入了许多相关项目,如 Hive(数据仓库)、HBase(分布式数据库)、Pig(数据分析语言)等。
  • 2011年:Hadoop 1.0 发布
    • Apache Hadoop 1.0 版本发布,它包含了许多改进和稳定性增强。
  • 2012年:YARN 引入
    • Hadoop 2.0 引入了 YARN(Yet Another Resource Negotiator),这是一个通用的资源管理器,取代了原始的 MapReduce 专用资源管理器。YARN 使得 Hadoop 可以支持除MapReduce 之外的其他计算模型。
  • 2014年:Hadoop 2.0 GA 发布
    • Hadoop 2.0正式发布,标志着 Hadoop 的下一阶段发展。
  • 2017年:Hadoop 3.0 发布
    • Hadoop 3.0 发布,引入了一些新特性,包括改进的存储管理、容器支持、原生 GPU 支持等。

Hadoop 优势

  • 分布式存储: Hadoop 分布式文件系统(HDFS)允许数据分散存储在集群的多个节点上,提供了高容错性和可用性。通过在多个节点上复制数据块,HDFS 可以容忍节点故障,确保数据的安全性和可靠性。
  • 可扩展性: Hadoop 是一个高度可扩展的系统,可以轻松地扩展到数千台服务器,以处理更大规模的数据。这种可扩展性使得 Hadoop 能够适应不断增长的数据量和工作负载。
  • 开源和免费: Hadoop 是一个开源项目,任何人都可以免费获取、使用和修改它。这降低了大数据处理的成本,促使许多组织和企业采用 Hadoop 作为他们的大数据解决方案。
  • 容错性: Hadoop 通过在多个节点上存储数据的多个副本来提高容错性。当某个节点出现故障时,系统可以从其他节点获取数据,确保作业的顺利执行。
  • 灵活性: Hadoop 生态系统包含许多工具和组件,使其非常灵活,能够应对不同类型的工作负载。从批处理作业到实时查询,再到流处理,Hadoop 都提供了各种工具和框架来满足不同的需求。
  • 适用于多样化的数据: Hadoop 可以处理结构化和非结构化数据,包括文本、图像、音频等多种类型的数据。这使得它成为一个通用的大数据处理框架,适用于各种应用场景。
  • 生态系统丰富: Hadoop 生态系统不断发展,包括了许多与大数据相关的工具和框架,如 Hive、HBase、Pig、Spark 等。这些工具扩展了 Hadoop 的功能,使其能够更全面地满足不同的业务需求。
  • 并行处理: Hadoop 采用 MapReduce 编程模型,可以在大规模的数据集上进行并行处理。这种并行性使得任务可以在集群的多个节点上同时执行,加速数据处理速度。

总体而言,Hadoop 的优势在于其能够有效地处理大规模数据、提供高度可扩展性和容错性,同时具备开源性和灵活性,适用于各种不同的应用场景。

Hadoop 组成

Hadoop 1.x、2.x、3.x 区别

  • Hadoop 1.x
    • 主要组件包括 Hadoop 分布式文件系统(HDFS)和Hadoop MapReduce。MapReduce 是用于分布式计算的编程模型和处理引擎。
    • 存在单点故障的问题,特别是 NameNode 是单点,如果它出现故障,整个 HDFS 将不可用。
  • Hadoop 2.x
    • 引入了 Yet Another Resource Negotiator(YARN),资源管理和作业调度从MapReduce中分离出来,使得Hadoop更通用,支持多个计算框架。
    • 通过引入 HA(高可用性)配置,解决了 Hadoop 1.x 中单点故障的问题。以及其他方面的优化。
  • Hadoop 3.x
    • 在组成上没有变化。进一步改进了 HA,以减少切换期间的服务中断,提高系统的可用性。以及其他方面的优化。

HDFS 概述

Hadoop Distributed File System (HDFS) 是 Hadoop 的核心组件之一,提供了一个高度容错性的分布式文件系统。

  • NameNode(NN):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件权限),以及每个文件的块列表和块所在的DataNode等。
  • DataNode(DN):在本地文件系统存储文件块数据,以及块数据的校验和。
  • Secondary NameNode(2NN):每隔一段时间对NameNode元数据备份。

YARN 概述

Yet Another Resource Negotiator (YARN) 是 Hadoop 2.x版本引入的资源管理和调度平台。它负责管理整个集群的计算资源(如CPU和内存)以及任务调度。YARN允许其他计算框架(例如 Spark 或 Flink)与 Hadoop 集成并在同一集群上运行。

  • ResourceManager(RM):管理整个集群资源(内存、CPU等)
  • NodeManager(NM):管理单个节点服务器资源
  • ApplicationMaster(AM):管理单个任务运行
  • Container:容器,相当一台独立的服务器,里面封装了任务运行所需要的资源,如内存、CPU、磁盘、网络等。

MapReduce 架构概述

MapReduce 是一种编程模型,用于编写分布式数据处理应用程序。它将复杂的计算任务分解为两个主要阶段:Map 阶段和 Reduce 阶段。

  • Map 阶段输入数据被分割并分配给各个节点进行处理(并行处理)
  • Reduce 阶段对Map结果进行汇总

HDFS、YARN、MapReduce 三者关系

客户端 Client 提交任务到资源管理器(ResourceManager),资源管理器接收到任务之后去NodeManager 节点开启任务(ApplicationMaster), ApplicationMaster 向 ResourceManager 申请资源,若有资源 ApplicationMaster 负责开启任务即 MapTask。开始干活了即分析任务,每个 map 独立工作,各自负责检索各自对应的 DataNode,将结果记录到 HDFS,DataNode 负责存储,NameNode 负责记录,2nn 负责备份部分数据。

HDFS、YARN 和 MapReduce 共同协作,形成了 Hadoop 的基本架构,使其能够存储和处理大规模的数据。随着 Hadoop 生态系统的发展,其他计算框架(如Apache Spark、Apache Flink)也被引入,扩展了 Hadoop 的功能。

Hadoop 生态圈

Hadoop 是目前应用最为广泛的分布式大数据处理框架,其具备可靠、高效、可伸缩等特点。

Hadoop 的核心组件是 HDFS、MapReduce。随着处理任务不同,各种组件相继出现,丰富Hadoop 生态圈。

根据服务对象和层次分为:数据来源层、数据传输层、数据存储层、资源管理层、数据计算层、任务调度层、业务模型层。

经过时间的累积,Hadoop 已经从最开始的两三个组件,发展成一个拥有20多个部件的生态系统。在整个 Hadoop 架构中,计算框架起到承上启下的作用,一方面可以操作 HDFS 中的数据,另一方面可以被封装,提供 Hive、Pig 这样的上层组件的调用。

接下来对 Hadoop 生态圈中出现的相关组件做一个简要介绍。

  • ZooKeeper
    • 来源于 Google 的 Chubby;它主要是用来解决分布式应用中经常遇到的一些数据管理问题,简化分布式应用协调及其管理的难度。
  • Spark:
    • 快速、通用的大数据处理引擎,支持批处理、流处理、机器学习和图形计算等多种工作负载。
  • HBase
    • 列式数据库,基于Google Bigtable,在HDFS之上提供随机实时读/写访问;是一个高可靠性、高性能、面向列、可伸缩的分布式数据库。
  • Hive
    • 是一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,通过 SQL-like 接口(HiveQL)语句快速实现简单的 MapReduce 统计,不必开发专门的 MapReduce 应用,十分适合数据仓库的统计分析。
  • Pig
    • 是一个基于 Hadoop 的大规模数据分析工具,提供 Pig Latin 语言,简化复杂查询的编写,编译器会把其数据分析请求转换为一系列经过优化处理的 MapReduce 运算。
  • Flume:
    • 高可用性和可扩展的日志收集系统,用于从多个源收集日志并将数据发送到中心存储库。
  • Flink:
    • 实时分析框架,支持事件驱动和批量数据处理。
  • Sqoop
    • 在 Hadoop 与传统的数据库(关系型数据库)间高效地传输数据。
  • Ambari
    • Hadoop 管理工具,可以快捷地监控、部署、管理集群。
  • Mahout
    • 一个可扩展的机器学习和数据挖掘库。

你可能感兴趣的:(Hadoop,hadoop,大数据,分布式,Hadoop生态圈)