Hadoop集群(HDFS集群、YARN集群、MapReduce​计算框架)

news2024/12/25 19:54:34

一、 简介

Hadoop主要在分布式环境下集群机器,获取海量数据的处理能力,实现分布式集群下的大数据存储和计算。

其中三大核心组件HDFS存储分布式文件存储、YARN分布式资源管理、MapReduce分布式计算。

二、工作原理

2.1 HDFS集群

Web访问地址:http://hadoop1:9870

HDFS由NameNode(主节点)、SecondaryNameNode(辅助节点)、DataNode(从节点)构成,

其中NameNode负责管理整个HDFS集群,SecondaryNameNode辅助NameNode管理元数据,DataNode负责存储实际的数据块(一个block块默认大小128MB)和对数据块的读、写操作。

2.1.1 block数据块

  • 基本存储单位(一般64M)
  • 一个大文件会被拆分成多个block块,然后存储到不通机器上
  • 每块会备份到其他机器上,保证数据安全性,防止数据丢失(默认备份3份)。

2.1.2 NameNode

  • 管理文件系统命名空间和客户端对文件访问
  • 保存文件具体信息(文件信息、文件拆分block块信息、以及block和DataNode的信息)
  • 接收用户请求

2.1.3 DataNode

  • 保存具体的block数据
  • 负责数据的读写操作和复制操作
  • 向NameNode报告当前存储或者修改的数据信息
  • DataNode之间进行相互通信,复制数据块

2.1.4 Secondary NameNode

  • 定时与NameNode进行同步(合并fsimage和edits文件)
  • 当NameNode失效时,需要手工将其设置成主机

2.1.5 文件写入步骤

    1. Client(客户端)请求namenode保存文件。
    2. NameNode接收到客户端请求后, 会校验客户端针对该文件是否有写的权利,文件是否存在,校验通过后告知客户端可以上传。
    3. 接收到可以上传的指令后, 客户端会按照128MB(默认)对文件进行切块。
    4. Client(客户端)再次请求namenode, 第1个Block块的上传位置。
    5. namenode会根据副本机制, 负载均衡, 机架感知原理及网络拓扑图, 返回给客户端存储该Block块的DataNode列表。
        例如: node1, node2, node3;
    6. Client(客户端)会先连接就近的datanode机器, 然后依次和其他的datanode进行连接, 形成传输管道(Pipeline);
    7. 采用数据报包(DataPacket)的形式传输数据, 每个包的大小不超过64KB, 并建立反向应答机制(ACK机制);
    8. 具体的上传动作: node1 -> node2 -> node3,  ACK反向应答机制: node3 => node2 => node1。
    9. 重复上述的步骤, 直至第1个Block块上传完毕。
   10. 第一个Bloc上传完毕客户端(Client)重新请求第二个Block的上传位置, 重复上述动作, 直至所有的Block块传输完毕。

至此, HDFS写数据流程结束。

2.1.6 文件读取步骤

 1. Client(客户端)请求namenode, 读取文件。
 2. NameNode校验该客户端是否有读权限, 及该文件是否存在, 校验成功后, 会返回给客户端该文件的块信息。
        例如:
            block1: node1, node2, node5
            block2: node3, node6, node8
            block3: node2, node5, node6     这些地址都是鲜活的;
            ......
    3. Client(客户端)会连接上述的机器(节点), 并行的从中读取块的数据。
    4. Client(客户端)读取完毕后, 会循环NameNode获取剩下所有的(或者部分的块信息), 并行读取, 直至所有数据读取完毕。
    5. Client(客户端)根据Block块编号, 把多个Block块数据合并成最终文件即可。

2.1.7 数据备份

  1. NameNode负责管理block块的复制,它周期性地接收集群中所有DataNode的心跳数据包和Blockreport。心跳包表示DataNode正常工作,Blockreport描述了该DataNode上所有的block组成的列表。
  2. HDFS采用一种称为rack-aware的策略来决定备份数据的存放。通过一个称为Rack Awareness的过程,NameNode决定每个DataNode所属rack id。缺省情况下,一个block块会有三个备份,一个在NameNode指定的DataNode上,一个在指定DataNode非同一rack的DataNode上,一个在指定DataNode同一rack的DataNode上。这种策略综合考虑了同一rack失效、以及不同rack之间数据复制性能问题。
  3. 为了降低整体的带宽消耗和读取延时,HDFS会尽量读取最近的副本。如果在同一个rack上有一个副本,那么就读该副本。如果一个HDFS集群跨越多个数据中心,那么将首先尝试读本地数据中心的副本。

2.1.8 HDFS工作原理

1、NameNode初始化时会产生一个edits文件和一个fsimage文件。
2、随着edits文件不断增大,当达到设定的阀值时(1个小时或写入100万次),SecondaryNameNode把edits文件和fsImage文件复制到本地,同时NameNode会产生一个新的edits文件替换掉旧的edits文件,这样以保证数据不会出现冗余。
3、SecondaryNameNode拿到这两个文件后,会在内存中进行合并成一个fsImage.ckpt的文件(这个过程称为checkpoint),合并完成后,再将fsImage.ckpt文件推送给NameNode。
4、NameNode文件拿到fsImage.ckpt文件后,会将旧的fsimage文件替换掉(并不会立刻替换,而是达到一定阈值后被替换掉),并且改名成fsimage文件。

通过以上几步则完成了edits和fsimage文件的合并,依此不断循环,从而到达保证元数据的正确性。在紧急情况下, SecondaryNameNode可以用来恢复namenode的元数据。

2.2 YARN集群

Web访问地址:http://hadoop1:8088

YARN是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作平台,而Mapreduce等运算程序相当于运行在操作系统之上的应运程序。

YARN组成由ResourceManager、AppMaster进程、NodeManager组成

2.2.1 ResourceManager(主节点)

ResourceManager是master上的进程,负责整个分布式系统的资源管理和调度。会处理来自client端的请求(包括提交作业/杀死作业);启动/监控Application Master;监控NodeManager的情况,比如可能挂掉的NodeManager。

2.2.2 NodeManager(从节点)

负责接收并执行ResourceManager分配的计算任务。相对应的,NodeManager时处在slave节点上的进程,他只负责当前slave节点的资源管理和调度,以及task的运行。他会定期向ResourceManager回报资源/Container的情况(heartbeat);接受来自ResourceManager对于Container的启停命令。

2.2.3 AppMaster进程

每一个提交到集群的作业都会有一个与之对应的Application Master来负责应用程序的管理。他负责进行数据切分;为当前应用程序向ResourceManager去申请资源(也就是Container),并分配给具体的任务;与NodeManager通信,用来启停具体的任务,任务运行在Container中;而任务的监控和容错也是由Application Master来负责的。

        1个计算任务=1个AppMaster进程

        由该AppMaster进程来监控和管理该计算任务

2.2.4 Container

它包含了Application Master向ResourceManager申请的计算资源,比如说CPU/内存的大小,以及任务运行所需的环境变量和队任务运行情况的描述。

2.3  MapReduce工作原理

MapReduce是一种分布式计算框架。MR的执行流程:

  1. MR任务分为MapTask任务 ReduceTask任务两部分, 其中MapTask任务负责:分; ReduceTask任务负责:合。

  •  1个切片(默认128MB) = 1个MapTask任务 = 1个分好区, 排好序, 规好约的磁盘文件;

    2. 先对文件进行切片, 每个切片对应1个MapTask任务, 任务内部会逐行读取数据, 交由MapTask任务来处理。
    3. MapTask对数据进行分区,排序,规约处理后, 会将数据放到1个 环形缓冲区中(默认大小: 100MB, 溢写比: 0.8), 达到80MB就会触发溢写线程。
    4. 溢写线程会将环形缓冲区中的结果写到磁盘的小文件中, 当MapTask任务结束的时候, 会对所有的小文件(10个/次)合并, 形成1个大的磁盘文件。
    5. ReduceTask任务会开启拷贝线程, 从上述的各个结果文件中, 拉取属于自己分区的数据, 进行分组、统计、聚合。
    6. ReduceTask将处理后的结果, 写到结果文件中;

  • 1个分区 = 1个ReduceTask任务 = 1个结果文件;

2.4  三者之间的关系

 客户端Client提交任务到资源管理器(ResourceManager),资源管理器接收到任务之后去NodeManager节点开启任务(ApplicationMaster), ApplicationMaster向ResourceManager申请资源, 若有资源ApplicationMaster负责开启任务即MapTask。开始干活了即分析任务,每个map独立工作,各自负责检索各自对应的DataNode,将结果记录到HDFS, DataNode负责存储,NameNode负责记录,2nn负责备份部分数据。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2265442.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文本的AIGC率检测原理

背景 你可能在学生群里或者视频中看过这样的消息:“我们学校要求论文AI率不能超过30%!”、“你们学校查AI率吗?”之类的,这些消息到底是真是假? 随着人工智能的快速发展和广泛应用,不论是工作中还是学生学…

PODS:2024-12-21由麻省理工学院 和 OpenAI联合创建一个专门为个性化对象识别任务设计的数据集.

2024-12-21,由MIT和OpenAI联合创建的个性化视觉数据集,为细粒度和数据稀缺的个性化视觉任务提供了新的解决方案,推动了个性化模型的发展,具有重要的研究和应用价值。 一、研究背景: 在计算机视觉领域,现代…

OpenFeign快速入门 示例:黑马商城

使用起因 之前我们利用了Nacos实现了服务的治理,利用RestTemplate实现了服务的远程调用。这样一来购物车虽然通过远程调用实现了调用商品服务的方法,但是远程调用的代码太复杂了: 解决方法 并且这种调用方式比较复杂,一会儿远程调用,一会儿本地调用。 因…

YOLOv11模型改进-模块-引入多尺度大核注意力Multi-scale Large Kernel Attention

MLKA 的提出源于图像超分辨率任务的挑战性,该任务需重建低质量图像缺失的高频信息,但因 LR 与 HR 图像对应关系复杂,寻找像素相关性困难。此前模型扩展容量的方法增加了训练负担和数据收集成本,而采用的注意力机制无法同时获取局部…

学习思考:一日三问(学习篇)之匹配VLAN

学习思考:一日三问(学习篇)之匹配VLAN 一、学了什么(是什么)1.1 理解LAN与"V"的LAN1.2 理解"V"的LAN怎么还原成LAN1.3 理解二层交换机眼中的"V"的LAN 二、为何会产生需求(为…

国际网络专线怎么申请开通?

随着国内企业在国际市场中的活跃度逐年提升,国际网络专线逐渐成为保障企业高效运营的重要基础设施。稳定且高效的网络不仅能够提升工作效率,还能为海外业务的顺利开展提供可靠保障。那么,国际网络专线如何开通?其申请流程是怎样的…

Ubuntu20.04安装openMVS<成功>.colmap<成功>和openMVG<失败(已成功)>

一、安装openMVS 参考官方文档 sudo apt-get -y install git mercurial cmake libpng-dev libjpeg-dev libtiff-dev libglu1-mesa-dev eigen git clone https://gitlab.com/libeigen/eigen --branch 3.4 mkdir eigen_build cd eigen_build &&\cmake . ../eigen -…

【magic-dash】01:magic-dash创建单页面应用及二次开发

文章目录 一、magic-dash是什么1.1 安装1.2 使用1.2.1 查看内置项目模板1.2.2 生成指定项目模板1.2.3 查看当前magic-dash版本1.2.4 查看命令说明1.2.5 内置模板列表二、创建虚拟环境并安装magic-dash三、magic-dash单页工具应用开发3.1 创建单页面项目3.1.1 使用命令行创建单页…

重温设计模式--原型模式

文章目录 原型模式定义原型模式UML图优点缺点使用场景C 代码示例深拷贝、浅拷贝 原型模式定义 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象; 核心中的核心就是 克隆clone ,后面讲 原型模式是一种创建型设计模式,它的主要…

Kibana8.17.0在mac上的安装

1、Kibana是什么 Kibana是与elasticsearch配套使用的数据分析与可视化工具,通过Kibana可以轻松与es中存储的数据进行高效的交互,包括数据写入、检索、删除等操作,并可以通过编写部分代码将数据做成各种报表,从而进行非常直观的统…

61.基于SpringBoot + Vue实现的前后端分离-在线动漫信息平台(项目+论文)

项目介绍 随着社会互联网技术的快速发展,每个行业都在努力与现代先进技术接轨,通过科技手段提高自身的优势;对于在线动漫信息平台当然也不能排除在外,随着网络技术的不断成熟,带动了在线动漫信息平台,它彻底…

【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割

数据预处理 通过网盘分享的文件:银行流失预测数据和代码 链接: https://pan.baidu.com/s/1loiB8rMvZArfjJccu4KW6w?pwdpfcs 提取码: pfcs 非数值特征处理 目的:将非数值特征转换为数值型,以便模型能够处理。方法: 地理位置&am…

从零开始使用MaxKB打造本地大语言模型智能问答系统与远程交互

文章目录 前言1. 下载运行Ollama2. 安装大语言模型3. 安装Cpolar工具4. 配置公网地址5. 固定公网地址6. MaxKB 添加Olama7.创建问答应用 前言 目前大语言模型(LLM)已经成为了人工智能领域的一颗璀璨明星,从自然语言处理到智能问答系统&#…

neo4j无法导入csv文件

文章目录 问题解决方案1. 检查Neo4j的neo4j.conf配置文件2. 确保文件路径正确3. 将CSV文件放置到import目录4. 重启Neo4j服务器 问题 neo4j browser中导入csv文件报错无法导入 具体:输入下列语句LOAD CSV WITH HEADERS FROM “file:///D:/KG/relation.csv” AS lin…

WebLogic T3反序列化漏洞(CVE-2018-2628)--vulhub

WebLogic T3反序列化漏洞(CVE-2018-2628) WebLogic在通信过程中使用T3协议传输数据,涉及到了序列化和反序列化操作。 T3协议概述 T3协议是Oracle的私有协议,所以公开的相关资料比较少,这里结合其他师傅的博客简单对T3协议进行一个简要分析…

在瑞芯微RK3588平台上使用RKNN部署YOLOv8Pose模型的C++实战指南

在人工智能和计算机视觉领域,人体姿态估计是一项极具挑战性的任务,它对于理解人类行为、增强人机交互等方面具有重要意义。YOLOv8Pose作为YOLO系列中的新成员,以其高效和准确性在人体姿态估计任务中脱颖而出。本文将详细介绍如何在瑞芯微RK3588平台上,使用RKNN(Rockchip N…

scala借阅图书保存记录(三)

BookDAO package org.app package daoimport models.BookModelimport scala.collection.mutable.ListBuffer//图书,数据操作 class BookDAO {//加载图书,从文件中读入def loadBooks(): ListBuffer[BookModel] {val books new ListBuffer[BookModel]()…

无标记动作捕捉系统如何赋能体育运动分析,推动体育科学发展?

随着技术的不断发展与社会的需要,健康、科学运动成为了大众关注的一个热词。在韩国首尔的中央大学,其生物运动临床康复实验室和运动训练中心就致力于通过生物力学分析来研究与运动相关的伤害,并通过定制科学的训练计划来帮助运动员改进他们的…

Unittest02|TestSuite、TestRunner、HTMLTestRunner、处理excel表数据、邮件接收测试结果

目录 八、测试套件TestSuite和测试运行器TestRunner 1、基本概念 2、创建和使用测试套件 3、 自动发现测试用例、创建测试套件、运行测试 4、生成html的测试报告:HTMLTestRunner 1️⃣导入HTMLTestRunner模块 2️⃣运行测试用例并生成html文件 九、unittest…

[搜广推]王树森推荐系统笔记——曝光过滤 Bloom Filter

曝光过滤 & Bloom Filter 曝光过滤主要在召回阶段做,主要方法是Bloom Filter 曝光过滤问题 -如果用户看过某个物品,则不再把该物品曝光给该用户。 - 原因是重复曝光同一个物品会损害用户体验 - 但长视频通常没有曝光过滤(youtube&…