三、Hadoop1.X及其组件的深度剖析
作者:IvanCodes
日期:2025年5月7日
专栏:Hadoop教程
一、Hadoop 1.X 概述
(一)概念
Hadoop 是 Apache 开发的分布式系统基础架构,用 Java 编写,为集群处理大型数据集提供编程模型,是海量数据存储与计算的开源框架。狭义指Hadoop软件,广义代表大数据生态。Hadoop 1.x 含两大核心:MapReduce 和 HDFS。HDFS 负责分布式存储,MapReduce 负责数据计算。
(二)特点
- 可扩展性:能处理PB级数据,通过增减节点灵活伸缩。
- 高容错性:数据副本机制,部分节点故障不影响系统可用性。
- 成本效益:开源,运行于普通硬件,降低软硬件成本。
- 高效性:MapReduce并行处理,计算向数据移动,减少网络开销。
- 灵活性:支持多种数据格式(结构化、半结构化、非结构化)。
- 可移植性:基于Java,可部署于多平台(本地、云)。
- 社区支持:庞大活跃的开源社区,资源丰富。
- 生态丰富:围绕Hadoop有众多工具(Hive, Pig, HBase, Spark等)。
(三)工作原理
Hadoop 1.x 采用主从架构。核心进程包括:NameNode (HDFS主)、DataNode (HDFS从)、JobTracker (资源管理与作业调度)、TaskTracker (执行任务)。用户提交作业后,JobTracker 调度并将任务分配给TaskTracker。数据存储于HDFS,NameNode管理元数据,DataNode存储实际数据块。
(四)发展历史
- 起源:源于Nutch搜索引擎项目扩展性需求。受Google的GFS和MapReduce论文启发,Nutch开发者实现了HDFS和MapReduce,后剥离成Hadoop。
- 发展:2006年Apache Hadoop项目启动,雅虎大力支持。 2008年成Apache顶级项目,Cloudera成立推动商业化。后续生态日渐繁荣,众多公司开始应用。
二、Hadoop 1.X 核心组件
(一)HDFS
1. 概念
HDFS (Hadoop分布式文件系统)是Hadoop数据存储的基础。它高度容错,运行于廉价硬件,通过流式数据访问支持高吞吐量,适合大型数据集。
2. 特点
- 大文件存储:适合TB、PB级大文件。
- 分块存储:大文件切块(默认64M),多副本(默认3个)存不同机器,提高读写效率和容错性。
- 流式访问:“一次写入,多次读取”,不支持文件随机修改,仅支持追加。
- 廉价硬件:可在普通PC搭建集群。
- 高容错:副本机制确保节点故障时数据不丢失。
3. 工作原理
HDFS采用Master-Slave架构,含一个NameNode(主)和多个DataNode(从)。
- NameNode:管理文件系统命名空间(元数据:文件名、目录、块位置等),控制客户端访问。元数据存内存并持久化到磁盘(fsimage, edits log)。
- DataNode:实际存储文件数据块及校验和。向NameNode注册并周期性发送心跳和块报告。
- Secondary Namenode:辅助NameNode,定期合并fsimage和edits log,减轻NameNode压力,可能减少宕机时数据丢失。
4. 发展历史
HDFS 的设计思想 深受 Google 的分布式文件系统 GFS 的启发。如前所述,Nutch 项目的核心开发者 Doug Cutting 等人借鉴 GFS 的理念实现了 HDFS,并将其作为 Hadoop 不可或缺的一部分。在 Hadoop 的整个发展过程中,HDFS 也经历了持续的改进和优化,以不断提高其性能、可靠性和可扩展性。
(二)MapReduce
1. 概念
MapReduce是分布式计算框架,第一代离线数据计算引擎,处理TB、PB级数据。核心思想是计算分Map和Reduce两阶段。
2. 特点
- 分而治之:Map阶段并行局部处理,Reduce阶段并行全局汇总。
- 移动计算:计算程序移至数据节点,减少网络I/O。
3. 工作原理
- 输入切片:文件逻辑切片(InputSplit),每Split一Map Task。
- Map阶段:Map Task处理输入数据,输出中间键值对。
- Shuffle阶段:Map中间结果 复制、排序、分组到Reduce Task。
- Reduce阶段:Reduce Task汇总相同key的中间值,输出最终结果。
4. 发展历史
MapReduce 的思想根源于 Google 在 2004年发表的著名论文《MapReduce: Simplified Data Processing on Large Clusters》。在 Hadoop 1.x 版本中,MapReduce 不仅承担了分布式数据计算的核心角色,其内部的 JobTracker 组件还同时负责了集群的资源管理和作业调度。这种设计使得 MapReduce 框架显得比较臃肿,并且限制了 Hadoop 集群只能运行 MapReduce 类型的任务。从 Hadoop 2.x 版本开始,官方对 MapReduce 的功能进行了拆分,引入了独立的资源管理框架 YARN。此后,MapReduce (通常称为 MapReduce on YARN 或 MRv2) 仅专注于其作为分布式数据计算引擎的核心职责。
三、Hadoop 1.X 组件关联分析
(一)组件关联图说明
(二)协同工作机制
HDFS和MapReduce在Hadoop1.X中紧密协作。
HDFS为MapReduce提供数据存储。NameNode提供元数据,DataNode存储数据块。MapReduce的Map Task从DataNode读取数据。
MapReduce利用HDFS数据进行计算。Map Task局部处理,Reduce Task全局汇总。JobTracker负责资源管理和作业调度,将任务分配给TaskTracker,考虑数据本地性。
例如,日志分析:日志存HDFS。MapReduce作业启动,JobTracker将Map Task分配到数据节点。Map Task局部分析。Shuffle后,Reduce Task汇总,结果写回HDFS。
四、Hadoop 1.X 与其他版本的对比
Hadoop 1.x vs Hadoop 2.x
- YARN引入:最核心区别。Hadoop 2.x引入YARN,分离资源管理与计算,支持多种计算框架(Spark等),不再局限于MapReduce。
- 存储与容错:Hadoop 2.x支持纠删码,比1.x的3副本方案更节省存储。
- 单点故障:Hadoop 1.x的NameNode和JobTracker存在单点故障。Hadoop 2.x引入HA机制解决此问题,提高集群可靠性。
相关文章:

三、Hadoop1.X及其组件的深度剖析
作者:IvanCodes 日期:2025年5月7日 专栏:Hadoop教程 一、Hadoop 1.X 概述 (一)概念 Hadoop 是 Apache 开发的分布式系统基础架构,用 Java 编写,为集群处理大型数据集提供编程模型,…...
MySQL(5)如何创建数据库和表?
在 MySQL 中创建数据库和表是进行数据存储和管理的基础操作。以下是详细的步骤和示例代码,涵盖从连接 MySQL、创建数据库、创建表到插入数据的全过程。 步骤一:连接 MySQL 服务器 首先,我们需要连接到 MySQL 服务器,可以使用命令…...
LeetCode 热题 100 131. 分割回文串
LeetCode 热题 100 | 131. 分割回文串 大家好,今天我们来解决一道经典的回溯算法问题——分割回文串。这道题在 LeetCode 上被标记为中等难度,要求将一个字符串 s 分割成若干个子串,使得每个子串都是回文串,并返回所有可能的分割…...

PDF2zh插件在zotero中安装并使用
1、首先根据PDF2zh说明文档,安装PDF2zh https://github.com/guaguastandup/zotero-pdf2zh/tree/v2.4.0 我没有使用conda,直接使用pip安装pdf2zh (Python版本要求3.10 < version <3.12) pip install pdf2zh1.9.6 flask pypd…...

springboot3+vue3融合项目实战-大事件文章管理系统-更新用户密码
大致分为这三步 首先在usercontroller中增加updatePwd方法 PatchMapping ("/updatePwd")public Result updatePwd(RequestBody Map<String,String> params){//1.校验参数String oldPwd params.get("old_pwd");String newPwd params.get("n…...
从颜料混色到网络安全:DH算法的跨界智慧
一、颜料混色的秘密 想象一下,你和朋友各自有一罐私密的颜料,但你们想共同调出一种只有彼此知道的新颜色,而旁观者即使看到你们的操作也无法复现。奇怪的是,你们全程没有直接交换颜料,却能达成共识——这就是**迪菲-赫…...

C++GO语言socket套接字
目录 01 06-socket-client-server通信过程分析 02 07-socket-server-单次处理 03 08-socket-client 01 09-socket-server-多连接建立 02 10-socket-client多次发送数据 01 -socket-client-server通信过程分析 ### - Server Demo接收一个链接,而且只能发送一次数…...

WebSocket:实时通信的新时代
在现代Web应用中,实时通信变得越来越重要。传统的HTTP协议虽然能够满足基本的请求-响应模式,但在需要频繁更新数据的场景下,其效率和性能显得捉襟见肘。WebSocket协议应运而生,它提供了一种在单个TCP连接上进行全双工通信的机制&a…...
(四)YOLO_World-SAM-GraspNet的mujoco抓取仿真(操作记录)
一、创建虚拟环境 这里直接克隆之前项目的环境 (二)Graspnet在mujoco的仿真复现(操作记录)_graspnet仿真-CSDN博客 conda create -n graspnet --clone mujoco_graspnet conda activate graspnet 二、安装额外的环境包 pip in…...

IT/OT 融合架构下的工业控制系统安全攻防实战研究
1. 引言 随着工业 4.0 和智能制造的浪潮席卷全球,信息技术 (IT) 与运营技术 (OT) 的融合已成为不可逆转的趋势。这种融合旨在通过实时数据交换和分析,打破传统的信息孤岛,显著提升生产效率、优化决策、降低运营成本并增强市场竞争力。IT 系统…...

基于Qt的app开发第六天
写在前面 博主是一个大一下的计科生,现在正在做C面向对象程序设计的课程设计,具体功能可以看本专栏的第一篇博客。 目前的进度是:配好MySQL驱动->设计完界面->实现各个界面的切换 这一篇博主要初步实现待办板块的功能,即新建…...

npm create vite@latest my-vue-app 解读
背景发荧光的样式。 filter属性的学习:filter - CSS:层叠样式表 | MDN 复习一下em 组件的调用: 是msg让“ViteVue”显示出来的!! a标签的targte属性: 组件之间怎么传值的: ,没看懂code标签怎么…...

【SpringCloud GateWay】Connection prematurely closed BEFORE response 报错分析与解决方案
一、背景 今天业务方调用我们的网关服务报错: Connection prematurely closed BEFORE response二、原因分析 三、解决方案 第一步: 增加 SCG 服务的JVM启动参数,调整连接获取策略。 将连接池获取策略由默认的 FIFO(先进先出)变更为 LIFO(…...
ABP vNext 集成高性能、高可靠 MQTT 服务器实战
🚀 ABP vNext 集成高性能、高可靠 MQTT 服务器实战 🔧 本文将从实战出发,带你一步步在 ABP vNext 框架中集成 MQTT 服务,构建一个高性能、高可靠的物联网通信平台。适合 IoT 系统、智能硬件平台和实时监控场景。 🛠️ …...

PD快充诱骗协议芯片XSP04D与主板共用一个Type-C和电脑传输数据
随着智能电子产品的广泛应用,快充方案越来越受到重视,且迭代次数也更加频繁。在一些使用频率较高、耗电较大的电子产品中,快充方案也成为了大多数人的追求,它能很大程度上缩短充电的时间,例如XSP04D这款快充诱骗协议方…...

goland无法debug
goland无法使用debug,修复_goland无法debug-CSDN博客...

ECLIC中断流程及实际应用 —— RISC-V中断机制(二)
在长期的嵌入式开发实践中,对中断机制的理解始终停留在表面层次,特别当开发者长期局限于纯软件抽象层面时,对中断机制的理解极易陷入"知其然而不知其所以然"的困境,这种认知的局限更为明显;随着工作需要不断…...

【网络分析工具】网络工具wireshark、TCPdump、iperf使用详解
这里写目录标题 1. wireshark1.1. 过滤包1.2. 常见分析 2. tcpdump3. iperf 1. wireshark **ip.dst eq 10.0.0.21** 是用于网络流量分析工具(例如 Wireshark 或 tcpdump)的过滤器表达式。 它的作用是筛选出所有目标IP地址为 10.0.0.21 的数据包 IP.add…...

debian中笔记本的省电选择auto-cpufreq
在reddit中,看评论区出现这个软件,于是打算尝试一下,应该能对不使用电源时笔记本的省电起到一定的作用。 https://github.com/AdnanHodzic/auto-cpufreq?tabreadme-ov-file#why-do-i-need-auto-cpufreq 作用 One of the problems with Linux…...

力扣热题100之环形链表 II
题目 给定一个链表的头节点 head ,返回链表开始入环的第一个节点。 如果链表无环,则返回 null。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使…...

【记录】HunyuanVideo 文生视频工作流
HunyuanVideo 文生视频工作流指南 概述 本指南详细介绍如何在ComfyUI中使用腾讯混元HunyuanVideo模型进行文本到视频生成的全流程操作,包含环境配置、模型安装和工作流使用说明。 参考:https://comfyui-wiki.com/zh/install/install-comfyui/install-c…...

SpringCloud之Ribbon基础认识-服务负载均衡
0、Ribbon基本认识 Spring Cloud Ribbon 是基于 Netflix Ribbon 实现的一套客户端 负载均衡的工具。 Ribbon 主要功能是提供客户端负载均衡算法和服务调用 Ribbon 客户端组件提供一系列完善的配置项如连接超时,重试等。 Ribbon 会基于某种规则(如简单…...
[Java实战]Spring Boot 静态资源配置(十三)
[Java实战]Spring Boot 静态资源配置(十三) 引言 静态资源(如 HTML、CSS、JavaScript、图片等)是 Web 应用的基石。Spring Boot 通过自动化配置简化了静态资源管理,但面对复杂场景(如多模块项目、CDN 集成…...

重生之我在2024学Fine-tuning
一、Fine-tuning(微调)概述 Fine-tuning(微调)是机器学习和深度学习中的一个重要概念,特别是在预训练模型的应用上。它指的是在模型已经通过大量数据训练得到一个通用的预训练模型后,再针对特定的任务或数据…...

Selenium Web自动化测试学习笔记(一)
自动化测试 技术手段模拟人工,执行重复性任务,准确率100%,高于人工 selenium 可通过浏览器驱动控制浏览器,通过元素定位模拟人工,实现web自动化,没有焦点(把浏览器放在最小化依然可以&#x…...

2025年5月15日前 免费考试了! Oracle AI 矢量搜索专业认证
2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业认证 立刻预约吧 文章目录 2025年5月5日前 免费考试了! Oracle AI 矢量搜索专业认证立刻预约吧🔍 探索 AI 向量搜索的强大功能!🎯 学习路径目标Ὦ…...
服务器不备案有影响吗
在当今数字化的时代,服务器成为了众多企业和个人开展业务、展示自我的重要工具。然而,有一个问题常常被忽视,那就是服务器不备案到底有没有影响? 答案是肯定的!服务器不备案,影响可不小。据相关数据显示&a…...

EasyRTC嵌入式音视频通话SDK驱动智能硬件音视频应用新发展
一、引言 在数字化浪潮下,智能硬件蓬勃发展,从智能家居到工业物联网,深刻改变人们的生活与工作。音视频通讯作为智能硬件交互与协同的核心,重要性不言而喻。但嵌入式设备硬件资源受限,传统音视频方案集成困难。EasyRT…...
力扣-21.合并两个有序链表
题目描述 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 class Solution { public:ListNode *mergeTwoLists(ListNode *list1, ListNode *list2) {ListNode *l new ListNode(-1);ListNode *p l;while (list1 &&…...
多线服务器具有什么优势
在当今数字化飞速发展的时代,多线服务器宛如一位低调的幕后英雄,默默为我们的网络世界提供着强大的支持。那么,多线服务器到底具有哪些令人瞩目的优势呢 首先,多线服务器的最大优势之一就是网络访问的高速与稳定。想象一下&#x…...