[大数据]hadoop(介绍)

1,298 阅读6分钟

什么是 Hadoop?

简单来说,Hadoop 是一个开源的、用于分布式存储和处理海量数据(通常指 PB 级别)的软件框架。它的核心设计思想源于 Google 的两篇里程碑式论文:Google File System 和 MapReduce。Hadoop 由 Apache 软件基金会开发,其核心优势在于能够利用大量普通的、廉价的服务器组成集群,以可靠、可扩展的方式处理大规模数据。

它的名字来源于其创建者 Doug Cutting 儿子的一只玩具大象的名字。


Hadoop 的核心设计思想与要解决的问题

在 Hadoop 出现之前,处理海量数据面临两大难题:

  1. 存储问题:数据量太大(例如,整个互联网的网页、数年的交易记录),单台机器的硬盘根本无法存放。
  2. 计算问题:即使能存下,单台计算机的计算能力也完全不足以在可接受的时间内(比如几天内)处理完这些数据。

传统的解决方案是使用“超级计算机”或大型商用服务器,但这些设备极其昂贵,且扩展性有限。

Hadoop 的解决方案(核心思想)

  • 分而治之:将巨大的数据集切割成小块(),分散存储到集群中成百上千台普通电脑上。然后,将计算任务也分发到这些机器上,让它们并行处理各自的数据块(治之),最后将结果汇总。
  • 移动计算比移动数据更经济:传统的思路是把数据传到计算节点。Hadoop 反其道而行之,将计算程序(通常很小)发送到存储数据的机器上运行,极大地减少了网络传输开销。
  • 假设硬件会故障,并为此设计:在由成千上万台廉价PC组成的集群中,硬件故障(如磁盘损坏、内存故障)是常态而非异常。Hadoop 的架构从设计之初就包含了数据冗余、故障检测和自动恢复机制,从而实现了高可靠性。

Hadoop 的核心组件(最初的两大支柱)

一个经典的 Hadoop 生态系统主要包含以下两个核心组件:

1. HDFS - Hadoop 分布式文件系统

HDFS 是 Hadoop 的“硬盘”,负责数据的存储。

  • 架构:采用主/从架构。
    • NameNode(主节点):只有一个(或两个做高可用)。它是“管家”,负责管理文件系统的元数据,比如文件叫什么、被切分成多少块、这些块分别存储在哪些机器上。它不存储实际数据。
    • DataNode(从节点):有很多个。它们是“仓库”,负责存储实际的数据块。每个数据块(默认 128MB 或 256MB)会在多个 DataNode 上复制(默认3份),以实现容错。
  • 作用:提供高吞吐量的数据访问,适合一次写入、多次读取的场景。
2. MapReduce - 分布式计算框架

MapReduce 是 Hadoop 的“大脑和CPU”,负责数据的计算。

  • 编程模型:它将计算过程抽象为两个核心阶段:
    • Map(映射)阶段:读取 HDFS 上的数据块,进行初步处理(如过滤、排序),输出一系列的中间键值对 `。
    • Reduce(归约)阶段:接收 Map 阶段输出的、具有相同 key 的中间结果,进行汇总计算(如求和、计数、平均值),最终将结果写回 HDFS。
  • 执行引擎:它负责将用户编写的 Map 和 Reduce 函数分发到集群中存有相关数据的节点上运行,并管理整个任务的执行、监控和容错(如果某个节点任务失败,会自动调度到其他节点重试)。

Hadoop 的现代化架构:YARN

随着 Hadoop 的发展,最初的 MapReduce 框架暴露出一些问题(如资源利用率低、只支持批处理)。因此在 Hadoop 2.0 中,引入了 YARN

  • YARNYet Another Resource Negotiator(另一种资源协调者)
  • 作用:YARN 是一个集群资源管理和作业调度平台。它将 Hadoop 的“资源管理”和“任务调度/监控”功能从 MapReduce 中剥离出来,成为一个独立的、通用的层。
  • 带来的革命性变化
    • 解耦:计算框架(如 MapReduce)不再负责资源管理,只专注于计算逻辑。
    • 多元化:得益于 YARN,Hadoop 集群可以运行多种计算框架,而不仅仅是 MapReduce。例如:
      • Spark(内存计算,性能远超 MapReduce)
      • Flink(流处理)
      • Tez(DAG 计算)
      • 甚至其他非数据处理应用
  • 架构:同样采用主/从结构。
    • ResourceManager(主):管理整个集群的资源(CPU、内存)。
    • NodeManager(从):管理单个节点上的资源。

所以,现代 Hadoop 的核心可以看作是 HDFS + YARN。


Hadoop 的作用与价值

  1. 海量数据存储:以低成本、可靠的方式存储 PB 甚至 EB 级别的数据,为企业构建“数据湖”奠定了基础。
  2. 海量数据批处理:非常适合处理那些对时间不敏感、但数据量巨大的离线计算任务。例如:
    • 日志分析:分析网站点击流、应用日志。
    • 数据挖掘与推荐系统:分析用户历史行为,进行商品推荐(如电商)。
    • 搜索引擎:构建网页索引(这正是它最初的用途)。
    • 金融风险建模:分析多年的交易数据。
    • 生物信息学:处理基因序列数据。
  3. 高可靠性与高容错性:数据自动多副本存储,计算任务自动重试,确保在硬件故障常态下作业能顺利完成。
  4. 高可扩展性:可以通过简单地增加机器来线性地扩展存储和计算能力,扩展成本低廉。
  5. 高性价比:建立在廉价商用硬件之上,相比传统大型机解决方案,成本极低。

Hadoop 生态系统

Hadoop 已经发展成一个庞大的生态系统,围绕其核心(HDFS, YARN)衍生出许多优秀的工具,共同解决大数据领域的各类问题:

  • 数据采集Flume(日志收集)、Sqoop(在 Hadoop 和关系数据库间传输数据)。
  • 数据存储HBase(基于 HDFS 的 NoSQL 数据库,支持实时读写)。
  • 数据处理/计算
    • MapReduce(批处理)
    • Spark(批处理+流处理+机器学习,速度更快)
    • Flink(先进的流处理框架)
    • Hive(使用类似 SQL 的 HiveQL 语言进行数据仓库查询,底层可转换为 MapReduce/Spark 作业)。
    • Pig:使用一种脚本语言(Pig Latin)进行数据分析。
  • 资源管理与协调ZooKeeper(分布式协调服务)。
  • 工作流调度OozieAzkaban(管理复杂的 Hadoop 作业依赖和执行顺序)。

总结与现状

总结来说,Hadoop 是一个通过分布式架构,利用廉价硬件集群来可靠存储和处理超大规模数据集的解决方案。

当前现状

  • 基石地位:虽然许多新的计算框架(如 Spark、Flink)在性能上超越了最初的 MapReduce,但 HDFS 和 YARN 仍然是许多企业大数据平台的基石。Spark、Flink 等也通常运行在 YARN 管理的集群上,并读取 HDFS 中的数据。
  • 演变:今天当我们说“使用 Hadoop”时,往往指的是使用以 HDFS 和 YARN 为核心的整个大数据生态系统,而不仅仅是 MapReduce。
  • 云化:传统的自建 Hadoop 集群(On-Premise)正在向云上的托管服务(如 Amazon EMR, Google Dataproc, Azure HDInsight)迁移,降低了运维复杂度。

希望这个详细的解释能帮助您全面理解 Hadoop 是什么、能干什么以及它的核心价值所在。