Hadoop学习教程,从入门到精通, 初识Hadoop — 知识点详解(1)

初识Hadoop --- 知识点详解


一、大数据概述

1.1 什么是大数据

定义:

大数据(Big Data)是指传统数据处理软件工具无法在合理时间内完成采集、存储、管理和分析的大规模、复杂数据集合。其核心不仅在于数据量之"大",更在于从海量数据中提取有价值信息的能力。

权威定义(3V → 5V):

维度 英文 含义
Volume(大量) 数据规模巨大 从TB级别跃升至PB、EB甚至ZB级别
Velocity(高速) 数据生成和处理速度快 数据以实时或近实时的方式持续产生,要求快速处理
Variety(多样) 数据类型繁多 结构化、半结构化、非结构化数据并存
Value(价值) 价值密度低但商业价值高 海量数据中有价值的信息占比低,需深度挖掘
Veracity(真实性) 数据质量参差不齐 数据的准确性、可信度直接影响分析结果

数据量级换算:

复制代码
1 KB (Kilobyte)  = 1024 Byte
1 MB (Megabyte)  = 1024 KB
1 GB (Gigabyte)  = 1024 MB
1 TB (Terabyte)  = 1024 GB
1 PB (Petabyte)  = 1024 TB
1 EB (Exabyte)   = 1024 PB
1 ZB (Zettabyte) = 1024 EB

1.2 大数据的数据类型

(1) 结构化数据(Structured Data)

  • 定义: 具有固定格式和长度,可以用二维表结构来表达的数据。
  • 存储方式: 关系型数据库(如 MySQL、Oracle、PostgreSQL)。
  • 示例: 银行交易记录、学生考试成绩表、员工薪资表、传感器数值记录。
  • 特点: 易于存储、查询和分析,处理技术成熟。

(2) 半结构化数据(Semi-structured Data)

  • 定义: 不符合关系型数据库的严格表结构,但包含标签或标记来区分语义层次的数据。
  • 存储方式: NoSQL数据库、文件系统。
  • 示例: JSON文件、XML文件、HTML文档、日志文件(Log)、电子邮件。
  • 特点: 具有一定的结构性,但灵活性较高,schema可变。

(3) 非结构化数据(Unstructured Data)

  • 定义: 没有固定格式、无法用传统数据库表描述的数据。
  • 存储方式: 分布式文件系统(如HDFS)、对象存储(如S3)、NoSQL数据库。
  • 示例: 文本(社交媒体帖子)、图片、音频、视频、PPT、PDF文档。
  • 特点: 占大数据总量的80%~90%以上,处理难度最大,蕴含价值潜力巨大。

数据类型占比(行业普遍认知):

复制代码
非结构化数据:约 80%-90%
半结构化数据:约 5%-10%
结构化数据:  约 5%-10%

1.3 大数据的特征(4V详解)

(1) Volume --- 大量性

  • 数据体量巨大,远超传统数据库处理能力。
  • 全球每天产生约2.5 EB数据(截至2024年)。
  • 典型场景:社交平台每天数十亿条消息、电商平台每天数亿笔交易。

(2) Velocity --- 高速性

  • 数据以极高速率生成,要求实时或近实时处理。
  • 批处理(Batch Processing): 对历史数据定期处理,如每日/每周报表。
  • 流处理(Stream Processing): 对实时数据流即时处理,如实时风控、实时推荐。
  • 交互式查询(Interactive Query): 秒级到分钟级的即席查询。

(3) Variety --- 多样性

  • 数据来源广泛:传感器、社交网络、日志、交易系统、移动设备等。
  • 数据格式多样:文本、图片、音频、视频、地理位置、点击流等。
  • 需要多种技术手段进行整合处理。

(4) Value --- 价值性

  • 价值密度低:在海量数据中,有用信息占比极低。
  • 但通过深度挖掘分析,可获得巨大的商业价值和社会价值。
  • 例:监控视频中,真正有用的画面可能仅占几秒。

补充特征:

  • Veracity(真实性/准确性): 数据质量存在噪声、缺失、不一致等问题。
  • Variability(可变性): 数据含义和格式可能随时间变化。

1.4 研究大数据的意义

(1) 商业价值

  • 精准营销: 通过用户行为数据实现个性化推荐(如淘宝千人千面)。
  • 风险控制: 金融行业利用大数据建立信用模型,识别欺诈交易。
  • 运营优化: 通过数据分析优化供应链、降低库存成本。

(2) 科学研究

  • 基因组学、天文学、气象学等领域依赖大数据分析推动科研突破。
  • 加速药物研发、疾病预测模型构建。

(3) 社会治理

  • 智慧城市:交通流量优化、公共安全监控、应急响应。
  • 疫情防控:流行病学追踪、密接排查、资源调配。

(4) 决策支持

  • 从"经验驱动"转向"数据驱动"决策。
  • 企业战略制定、市场趋势预判、竞争分析。

(5) 推动技术进步

  • 大数据催生了Hadoop、Spark、Flink等分布式计算框架。
  • 推动了人工智能和机器学习的快速发展(数据是AI的燃料)。

1.5 大数据的应用场景

1.5.1 医疗行业的应用
应用方向 具体内容
疾病预测与预防 通过分析历史病历数据和环境数据,预测流感等疾病的爆发趋势
精准医疗 基于基因组数据和临床数据,为患者制定个性化治疗方案
医学影像分析 利用深度学习+大数据辅助CT、MRI影像的自动识别和诊断
药物研发 通过大规模临床试验数据分析,加速新药发现和上市周期
健康管理 可穿戴设备采集的实时健康数据(心率、血压、睡眠等)用于慢病管理
医院运营优化 患者流量预测、病床调度、医疗资源配置优化

典型应用案例:

  • IBM Watson Health 利用大数据辅助癌症诊断。
  • 基于大数据的电子健康档案(EHR)系统实现跨机构数据共享。
1.5.2 金融行业的应用
应用方向 具体内容
风险控制 实时监控交易行为,识别异常模式,防范信用卡欺诈和洗钱
信用评估 基于多维数据(消费、社交、出行等)构建信用评分模型
量化交易 利用历史行情和实时市场数据进行算法交易策略建模
精准营销 分析客户画像,推荐合适的理财产品和保险产品
反洗钱(AML) 通过大数据关联分析识别可疑交易网络
智能客服 NLP技术+知识库实现智能问答和投诉处理

典型应用案例:

  • 蚂蚁金服的芝麻信用体系。
  • 银行利用大数据实现实时交易反欺诈监控。
1.5.3 零售行业的应用
应用方向 具体内容
用户画像 基于浏览、购买、评价等行为数据构建360°用户画像
个性化推荐 协同过滤、内容推荐等算法驱动的商品推荐系统
库存管理 基于销售趋势预测优化库存水平,减少滞销和缺货
定价策略 动态定价:根据供需关系、竞品价格实时调整商品价格
供应链优化 物流路径优化、仓储布局优化、配送时效提升
客流分析 线下门店利用Wi-Fi探针、视频分析等技术分析客流特征

典型应用案例:

  • 亚马逊的"购买此商品的客户还买了......"推荐系统。
  • 沃尔玛通过大数据分析发现"飓风来临前啤酒和蛋挞销量大增"的经典关联规则。

二、Hadoop概述

2.1 Hadoop的前世今生

2.1.1 起源
  • Hadoop起源于Apache Nutch 项目(一个开源的网络搜索引擎),由Doug CuttingMike Cafarella于2002年发起。
  • 2003年和2004年,Google先后发表了两篇奠基性论文:
    • GFS(Google File System,2003) --- 分布式文件系统
    • MapReduce(2004) --- 分布式计算框架
  • Doug Cutting受到这两篇论文启发,分别实现了对应的开源版本:
    • Nutch Distributed File System(NDFS) → 后演变为 HDFS
    • MapReduce 的开源实现
2.1.2 命名由来

Hadoop这个名字来源于Doug Cutting儿子的一个黄色玩具大象(Hadoop的Logo至今仍是一只黄色小象)。Doug Cutting曾说:"这是个简短、容易拼写和记忆的名字,而且没有什么其他用途。"

2.1.3 发展历程
时间 事件
2002年 Doug Cutting和Mike Cafarella启动Apache Nutch项目
2003年 Google发表GFS论文
2004年 Google发表MapReduce论文;NDFS开始开发
2006年 Nutch中的NDFS和MapReduce独立出来,正式命名为Hadoop ;Doug Cutting加入Yahoo!
2007年 Yahoo!在1000个节点的集群上运行Hadoop
2008年 Hadoop成为Apache顶级项目;打破世界排序纪录(1TB数据排序209秒)
2009年 Hadoop每分钟排序记录达到1TB/分钟;Cloudera成立(最早商业化Hadoop的公司)
2011年 Hadoop 1.0.0 正式发布;Hortonworks成立
2013年 Hadoop 2.2.0 发布,引入YARN资源管理框架
2017年 Hadoop 3.0.0发布,引入Erasure Coding、YARN Timeline Service v2等
2019年 Cloudera与Hortonworks合并
2020年 Hadoop 3.3.0发布
2.1.4 两代架构演进
复制代码
Hadoop 1.x                          Hadoop 2.x / 3.x
┌─────────────┐                    ┌─────────────┐
│   MapReduce  │  ← 计算+资源管理    │    YARN       │  ← 仅资源管理
│  (JobTracker)│                    │(ResourceManager)│
├─────────────┤                    ├─────────────┤
│     HDFS     │                    │ MapReduce /   │  ← 计算框架(可插拔)
│ (NameNode)   │                    │ Spark / Tez等  │
└─────────────┘                    ├─────────────┤
                                   │     HDFS      │
                                   │  (NameNode)   │
                                   └─────────────┘

2.2 Hadoop的优点

(1) 高可靠性(Reliability)

  • HDFS通过数据块多副本冗余存储(默认3副本)保证数据安全。
  • 即使某个DataNode节点故障,数据仍可从其他副本读取。
  • 框架自动处理节点失败,进行任务重新调度。

(2) 高扩展性(Scalability)

  • 水平扩展(Scale-out): 可通过简单增加节点来扩展集群容量和计算能力。
  • 支持从几台到数千台服务器的集群规模。
  • Facebook的Hadoop集群曾超过4000个节点。

(3) 高效性(Efficiency)

  • MapReduce任务可以并行执行,充分利用集群的分布式计算能力。
  • 数据本地化(Data Locality)策略:将计算任务调度到数据所在的节点执行,减少网络传输开销。

(4) 高容错性(Fault Tolerance)

  • 任务失败时自动重新调度到其他节点执行。
  • 数据节点故障时自动从其他副本恢复数据。
  • NameNode通过日志(EditLog)和检查点(FsImage)机制保证元数据安全。

(5) 低成本(Cost-effective)

  • 基于**廉价的商用硬件(Commodity Hardware)**构建集群,无需昂贵的专用服务器。
  • 开源免费软件,降低了软件许可成本。
  • 与传统的关系型数据库扩展方案(纵向扩展)相比,成本优势明显。

(6) 生态成熟(Ecosystem)

  • 拥有庞大的生态系统:Hive、HBase、Spark、Sqoop、Flume、Kafka、Oozie等。
  • 社区活跃,文档丰富,人才储备充足。
  • 支持多种编程语言和计算框架。

(7) 支持多种数据格式和计算模型

  • 不要求数据预先定义schema(Schema-on-Read)。
  • 可处理结构化、半结构化和非结构化数据。
  • YARN支持多种计算框架(MapReduce、Spark、Tez、Flink等)。

2.3 Hadoop的缺点

(1) 不适合低延迟数据访问

  • HDFS设计初衷是高吞吐量批处理,而非低延迟的实时访问。
  • HDFS的随机读取性能较差,不适合在线事务处理(OLTP)场景。
  • MapReduce任务的启动开销大,延迟高(秒到分钟级)。
  • 替代方案:HBase(基于HDFS,提供随机实时读写)、Spark(内存计算,速度快于MapReduce)。

(2) 不适合处理大量小文件

  • HDFS的NameNode将所有文件的元数据存储在内存中。
  • 每个文件、目录和数据块约占150字节的元数据。
  • 大量小文件会迅速耗尽NameNode内存,且会导致过多的Map任务,降低处理效率。
  • 解决方案:HAR(Hadoop Archive)、SequenceFile、CombineFileInputFormat。

(3) 不支持多用户写入和随机修改

  • HDFS采用**"一次写入,多次读取"(Write-Once-Read-Many)**的数据模型。
  • 文件写入后不支持修改,只能追加(append)。
  • 不支持多用户并发写入同一文件。

(4) MapReduce编程模型的局限性

  • MapReduce编程相对复杂,需要手写Map和Reduce函数。
  • 多轮迭代计算(如机器学习算法)需要多次磁盘I/O,效率低下。
  • 不适合DAG(有向无环图)类型的复杂计算。
  • 替代方案:Spark(基于内存计算,支持DAG)、Tez(DAG优化引擎)。

(5) NameNode单点故障问题(Hadoop 1.x)

  • Hadoop 1.x中,NameNode是单点(SPOF),一旦故障整个集群不可用。
  • Hadoop 2.x引入 HDFS HA(High Availability):Active/Standby NameNode + JournalNode解决此问题。
  • Hadoop 3.x进一步增强了HA能力。

(6) 资源管理效率问题(Hadoop 1.x)

  • Hadoop 1.x中MapReduce既负责计算又负责资源管理,耦合度高。
  • Hadoop 2.x引入YARN将资源管理独立出来,支持多种计算框架共享集群资源。

(7) 数据存储开销

  • 默认3副本策略导致存储空间膨胀为原始数据的3倍。
  • Hadoop 3.0引入**Erasure Coding(纠删码)**技术,可在保证容错的同时将存储开销降低约50%。

2.4 Hadoop的生态体系

Hadoop生态体系是一个庞大的技术栈,各组件协同工作,覆盖大数据处理的完整生命周期。

核心组件
组件 功能 说明
HDFS 分布式文件存储 Hadoop的存储基础,提供高吞吐量的数据读写
MapReduce 分布式计算框架 基于Map和Reduce的批处理编程模型
YARN 资源管理和调度 集群资源管理,支持多计算框架共存
数据存储与管理
组件 功能 说明
HBase 分布式NoSQL数据库 基于HDFS,支持海量数据的实时随机读写
Kudu 列式存储引擎 介于HDFS和HBase之间,支持快速分析和随机访问
HCatalog 元数据管理 提供统一的表和存储管理层
数据查询与分析
组件 功能 说明
Hive 数据仓库工具 将SQL转化为MapReduce/Spark/Tez任务
Pig 数据流语言 Pig Latin脚本简化MapReduce编程
Impala MPP查询引擎 基于HDFS的低延迟SQL查询
Presto/Trino 分布式SQL查询 支持跨数据源的交互式查询
数据采集与传输
组件 功能 说明
Flume 日志采集 高可用、高可靠的分布式日志收集系统
Sqoop 数据导入导出 在Hadoop与关系型数据库之间传输数据
Kafka 消息队列 高吞吐的分布式消息系统,用于实时数据管道
NiFi 数据流管理 可视化的数据流编排和管理工具
数据处理与计算
组件 功能 说明
Spark 内存计算框架 比MapReduce快10~100倍,支持批处理、流处理、机器学习
Tez DAG计算框架 优化Hive查询性能,将多轮MapReduce合并为DAG
Flink 流批一体计算 真正的流处理框架,支持事件时间和精确一次语义
数据挖掘与机器学习
组件 功能 说明
Mahout 机器学习库 基于Hadoop/Spark的分布式机器学习算法
Spark MLlib 机器学习库 Spark生态的机器学习组件
任务调度与管理
组件 功能 说明
Oozie 工作流调度 定义和调度Hadoop作业的工作流
Azkaban 任务调度 LinkedIn开源的批处理工作流调度器
Airflow 工作流编排 Airbnb开源的DAG工作流编排平台
集群管理与监控
组件 功能 说明
Ambari 集群管理 Apache开源的Hadoop集群安装、管理和监控工具
Zookeeper 分布式协调 提供配置管理、命名服务、分布式锁、集群管理

生态系统全景图(层次结构):

复制代码
┌─────────────────────────────────────────────────┐
│           数据展示与应用层                         │
│    (Hue, Zeppelin, Jupyter, BI工具)              │
├─────────────────────────────────────────────────┤
│           数据挖掘与机器学习                       │
│    (Mahout, Spark MLlib, TensorFlow on YARN)     │
├─────────────────────────────────────────────────┤
│           数据查询与分析                           │
│    (Hive, Impala, Presto, Pig)                   │
├─────────────────────────────────────────────────┤
│           数据计算引擎                             │
│    (MapReduce, Spark, Tez, Flink)                │
├─────────────────────────────────────────────────┤
│           资源管理层                               │
│              YARN                                │
├─────────────────────────────────────────────────┤
│           数据采集与传输                           │
│    (Flume, Sqoop, Kafka, NiFi)                   │
├─────────────────────────────────────────────────┤
│           数据存储层                               │
│       HDFS / HBase / Kudu                        │
├─────────────────────────────────────────────────┤
│           协调与管理                               │
│    (Zookeeper, Ambari, Oozie)                    │
└─────────────────────────────────────────────────┘

2.5 Hadoop架构变迁

2.5.1 Hadoop 1.x 架构
复制代码
Hadoop 1.x
┌───────────────────────────────┐
│         MapReduce v1          │
│  ┌──────────┬──────────────┐  │
│  │JobTracker│ TaskTracker  │  │  ← JobTracker: 既管资源又管任务调度
│  │(Master)  │ (Slave×N)    │  │     TaskTracker: 执行Map/Reduce任务
│  └──────────┴──────────────┘  │
├───────────────────────────────┤
│            HDFS v1            │
│  ┌──────────┬──────────────┐  │
│  │ NameNode │  DataNode×N  │  │  ← 单NameNode,存在单点故障
│  │ (Master) │  (Slave)     │  │
│  └──────────┴──────────────┘  │
└───────────────────────────────┘

特点:

  • JobTracker负责资源管理和作业调度,负担过重。
  • 只支持MapReduce一种计算模型。
  • NameNode单点故障,可靠性不足。
  • 最大支持约4000个节点。
2.5.2 Hadoop 2.x 架构(重大升级)
复制代码
Hadoop 2.x
┌───────────────────────────────────────────┐
│                  YARN                      │
│  ┌─────────────────┬──────────────────┐   │
│  │ResourceManager  │  NodeManager×N   │   │  ← 资源管理与计算解耦
│  │  (Active/       │  (每个节点一个)    │   │
│  │   Standby HA)   │                  │   │
│  └─────────────────┴──────────────────┘   │
│        ↕ 可运行多种计算框架                   │
│  MapReduce / Spark / Tez / Flink / ...    │
├───────────────────────────────────────────┤
│                 HDFS v2                    │
│  ┌─────────────────┬──────────────────┐   │
│  │NameNode         │  DataNode×N      │   │  ← HA: Active/Standby NameNode
│  │(Active/Standby) │                  │   │     Federation: 支持多命名空间
│  │+ JournalNode    │                  │   │
│  └─────────────────┴──────────────────┘   │
└───────────────────────────────────────────┘

关键改进:

  • YARN(Yet Another Resource Negotiator): 将资源管理从MapReduce中剥离,成为独立的资源管理层。
  • HDFS HA: 引入Active/Standby NameNode + JournalNode,消除单点故障。
  • HDFS Federation: 支持多个独立的NameNode管理不同的命名空间,扩展性增强。
  • 支持多种计算框架: MapReduce不再是唯一选择,Spark、Tez等可共享集群资源。
2.5.3 Hadoop 3.x 架构(最新版本)

关键新特性:

特性 说明
Erasure Coding(纠删码) 替代3副本机制,将存储开销从200%降至约50%,同时保持同等容错能力
YARN Timeline Service v2 提升YARN应用历史数据的可扩展性和读写性能
多NameNode支持 HDFS Federation支持超过2个Standby NameNode,进一步提升可用性
Intra-DataNode Balancer 支持DataNode内部磁盘间的数据均衡
支持Java 8+ 不再支持Java 7,充分利用新版本语言特性
Docker容器支持 YARN支持在Docker容器中运行任务
HDFS Router-based Federation 基于Router的联邦方案,替代客户端挂载表方案
Opportunistic Containers 抢占式容器调度,提升集群资源利用率
2.5.4 架构变迁总结
复制代码
Hadoop 1.x ──→ Hadoop 2.x ──→ Hadoop 3.x
                                       │
  关键变化:                             │
  1.x → 2.x:                            │
  · MapReduce拆分 → YARN + MapReduce    │
  · 单NameNode → HA NameNode            │
  · 单计算框架 → 多计算框架               │
                                       │
  2.x → 3.x:                            │
  · 3副本 → Erasure Coding              │
  · 2个NameNode → 多NameNode             │
  · 更强的容器化支持                      │
  · 性能优化与资源利用提升                │

三、本章小结

核心知识点回顾

知识模块 核心要点
大数据定义 5V特征:Volume、Velocity、Variety、Value、Veracity
数据类型 结构化、半结构化、非结构化三类,非结构化占比最大
研究意义 商业价值、科学研究、社会治理、决策支持、技术推动
应用场景 医疗(精准医疗)、金融(风控)、零售(推荐系统)
Hadoop起源 Google的GFS+MapReduce论文 → Nutch → Hadoop(Doug Cutting创建)
Hadoop优点 高可靠、高扩展、高效、高容错、低成本、生态成熟
Hadoop缺点 高延迟、不适合小文件、不支持随机修改、NameNode单点(1.x)
生态体系 HDFS+YARN+MapReduce为核心,Hive/HBase/Spark/Kafka等为外围组件
架构变迁 1.x(单NameNode+JobTracker) → 2.x(HA+YARN) → 3.x(Erasure Coding+多NN)

关键概念对比

对比项 Hadoop 1.x Hadoop 2.x Hadoop 3.x
NameNode 单点 HA(Active/Standby) 多Standby
资源管理 JobTracker YARN YARN增强
计算框架 仅MapReduce 多框架(MR/Spark/Tez) 多框架+容器化
数据冗余 3副本 3副本 3副本+Erasure Coding
存储效率 3倍存储开销 3倍存储开销 约1.5倍存储开销

本章学习目标总结: 理解大数据的基本概念、特征和应用价值;掌握Hadoop的诞生背景、核心优缺点、生态系统全景以及三代架构的关键演进,为后续深入学习HDFS、MapReduce和YARN打下坚实基础。

相关推荐
weixin_408318041 小时前
2026年医疗直播行业趋势报告:技术方向、监管变化与市场格局
java·大数据·人工智能
JdSnE27zv1 小时前
EF Code First学习笔记:数据库创建
数据库·笔记·学习
ACP广源盛139246256731 小时前
GSV2231 三屏显示扩展芯片@ACP#RTX Spark AI 终端多屏协作专属解决方案
大数据·人工智能·分布式·信息可视化·spark·电脑·音视频
xian_wwq1 小时前
【学习笔记】「大模型安全:攻击面演化史」第 06 篇-红队方法论
笔记·学习·ai安全
wu_ye_m1 小时前
学习c语言第34天 用函数每次输出+1,链式访问,int和void
c语言·学习·算法
2501_933670791 小时前
高中物理成绩优异,适合报考大数据哪个细分专业
大数据
MartinYeung51 小时前
[论文学习]LLM 遗忘机制对真实世界扰动资料的稳健性研究
学习
无忧智库1 小时前
破局“数据孤岛”与“面子工程”:万字深度解构新型智慧城市“云数智”融合的底层逻辑与实战路径(PPT)
大数据·人工智能·智慧城市
凉、介1 小时前
深入理解 ARMv8-A|Application Binary Interface (ABI)
c语言·笔记·学习·嵌入式·arm