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 EB1.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 Cutting和Mike Cafarella于2002年发起。2003年和2004年Google先后发表了两篇奠基性论文GFSGoogle File System2003— 分布式文件系统MapReduce2004— 分布式计算框架Doug Cutting受到这两篇论文启发分别实现了对应的开源版本Nutch Distributed File SystemNDFS→ 后演变为HDFSMapReduce的开源实现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独立出来正式命名为HadoopDoug Cutting加入Yahoo!2007年Yahoo!在1000个节点的集群上运行Hadoop2008年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) 高可靠性ReliabilityHDFS通过数据块多副本冗余存储默认3副本保证数据安全。即使某个DataNode节点故障数据仍可从其他副本读取。框架自动处理节点失败进行任务重新调度。(2) 高扩展性Scalability水平扩展Scale-out可通过简单增加节点来扩展集群容量和计算能力。支持从几台到数千台服务器的集群规模。Facebook的Hadoop集群曾超过4000个节点。(3) 高效性EfficiencyMapReduce任务可以并行执行充分利用集群的分布式计算能力。数据本地化Data Locality策略将计算任务调度到数据所在的节点执行减少网络传输开销。(4) 高容错性Fault Tolerance任务失败时自动重新调度到其他节点执行。数据节点故障时自动从其他副本恢复数据。NameNode通过日志EditLog和检查点FsImage机制保证元数据安全。(5) 低成本Cost-effective基于**廉价的商用硬件Commodity Hardware**构建集群无需昂贵的专用服务器。开源免费软件降低了软件许可成本。与传统的关系型数据库扩展方案纵向扩展相比成本优势明显。(6) 生态成熟Ecosystem拥有庞大的生态系统Hive、HBase、Spark、Sqoop、Flume、Kafka、Oozie等。社区活跃文档丰富人才储备充足。支持多种编程语言和计算框架。(7) 支持多种数据格式和计算模型不要求数据预先定义schemaSchema-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任务降低处理效率。解决方案HARHadoop Archive、SequenceFile、CombineFileInputFormat。(3) 不支持多用户写入和随机修改HDFS采用**“一次写入多次读取”Write-Once-Read-Many**的数据模型。文件写入后不支持修改只能追加append。不支持多用户并发写入同一文件。(4) MapReduce编程模型的局限性MapReduce编程相对复杂需要手写Map和Reduce函数。多轮迭代计算如机器学习算法需要多次磁盘I/O效率低下。不适合DAG有向无环图类型的复杂计算。替代方案Spark基于内存计算支持DAG、TezDAG优化引擎。(5) NameNode单点故障问题Hadoop 1.xHadoop 1.x中NameNode是单点SPOF一旦故障整个集群不可用。Hadoop 2.x引入HDFS HAHigh AvailabilityActive/Standby NameNode JournalNode解决此问题。Hadoop 3.x进一步增强了HA能力。(6) 资源管理效率问题Hadoop 1.xHadoop 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编程ImpalaMPP查询引擎基于HDFS的低延迟SQL查询Presto/Trino分布式SQL查询支持跨数据源的交互式查询数据采集与传输组件功能说明Flume日志采集高可用、高可靠的分布式日志收集系统Sqoop数据导入导出在Hadoop与关系型数据库之间传输数据Kafka消息队列高吞吐的分布式消息系统用于实时数据管道NiFi数据流管理可视化的数据流编排和管理工具数据处理与计算组件功能说明Spark内存计算框架比MapReduce快10~100倍支持批处理、流处理、机器学习TezDAG计算框架优化Hive查询性能将多轮MapReduce合并为DAGFlink流批一体计算真正的流处理框架支持事件时间和精确一次语义数据挖掘与机器学习组件功能说明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 │ │ │ │ └─────────────────┴──────────────────┘ │ └───────────────────────────────────────────┘关键改进YARNYet 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的GFSMapReduce论文 → Nutch → HadoopDoug Cutting创建Hadoop优点高可靠、高扩展、高效、高容错、低成本、生态成熟Hadoop缺点高延迟、不适合小文件、不支持随机修改、NameNode单点(1.x)生态体系HDFSYARNMapReduce为核心Hive/HBase/Spark/Kafka等为外围组件架构变迁1.x(单NameNodeJobTracker) → 2.x(HAYARN) → 3.x(Erasure Coding多NN)关键概念对比对比项Hadoop 1.xHadoop 2.xHadoop 3.xNameNode单点HAActive/Standby多Standby资源管理JobTrackerYARNYARN增强计算框架仅MapReduce多框架MR/Spark/Tez多框架容器化数据冗余3副本3副本3副本Erasure Coding存储效率3倍存储开销3倍存储开销约1.5倍存储开销本章学习目标总结理解大数据的基本概念、特征和应用价值掌握Hadoop的诞生背景、核心优缺点、生态系统全景以及三代架构的关键演进为后续深入学习HDFS、MapReduce和YARN打下坚实基础。