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

一、 简介

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.mzph.cn/web/63961.shtml

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

相关文章

施耐德变频器ATV320系列技术优势:创新与安全并重

在工业自动化领域,追求高效、安全与智能已成为不可阻挡的趋势。施耐德变频器ATV320系列凭借其强大的设计标准和全球认证,成为能够帮助企业降低安装成本,提高设备性能的创新解决方案。 【全球认证,品质保障】ATV320 系列秉持施耐德…

Linux挖矿程序排查

一、背景 我们收到一个阿里云安全告警,内容是服务器可能存在挖矿程序。 二、杀死挖矿程序 2.1 找到可疑服务器进程 #1.输入top命令,输入shift P会按照cpu的使用率大小从大到小进行排序,cpu使用率高的就是可疑进程。 top #2.查看运行该进程…

zabbix监控山石系列Hillstone配置模版(适用于zabbix6及以上)

监控项: 触发器: 监控数据:

PE文件结构

PE文件是Windows系统下可执行文件的总称,英文全称 Portable Executable 可移植的可执行文件,常见的有exe、dll、sys、com、ocx 对于学习反(木马、免杀、病毒、外挂、内核),了解PE文件结构是非常有必要且非常非常重要的…

网络安全词云图与技术浅谈

网络安全词云图与技术浅谈 一、网络安全词云图生成 为了直观地展示网络安全领域的关键术语,我们可以通过词云图(Word Cloud)的形式来呈现。词云图是一种数据可视化工具,它通过字体大小和颜色的差异来突出显示文本中出现频率较高…

fpgafor循环语句使用

genvar i;//循环变量名称 generate for(i0;i<4;ii1)begin:tx//自己定义名称 //循环内容 end endgenerate12位的16进制乘以4就是48位位宽的2进制 因为 222*2(2^4)16

修改采购订单BAPI学习研究-BAPI_PO_CHANGE

这里是修改采购订单BAPI&#xff0c;修改订单数量和交货日期的简单应用 文章目录 修改数量代码运行结果 修改交货日期代码运行结果 修改数量 代码 *&---------------------------------------------------------------------* *& Report Z_BAPI_PO_CHANGE *&----…

Linux系统编程深度解析:C语言实战指南

文章一览 前言一、gcc编译系统1.1 文件名后缀1.2 C语言编译过程1.3 gcc命令行选项 二、gdb程序调试工具2.1 启动gdb和查看内部命令2.2 显示源程序和数据2.2.1 显示和搜索源程序2.2.2 查看运行时数据 2.3 改变和显示目录或路径2.4 控制程序的执行2.4.1 设置断点2.4.2 显示断点2.…

安卓蓝牙扫描流程

目录 系统广播 流程图 源码跟踪 系统广播 扫描开启广播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_STARTED "android.bluetooth.adapter.action.DISCOVERY_STARTED";扫描关闭广播&#xff1a;BluetoothAdapter.ACTION_DISCOVERY_FINISHED "android.b…

八股(One Day one)

最近老是看到一些面试的视频&#xff0c;对于视频内部面试所提到的八股文&#xff0c;感觉是知道是什么&#xff0c;但是要说的话&#xff0c;却又不知道该怎么说&#xff08;要不咋称之为八股文呢&#xff09;&#xff0c;所以就想到写一篇八股文总结的博客&#xff0c;以便进…

Rust 在前端基建中的使用

摘要 随着前端技术的不断发展&#xff0c;前端基础设施&#xff08;前端基建&#xff09;的建设已成为提升开发效率、保障产品质量的关键环节。然而&#xff0c;在应对复杂业务场景与高性能需求时&#xff0c;传统的前端技术栈逐渐暴露出诸多不足。近年来&#xff0c;Rust语言…

豆包MarsCode:a替换函数

问题描述 思路分析 在这个问题中&#xff0c;我们的目标是将字符串中的所有小写字母 a 替换为 "%100"。为了实现这一点&#xff0c;我们需要分析问题的核心需求和合理的解决方案。以下是分析和思路的详细步骤&#xff1a; 1. 理解问题 给定一个字符串 s&#xff0…

人脸生成3d模型 Era3D

从单视图图像进行3D重建是计算机视觉和图形学中的一项基本任务&#xff0c;因为它在游戏设计、虚拟现实和机器人技术中具有潜在的应用价值。早期的研究主要依赖于直接在体素上进行3D回归&#xff0c;这往往会导致过于平滑的结果&#xff0c;并且由于3D训练数据的限制&#xff0…

信贷域——互联网金融理论基础

摘要 互联网金融这种新兴的金融业态近几年飞速发展&#xff0c;规模不断扩大&#xff0c;互联网金融在对我国金融体系和经济发展影响中所占的分量越来越重&#xff0c;一定程度上也推动了互联网金融理论的发展。 互联网金融与传统金融都是金融&#xff0c;有着相近的理论基础。…

LightGBM分类算法在医疗数据挖掘中的深度探索与应用创新(上)

一、引言 1.1 医疗数据挖掘的重要性与挑战 在当今数字化医疗时代,医疗数据呈爆炸式增长,这些数据蕴含着丰富的信息,对医疗决策具有极为重要的意义。通过对医疗数据的深入挖掘,可以发现潜在的疾病模式、治疗效果关联以及患者的健康风险因素,从而为精准医疗、个性化治疗方…

STM32串口第一次接收数据时第一个字节丢失的问题

解决方法&#xff1a;开启中断之前&#xff0c;先清除标志位【1】。 串口清除标志位&#xff1a; __HAL_UART_CLEAR_PEFLAG(&huart1); HAL_UART_Receive_IT(&huart1,&RxUart, 1); 定时器清除标志位&#xff1a; __HAL_TIM_CLEAR_FLAG(&htim3,TIM_FLAG_UPDATE);…

深度学习中的残差网络、加权残差连接(WRC)与跨阶段部分连接(CSP)详解

随着深度学习技术的不断发展&#xff0c;神经网络架构变得越来越复杂&#xff0c;而这些复杂网络在训练时常常遇到梯度消失、梯度爆炸以及计算效率低等问题。为了克服这些问题&#xff0c;研究者们提出了多种网络架构&#xff0c;包括 残差网络&#xff08;ResNet&#xff09;、…

Pytorch | 从零构建EfficientNet对CIFAR10进行分类

Pytorch | 从零构建EfficientNet对CIFAR10进行分类 CIFAR10数据集EfficientNet设计理念网络结构性能特点应用领域发展和改进 EfficientNet结构代码详解结构代码代码详解MBConv 类初始化方法前向传播 forward 方法 EfficientNet 类初始化方法前向传播 forward 方法 训练过程和测…

音视频入门基础:MPEG2-TS专题(20)——ES流简介

《T-REC-H.222.0-202106-S!!PDF-E.pdf》第27页对ES进行了定义。ES流是PES packets&#xff08;PES包&#xff09;中编码的视频、编码的音频或其他编码的比特流。一个ES流&#xff08;elementary stream&#xff09;在具有且只有一个stream_id的PES packets序列中携带&#xff1…

天水月亮圈圈:舌尖上的历史与传承

在天水甘谷县&#xff0c;有一种美食如同夜空中的明月&#xff0c;散发着独特的魅力&#xff0c;它就是有着百年历史的月亮圈圈。月亮圈圈原名甘谷酥圈圈&#xff0c;据传&#xff0c;由大像山镇蒋家庄一姓李的厨师创制而成&#xff0c;后经王明玖等厨师的光大传承&#xff0c;…