当前位置: 首页 > news >正文

大数据知识扫盲

MapReudece作业启动和运行机制

MapReduce是一种分布式计算框架,最初由Google开发,用于处理大规模数据集的批处理任务。其核心思想是将数据划分为小的块,然后并行处理这些块,最后将结果合并。以下是MapReduce作业的启动和运行机制:

  1. 作业提交
    • 用户或应用程序通过客户端将MapReduce作业提交到集群上的资源管理器(ResourceManager)。
    • ResourceManager负责调度集群上的资源并为作业分配资源。
  2. 划分数据
    • ResourceManager将输入数据划分为若干个输入分片(splits),每个输入分片通常对应一个Mapper任务。
    • 输入分片通常是文件的一部分,例如HDFS中的块(block)。
  3. Map任务
    • ResourceManager为每个Mapper任务分配计算资源,例如节点(NodeManager)。
    • 每个Mapper任务负责处理一个输入分片,对输入数据进行映射和处理。
    • 用户编写的Map函数被用于将输入数据转换为键-值对,将结果写入中间文件。
  4. 中间数据的分组和排序
    • 所有的Mapper任务的中间数据被收集并按键进行分组和排序,以便将相同键的数据发送到相同的Reducer任务。
    • 这个阶段的输出结果通常被分区并存储在分布式文件系统中,以便提供容错性。
  5. Reduce任务
    • ResourceManager为每个Reducer任务分配计算资源。
    • Reducer任务负责从Mapper的中间数据中获取相关的数据,并将它们合并和处理,生成最终的结果数据。
  6. 结果输出
    • Reduce任务的输出结果通常被写入分布式文件系统,例如HDFS。
    • 作业完成后,用户可以访问和分析这些输出结果。
  7. 作业监控和管理
    • ResourceManager和JobTracker(在Hadoop 1.x中使用)或ApplicationMaster(在Hadoop 2.x及之后版本中使用)负责监控作业的进度,处理故障,重新执行失败的任务,并确保作业成功完成。
  8. 清理资源
    • 作业完成后,集群将释放已分配的资源,以便其他作业可以使用它们。

shuffle 在大数据中的重大作用

  1. 数据重分布:shuffle 通常涉及数据的重新分布,将不同的数据分片(分区)重新组合到不同的任务中,以便进行进一步的处理。这是大数据处理中的关键操作,例如,在 MapReduce 或 Spark 中,map 阶段会生成键值对,然后进行shuffle,以便在 reduce 阶段合并和处理相关数据。
  2. 数据排序:在某些情况下,shuffle 可能需要对数据进行排序,以确保 reduce 阶段能够高效地进行数据处理。这对于需要有序数据的任务非常重要。
  3. 数据合并:shuffle 也涉及数据的合并操作,以便在 reduce 阶段将相同键的数据合并在一起。这有助于减少在 reduce 阶段的数据传输量和计算开销。
  4. 数据传输和网络开销:shuffle 涉及将数据从一个节点传输到另一个节点,这通常需要通过网络传输大量数据。因此,shuffle 操作可能会引入大量的网络开销,特别是在大规模分布式系统中。
  5. 数据局部性:为了减少网络开销,shuffle 操作通常会尝试将数据移到尽可能接近要处理它的节点上。这有助于提高数据局部性,减少网络传输。
  6. 性能优化:shuffle 操作的性能对整个大数据处理作业的性能有重大影响。因此,许多分布式计算框架(如Apache Spark)都致力于优化shuffle操作,以提高整体性能。
  7. 数据倾斜处理:在大数据处理中,数据倾斜是一个常见的问题,即某些键的数据量远远超过其他键。shuffle操作通常需要处理数据倾斜,以确保任务的负载均衡,防止某些节点上的任务变得过于繁重。

Yarn 大数据平台资源管理和作业调度框架

Apache Hadoop YARN(Yet Another Resource Negotiator)是一个大数据平台资源管理和作业调度框架,它是 Apache Hadoop 生态系统的一部分。YARN 的主要目标是提供一个通用、灵活的资源管理平台,使各种大数据处理框架(如Hadoop MapReduce、Apache Spark、Apache Flink等)可以有效地共享和管理集群资源。以下是关于YARN的一些重要信息:

  1. 资源管理: YARN 负责在集群上分配和管理资源。它将集群资源划分为容器,每个容器可以包含一个或多个任务。这种资源管理方法使多个应用程序可以共享集群资源,而不会相互干扰。

  2. 作业调度: YARN 支持多种调度策略,例如容量调度、公平调度和先进先出调度,以满足不同应用程序的需求。这使得在同一集群上运行多个应用程序变得更加容易。

  3. 容错性: YARN 具有容错性,即使在节点故障时也能够重新分配任务,以确保应用程序的稳定性和可用性。

  4. 灵活性: YARN 提供了灵活的应用程序框架,允许开发人员编写自定义应用程序,并根据需要配置资源和调度策略。这为大数据生态系统的不断发展提供了支持。

  5. 监控和管理: YARN 提供了丰富的监控和管理工具,用于跟踪应用程序的性能、资源使用和集群健康情况。这些工具包括YARN ResourceManager和NodeManager、YARN应用程序历史服务器等。

  6. 生态系统集成: YARN被设计为与大数据生态系统中的其他组件集成,包括Hadoop Distributed File System(HDFS)、Hive、Pig、Tez、Spark等。这意味着你可以在一个集群上同时运行多个大数据处理框架,而它们都可以受益于YARN的资源管理。

  7. 扩展性: YARN是一个高度可扩展的框架,可以适应不断增长的数据处理需求。它支持横向扩展,可以轻松地添加更多的节点和资源来满足增加的工作负载。

Yarn 实际运行过程

让我们通过一个具体的示例来说明YARN的工作原理。假设你有一个大数据集群,其中有数十台服务器,你想在这个集群上运行两个不同的大数据处理应用程序:一个是Hadoop MapReduce作业,另一个是Apache Spark应用程序。YARN将用于管理和调度这两个应用程序的资源。

1. 提交应用程序: 首先,你将在集群上提交两个不同的应用程序,一个是Hadoop MapReduce作业,另一个是Spark应用程序。这两个应用程序分别包括Mapper、Reducer和Spark任务。

2. ResourceManager: 集群上有一个YARN ResourceManager(RM),它是YARN的核心组件之一。RM负责接收应用程序的提交请求并为它们分配资源。RM维护有关可用资源的信息,如可用内存和CPU核心。

3. ApplicationMaster: 每个应用程序都有一个ApplicationMaster(AM)。AM是一个YARN容器,负责与RM协商资源,为应用程序分配任务,并监控应用程序的执行。对于Hadoop MapReduce应用程序,AM会与RM协商Mapper和Reducer任务,而对于Spark应用程序,AM会协商Spark任务。

4. NodeManager: 集群中的每个节点都有一个YARN NodeManager(NM),它负责监视本地资源使用情况,启动和停止容器,以及向RM报告可用资源。

5. 资源分配: RM将应用程序的资源请求与集群中的可用资源进行匹配。它决定分配多少内存、CPU核心等资源给每个应用程序。资源分配是基于调度策略(如容量调度或公平调度)进行的。

6. 执行应用程序: 一旦资源分配完成,AM将启动应用程序的任务,并开始执行。这包括在容器中运行Mapper、Reducer或Spark任务。NodeManager负责启动和监视这些容器。

7. 监控和容错性: RM和AM会不断监控应用程序的执行,以确保它们正常工作。如果应用程序失败或容器遇到问题,YARN可以重新分配资源或重启容器,以确保应用程序的稳定性和可用性。

8. 完成应用程序: 当应用程序执行完成时,AM会向RM报告,并释放已使用的资源。RM会更新集群的可用资源信息。

相关文章:

大数据知识扫盲

MapReudece作业启动和运行机制 MapReduce是一种分布式计算框架,最初由Google开发,用于处理大规模数据集的批处理任务。其核心思想是将数据划分为小的块,然后并行处理这些块,最后将结果合并。以下是MapReduce作业的启动和运行机制…...

使用Ubuntu虚拟机离线部署RKE2高可用集群

环境说明 宿主机和虚拟机的OS与内核相同,如下 $ cat /etc/issue Ubuntu 22.04.3 LTS \n \l$ uname -sr Linux 6.2.0-34-generic虚拟化软件版本 $ kvm --version QEMU emulator version 6.2.0 (Debian 1:6.2dfsg-2ubuntu6.14) Copyright (c) 2003-2021 Fabrice Be…...

记一次任意文件下载到Getshell

任意文件下载(Arbitrary File Download)是一种常见的 Web 攻击技术,用于窃取服务器上任意文件的内容。攻击者利用应用程序中的漏洞,通过构造恶意请求,使应用程序将任意文件(如配置文件、敏感数据等&#xf…...

java异常处理

异常处理分为三类: 检查性异常 用户错误或问题引起的异常,这是程序员无法预见的。例如要打开一个不存在文件时,一个异常就发生了,这些异常在编译时不能被简单地忽略。 运行时异常 运行时异常是可能被程序员避免的异常&#xf…...

递归为什么这么难?一篇文章带你了解递归

递归为什么这么难?一篇文章带你了解递归 美国计算机科学家——彼得多伊奇(L Peter Deutsch)在《程序员修炼之道》(The Pragmatic Programmer)一书中提到“To Iterate is Human, to Recurse, Divine”——我理解的这句话为:人理解迭代,神理解…...

X86(32位)汇编指令与机器码转换原理

X86(32位)汇编指令与机器码转换原理 1 32位寻址形式下的ModR/M字节2 汇编指令转机器码2.1 mov ecx,[eaxebx*2]2.1.1 查Opcode和ModR/M2.1.2 查SIB 2.2 mov ecx,[eaxebx*210h]2.3 mov ecx,[eaxebx*200000100h] 本文属于《 X86指令基础系列教程》之一&…...

ES 全字段模糊检索时分词方式对检索结果的影响

文章目录 背景创建索引指定 _all 分词为空格创建索引插入索引数据全字段的模糊检索 创建索引指定 _all 分词为 keyword索引创建插入数据模糊检索 创建索引不配置 _all不同分词的结果启示录 背景 2018年参与使用 ES 和 Kafka 项目的开发,当时主要是做前端开发&#…...

基于Python Django 的微博舆论、微博情感分析可视化系统(V2.0)

文章目录 1 简介2 意义3 技术栈Django 4 效果图微博首页情感分析关键词分析热门评论舆情预测 5 推荐阅读 1 简介 基于Python的微博舆论分析,微博情感分析可视化系统,项目后端分爬虫模块、数据分析模块、数据存储模块、业务逻辑模块组成。 Python基于微博…...

python读取Excel到mysql

常见问题: 1.数据库密码有特殊字符 使用urllib.parse.quote_plus 编译密码 mysql_engine create_engine((f"mysqlpymysql://root:%s10.0.0.2:3306/mydb")%urllib.parse.quote_plus("passaaaa")) 2.设置字段类型 设置特定类型,和指…...

C++八股文面经

1.介绍一下你对面向对象的理解, 面向对象编程(Object-Oriented Programming,简称OOP)是一种编程范式,它将数据和操作数据的方法组合成一个对象,以此来描述现实世界中的事物和概念。在面向对象编程中&#…...

【Linux】静态库和共享库一分钟快速上手

Linux 前言对比创建静态库动态库 前言 程序库,对于程序原来说是非常重要的。但不少人对其不太了解,接下来一起学习其中的奥秘吧! 简单来说,程序库可以分为静态库和共享库。它们包含了数据和执行代码的文件。其不能单独执行&#…...

C++继承总结(下)——菱形继承

一.什么是菱形继承 菱形继承是多继承的一种特殊情况&#xff0c;一个类有多个父类&#xff0c;这些父类又有相同的父类或者祖先类&#xff0c;那么该类就会有多份重复的成员&#xff0c;从而造成调用二义性和数据冗余。 class Person {public:Person(){cout << "P…...

CCF CCSP2023参赛记 + 算法题题解

大家好啊&#xff0c;时隔多年&#xff0c;作为大四老年人&#xff0c;再次来到这个地方记录算法竞赛相关&#xff0c;可能也是最后一次参加这种算法赛事了&#xff0c;我觉得还是很有纪念意义的。虽然我高中搞OI被强基背刺&#xff0c;以至于到了大学有点躲着竞赛&#xff0c;…...

buuctf_练[GYCTF2020]FlaskApp

[GYCTF2020]FlaskApp 文章目录 [GYCTF2020]FlaskApp常用绕过方法掌握知识解题思路解题一 -- 计算pin码解题二 -- 拼接绕过 执行命令 关键paylaod 常用绕过方法 ssti详解与例题以及绕过payload大全_ssti绕过空格_HoAd’s blog的博客-CSDN博客 CTF 对SSTI的一些总结 - FreeBuf网…...

针对element-plus,跳转jump(快速翻页)

待补充 const goToPage () > {const inputElement document.querySelector(.el-pagination .el-input__inner);console.log(inputElement, inputElement); } 打印之后可以看到分页跳转的数字输入框&#xff0c;是有进行处理的&#xff0c;max"102",是我自己的…...

【软件安装】Windows系统中使用miniserve搭建一个文件服务器

这篇文章&#xff0c;主要介绍如何在Windows系统中使用miniserve搭建一个文件服务器。 目录 一、搭建文件服务器 1.1、下载miniserve 1.2、启动miniserve服务 1.3、指定根目录 1.4、开启访问日志 1.5、指定启动端口 1.6、设置用户认证 1.7、设置界面主题 &#xff08;…...

iOS .a类型静态库使用终端进行拆解和合并生成

项目中会用到许多第三方的.a类型的静态库&#xff0c;有时候会有一些静态库回包含相同文件而产生冲突&#xff0c;我们就需要对这个库进行去重的一个操作。一般有哪些文件冲突了&#xff0c;xcode报错都会有详细的提示。我们可以将这两个库合并&#xff0c;也可以其中一方中的文…...

react-组件间的通讯

一、父传子 父组件在使用子组件时&#xff0c;提供要传递的数据子组件通过props接收数据 class Parent extends React.Component {render() {return (<div><div>我是父组件</div><Child name"张" age{16} /></div>)} }const Child …...

【广州华锐互动】VR公司工厂消防逃生演练带来沉浸式的互动体验

在工业生产过程中&#xff0c;安全问题始终是我们不能忽视的重要环节。特别是火灾事故&#xff0c;不仅会造成重大的经济损失&#xff0c;更会威胁到员工的生命安全。传统的消防安全训练方法&#xff0c;如讲座、实地演练等&#xff0c;虽然具有一定的效果&#xff0c;但是无法…...

可观察性支柱:探索日志、指标和跟踪

通过检查系统输出来测量系统内部状态的能力称为可观察性。当可以仅使用输出信息&#xff08;即传感器数据&#xff09;来估计当前状态时&#xff0c;系统就变得“可观察”。您可以使用来自 Observability 的数据来识别和解决问题、优化性能并提高安全性。 在接下来的几节中&am…...

nginx浏览器缓存和上流缓存expires指令_nginx配置HTTPS

1.nginx控制浏览器缓存是针对于静态资源[js,css,图片等] 1.1 expires指令 location /static {alias/home/imooc;#设置浏览器缓存10s过期expires 10s;#设置浏览器缓存时间晚上22:30分过期expires @22h30m;#设置浏览器缓存1小时候过期expires -1h;#设置浏览器不缓存expires …...

硬件安全与机器学习的结合

文章目录 1. A HT Detection and Diagnosis Method for Gate-level Netlists based on Machine Learning摘要Introduction 2. 基于多维结构特征的硬件木马检测技术摘要Instruction 3. A Hardware Trojan Detection and Diagnosis Method for Gate-Level Netlists Based on Diff…...

腾讯云国际-如何使用对象存储COS在 CKafka 控制台创建数据异步拉取任务?腾讯云代充

操作场景 Datahub 支持接入各种数据源产生的不同类型的数据&#xff0c;统一管理&#xff0c;再分发给下游的离线/在线处理平台&#xff0c;构建清晰的数据通道。 本文以 COS 数据为例介绍如何在 CKafka 控制台创建数据异步拉取任务&#xff0c;并对任务进行修改配置&#xf…...

内存马概念

内存马概念 文章目录 内存马概念木马演变内存使用条件内存缺点JAVA Web三大组件Listener:监听器servelet请求流程内存马分类内存演示内存马植入方式案例shiro反序列化漏洞植入内存马 木马演变 内存使用条件 1. 禁止外联 2. 文件监控、查杀 3. spring Boot&#xff0c;不支持js…...

交换机基础(四):MSTP负载均衡配置案例

如图所示是某个企业内部核心网络的结构图&#xff0c;目前企业中有20个VLAN, 编号为VLAN1&#xff5e;VLAN20, 为了确保内部网络的可靠性&#xff0c;使用 了冗余链路和MSTP 协议。为了能更好地利用网络资源和带宽&#xff0c;现管理员希望通过配置MSTP 的负载均衡实现网络带宽…...

C# OpenCvSharp Yolov8 Face Landmarks 人脸特征检测

效果 项目 代码 using OpenCvSharp; using OpenCvSharp.Dnn; using System; using System.Collections.Generic; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace OpenCvSharp_Yolov8_Demo {public partial class frmMain…...

计算机网络之数据链路层(全)

[复习提示] 王道&#xff1a;本章是历年考试中考查的重点。要求在了解数据链路层基本概念和功能的基础上&#xff0c;重点掌握滑动窗口机制、三种可靠传输协议、各种MAC协议、HDLC协议和PPP协议&#xff0c;特别是CSMA/CD协议和以太网帧格式&#xff0c;以及局域网的争用期和最…...

前端TypeScript学习-交叉类型与泛型

交叉类型和泛型是TypeScript中的两个重要概念。 交叉类型&#xff08;&&#xff09;可以用来组合多个接口&#xff0c;形成一个新接口。它类似于接口继承&#xff08;extends&#xff09;&#xff0c;但有一些区别。交叉类型不会产生类型继承层次结构&#xff0c;而是将多…...

科聪协作(复合)移动机器人整体解决方案

协作&#xff08;复合&#xff09;移动机器人&#xff08;AGV/AMR&#xff09;相较传统工业机器人具有更加安全和简单的工作优势&#xff0c;具备较强的发展潜力。协作&#xff08;复合&#xff09;移动机器人安全性和操作的简洁性、灵活性不断提高,优势得到了充分发挥,在越来越…...

RTE(Runtime Environment)

RTE&#xff08;Runtime Environment&#xff09;是一个运行时环境&#xff0c;在这个环境里&#xff0c;你可以实现的功能是&#xff1a; 作为一个缓冲buffer给应用层和BSW层的接口&#xff08;例如COM&#xff09;用来存储数据&#xff0c;也就是说定义一个全局变量供上层和下…...