大数据基础原理
http://yuedu.baidu.com/ebook/d128cf8e33687e21ae45a935?pn=1&click_type=10010002
2.3 Hadoop原理
2.3.1 Hadoop HDFS原理
HDFS是一个高度容错性的系统,适合部署在廉价的机器上。HDFS能提供高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS放宽了一部分POSIX约束,来实现流式读取文件系统数据的目的。
HDFS采用master/slave架构。
一个HDFS集群是由一个NameNode和一定数目的DataNodes组成。
NameNode是一个中心服务器,负责管理文件系统的名字空间(namespace)以及客户端对文件的访问。
DataNode一般是一个节点一个,负责管理它所在节点上的存储。
HDFS数据上传原理可以参考图2-5对照理解,数据上传过程如下所示:
1)Client端发送一个添加文件到HDFS的请求给NameNode;
2)NameNode告诉Client端如何来分发数据块以及分发的位置;
3)Client端把数据分为块(block),然后把这些块分发到DataNode中;
4)DataNode在NameNode的指导下复制这些块,保持冗余。
2.3.2 Hadoop MapReduce原理
适合用MapReduce来处理的数据集(或任务),需要满足:待处理的数据集可以分解成许多小的数据集,而且每一个小数据集都可以完全并行地进行处理。
Hadoop MapReduce极大地方便了编程人员在不会分布式并行编程的情况下,将自己的程序运行在分布式系统上。
一个MapReduce作业(job)通常会把输入的数据集切分为若干独立的数据块,由map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序,然后把结果输入给reduce任务。通常,作业的输入和输出都会被存储在文件系统中。整个框架负责任务的调度和监控,以及重新执行已经失败的任务。
MapReduce框架包括
一个主节点(ResourceManager)、
多个子节点(运行NodeManager)
MRAppMaster(每个任务一个)
共同组成。
Hadoop的job client提交作业(jar包/可执行程序等)和配置信息给ResourceManager,后者负责分发这些软件和配置信息给slave、调度任务且监控它们的执行,同时提供状态和诊断信息给job-client。
MapReduce框架的流程如图2-6所示。
针对上面的流程可以分为两个阶段来描述。
(1)Map阶段
1)InputFormat根据输入文件产生键值对,并传送到Mapper类的map函数中;
2)map输出键值对到一个没有排序的缓冲内存中;
3)当缓冲内存达到给定值或者map任务完成,在缓冲内存中的键值对就会被排序,然后输出到磁盘中的溢出文件;
4)如果有多个溢出文件,那么就会整合这些文件到一个文件中,且是排序的;
5)这些排序过的、在溢出文件中的键值对会等待Reducer的获取。
(2)Reduce阶段
1 2 3 4 5 6 7 | 1)Reducer获取Mapper的记录,然后产生另外的键值对,最后输出到HDFS中; 2)shuffle:相同的key被传送到同一个的Reducer中; 3)当有一个Mapper完成后,Reducer就开始获取相关数据,所有的溢出文件会被排序到一个内存缓冲区中; 4)当内存缓冲区满了后,就会产生溢出文件到本地磁盘; 5)当Reducer所有相关的数据都传输完成后,所有溢出文件就会被整合和排序; 6)Reducer中的reduce方法针对每个key调用一次; 7)Reducer的输出到HDFS。 |
2.3.3 Hadoop YARN原理
MapReduce的最严重的限制主要关系到可伸缩性、资源利用和对与MapReduce不同的工作负载的支持。
全新的Hadoop架构——YARN(也称为MRv2)。下一代Hadoop计算平台,主要包括ResourceManager、ApplicationMaster、NodeManager
1 2 3 | ResourceManager用来代替集群管理器, ApplicationMaster代替一个专用且短暂的JobTracker, NodeManager代替TaskTracker。 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App
· 张高兴的大模型开发实战:(一)使用 Selenium 进行网页爬虫