Hadoop学习----MapReduceYARN

news2024/11/16 3:13:52

Map Reduce

1、Map Reduce的思想核心是"先分再合,分而治之"
所谓"分而治之"就是把一个复杂的问题,按照一定的"分解"方法分为等价的规模较小的若干部分,然后逐个解决,分别找出各部分的结果,最后把各部分的结果组成问题的最终结果

Map表示第一阶段,负责"拆分":即把复杂任务分解为若干个简单的子任务来并行处理,可以进行拆分的前提是这些小任务可以并行计算,彼此之间没有依赖关系。
Reduce表示第二阶段,负责"合并":即对map阶段的结果进行全局汇总
这两个阶段合起来就是MapReduce思想的体现。

2、MapReduce设计构思
在这里插入图片描述
构建抽象编程模型
MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型
Map:对一组数据元素进行某种重复式的处理
reduce:对map的中间结果进行某种进一步的结果整理
在这里插入图片描述

分布式计算概念
分布式计算是一种计算方法,和集中式计算式相对的
随着计算技术的发展,有些应用需要非常巨大的计算能力才能完成,如果采用集中式计算,需要耗费很多时间。
分布式计算将该应用拆分成许多小的部分,分配给多台计算机进行处理,这样可以节约整体计算时间,大大提高计算效率
在这里插入图片描述

Map Reduce介绍
是一个分布式计算框架,用于轻松编写分布式应用程序,这些应用程序以可靠,容错的方式并行处理大型硬件集群上的大量数据
MapReduce 是一种面向海量数据处理的一种指导思想,也是用于对大规模数据进行分布式计算的编程模型。

  • 易于编程
    MapReduce框架提供了用于二次开发的接口,简单的实现一些接口,就可以完成一个分布式程序,任务计算交给计算框架取处理,将分布式程序部署到hadoop集群上运行,集群节点可以扩展到成百上千个
  • 良好扩展性
    当计算机资源不能得到满足的时候,可以通过增加机器来扩展它的计算额能力。基于MapReduce的分布式计算的特点可以随节点数保持近似于线性的增长。
  • 高容错性
    Hadoop集群式分布式搭建和部署,任何单一机器节点宕机,它可以把上面的计算任务转移到另一个节点上运行,不影响整个作业的完成,过程完全是由hadoop内部完成
  • 适合海量数据的离线处理
  • 可以处理GB、TB和PB级别的数据量
    相比其他Spark Flink,这些非常快,但是它们在内存中计算不够稳定,相比较MapReduce更加稳定。

局限性:
实时计算性能差
MapReduce主要用于离线作业,无法做到秒级或者亚秒级的数据响应

不能进行流式计算
流式计算的特点是数据是源源不断的计算,并且数据是动态的;而MapReduce作为离线计算框架,主要针对静态数据,数据是不能动态变化的。所以实时领域MapReduce几乎没有容身之地,着重在离线计算领域。

MapReduce实例进程
一个完整的MapReduce程序在分布式运行时有三类

  • MRAppMaster:负责整个MR程序的过程调度及状态协调
  • MapTask:负责map阶段的整个数据处理流程
  • ReduceTask:负责reduce阶段的整个数据处理流程

阶段组成:一个MapReduce编程模型中只能包含一个Map阶段和一个Reduce阶段,或者只有Map阶段
不能由多个map阶段,多个Reduce阶段的情况出现
如果用户的业务非常复杂,那就只能多个MapReduce程序串行运行
在这里插入图片描述
注意:整个MapReduce程序中,数据都是以kv键值对的形式流转的

官方示例
示例一:计算圆周率
示例程序路径: 安装包路径/hadoop/share/hadoop/mapreduce
示例程序:hadoop-mapreduce-examples-3.3.0.jar
MapReduce程序提交命令 :[hadoop jar|yarn jar] hadoop-mapreduce-examples-3.3.0.jar args…
提交到Yarn集群上分布式执行。
案例:评估圆周率的值
在这里插入图片描述
这里计算圆周率的方法是蒙特卡洛算法
在这里插入图片描述
10就是进行10次,每次撒点50,最后求平均,数越大得出结果越精准。这里是感受如何提交计算任务

# 第一个参数:pi表示MapReduce程序执行圆周率计算任务
# 第二个参数:用于指定map阶段运行的任务task次数,并发度,这里是10
# 第三个参数:用于指定每个map任务取样的个数,这里是50
hadoop jar hadoop-mapreduce-examples-3.3.4.jar pi 10 50

示例二:wordCount 单词统计次数
WordCount算是大数据计算领域经典,相当于hello world
虽然WordCount业务及其简单,但是通过案例感受背后MapReduce的执行流程和默认的行为机制,这才是关键
在这里插入图片描述

# 参数一:wordcount  代表要执行的动作
# 参数二:输入路径
# 参数三:输出路径,输出路径不能已经存在
hadoop jar hadoop-mapreduce-examples-3.3.4.jar wordcount /input /output

在这里插入图片描述

第一个文件大小为0,这是一个成功失败的标识文件
在这里插入图片描述

Map阶段执行过程:
第一阶段:把输入目录下文件按照一定的标准逐个进行逻辑切片,形成切片规划,默认Split size = Block size(128M),每一个切片由一个MapTask处理
第二阶段:对切片中的数据按照一定的规则读取解析返回 <key,value>对,默认是按行读取。key是每一行的起始位置偏移量,value是本行文本内容
第三阶段:调用Mapper类中的map方法处理数据,每读取解析出来一个<key,value>调用一次map方法
第四阶段:按照一定的规则对Map输出的键值对进行分区,默认不分区,因为只有一个reducetask,分区的数量就是reducemask运行的数量
第五阶段:Map输出数据写入内存缓冲区,达到比例溢出到磁盘上,溢出spill的时候根据key进行排序sort,默认根据key字典序排序
第六阶段:对所有溢出文件进行最终的merge合并,成为一个文件

Reduce阶段执行过程:
第一阶段:ReduceTask会主动从MapTask复制拉取属于需要自己处理的数据
第二阶段:把拉取来的数据全部进行合并merge,即把分散的数据合并成一个大的数据。再对合并后的数据排序
第三阶段:是对排序后的键值对调用reduce方法,键相等的键值对调用一次reduce方法,最后把这些输出的键值对写入到HDFS文件中

shuffle概念:
在MapReduce中,shuffle更像是洗牌的逆过程,指的是将map端的无规则输出按指定的规则"打乱"成具有一定规则的数据,以便reduce端接收处理
一般把从Map产生输出开始到Reduce取得数据作为输入之前的过程成为shuffle
这也是MapReduce处理过程慢的问题所在,就拿wordcount来说,map产出文件在内存,溢出之后到磁盘,通过网络传输到reduce内存,由合并到磁盘,就涉及了多次IO
在这里插入图片描述


YARN

Apache Hadoop YARN(Yet Another Resource Negotiator,另一种资源协调者),是一种新的Hadoop资源管理器。
YARN是一个通用资源管理系统和调度平台,可为上层应用提供统一的资源管理和调度
它的引入为集群在利用率、资源统一管理和数据共享方面带来了巨大好处。

资源管理系统:集群的硬件资源,和程序运行相关,比如:内存、CPU等
调度平台:多个程序同时申请计算资源时如何分配,调度的规则(算法)
通用:不仅仅支持MapReduce程序,理论上支持各种计算程序。YARN不关心你干什么,只关心你要资源,在有的情况下给你,用完之后还我。

可以把Hadoop Yarn理解为相当于一个分布式的操作系统平台,而MapReduce等计算程序则相当于运行于操作系统之上的应用程序,YARN为这些程序提供运算所需的资源
Hadoop能有今天这个地位,YARN是功不可没,因为有了YARN,更多计算框架可以接入到HDFS中,而不单单是MapReduce,正是因为YARN的包容,使得其他计算框架能够专注于计算性能的提升。
HDFS可能不是最优秀的大数据存储系统,但却是应用最广泛的大数据存储系统,YARN功不可没
在这里插入图片描述
YARN中有一个关键组件—Resource Scheduler
它是 ResouceManager的内部组件之一,Scheduler 完全专用于调度作业,它无法跟踪应用程序的状态。
Hadoop提供了三种调度策略: FIFO Scheduler(先进先出调度器) Capacity Scheduler(容量调度器) Fair Scheduler(公平调度器)
默认使用的 Capacity Scheduler
如果需要使用其他调度器,可以在yarn-site.xml中的yarn.resourcemanager.shceduler.class进行配置
没有最好的,只有最符合业务的。
在这里插入图片描述
FIFO Scheduler(先进先出调度器): 先来的先执行,后来的后执行。优先级无法调整。
Capacity Scheduler(容量调度器):默认方式,该策略允许多个组织共享整个集群资源。
Fair Scheduler(公平调度器):如图,有两个用于作业,A用于先来,1占据了所有资源,B用户来了之后,根据用户平分资源。B有两个作业,2和3平分B用户资源
在这里插入图片描述

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

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

相关文章

SimpleFOC移植STM32(七)—— 移植STM32F405RGT6

目录说明一、点亮LED1.1、原理图1.2、硬件准备1.3、烧写二、开环控制2.1、硬件准备2.2、硬件连接2.3、打开工程2.4、修改参数2.5、编译下载&#xff0c;观察运行三、角度读取3.1、硬件准备3.2、硬件连接3.3、接线说明3.4、打开工程3.5、修改代码3.6、编译下载&#xff0c;观察运…

超1800万累计观看,多次占据热榜前列……“无障碍字幕直播间”带来的远不止这些!

截至12月6日&#xff0c;世界杯无障碍字幕直播间已累计观看超1800万&#xff0c;多次占据热榜前列……但TA带来的远不止这些。 “过去觉得世界杯距离我太远了&#xff0c;熬夜看球却听不懂、听不清只能紧紧盯着屏幕&#xff1b;但今年无障碍字幕直播间一出&#xff0c;似乎一下…

Talk预告 | 腾讯AI Lab研究员童湛南京大学谈婧:基于注意力机制的视频自监督表示学习和时序动作检测

本期为TechBeat人工智能社区第465期线上Talk&#xff01; 北京时间12月22日(周四)20:00&#xff0c;腾讯AI Lab研究员——童湛&南京大学计算机科学与技术系硕士研究生——谈婧的Talk将准时在TechBeat人工智能社区开播&#xff01; 他们与大家分享的主题是: “基于注意力机制…

在华为云桌面Workspace上,启泰智能工业设计效率翻倍

中国汽车的产销总量已经连续13年稳居全球第一&#xff0c;在一款新车开发中&#xff0c;大约有2万个汽车零部件&#xff0c;这些零部件的研发与制造&#xff0c;需要大量的工厂与各行业的协作&#xff0c;其中模具的需求量最大。 模具行业是一个非标、离散型的行业&#xff0c…

JavaSE笔记——泛型

文章目录前言一、简单泛型1.一个元组类库2.一个堆栈类二、泛型接口三、泛型方法1.变长参数和泛型方法2.一个泛型的 Supplier3.简化元组的使用4.一个 Set 工具四、构建复杂模型五、泛型擦除1.迁移兼容性2.擦除的问题3.边界处的动作六、补偿擦除1.创建类型的实例七、边界八、通配…

【学习打卡05】可解释机器学习笔记之CAM+Captum代码实战

可解释机器学习笔记之CAMCaptum代码实战 文章目录可解释机器学习笔记之CAMCaptum代码实战代码实战介绍torch-cam工具包可视化CAM类激活热力图预训练ImageNet-1000图像分类-单张图像视频以及摄像头预测pytorch-grad-cam工具包Grad-CAM热力图可解释性分析基于Guided Grad-CAM的高…

MySql 根据中文拼音首字母排序、 分组排序

如地域表信息&#xff1a; 如果我们想根据NAME 字段 的值&#xff0c; 按照中文拼音首字母排序 &#xff1a; sql SELECT CODE, NAME FROM district_info ORDER BY CONVERT(name USING gbk) COLLATE gbk_chinese_ci ASC 效果很OK&#xff1a; 那么如果我要整成想电话簿那样&am…

【正版软件】Navicat for Oracle 数据库数管理和开发工具

前言 Navicat for Oracle 透过精简的工作环境&#xff0c;提高 Oracle 开发人员和管理员的效率和效率。 Navicat for Oracle 透过精简的工作环境&#xff0c;提高 Oracle 开发人员和管理员的效率和效率。专业化 Oracle 的开发&#xff0d;快速安全地创建、组织、访问和共享信息…

微信小程序自定义顶部状态栏

因为工作需要&#xff0c;要在微信小程序中自定义顶部导航栏&#xff0c;通过这篇文章来记录一下自己所得~ 第一步: 需要在json文件中配置"navigation" : "custom"&#xff0c;完成自定义导航栏&#xff0c;只保留胶囊按钮&#xff0c;效果如下图&#x…

养殖废水生化后氨氮400mg/L做到15mg/L,有什么降氨氮的工艺?

水产养殖过程中&#xff0c;鱼的排泄物和没有被消耗的饲料降解均会使水中的氨氮剧增&#xff0c;当氨氮浓度大于0.2mg/L时&#xff0c;鱼类摄食就会受到严重影响&#xff0c;造成生长不良或停止生长;达到 2mg/L时&#xff0c;则会造成生物的死亡&#xff0c;严重影响水产的养殖…

【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

技术推荐 自定义Archetype Maven骨架/以当前项目为模板创建maven骨架&#xff0c;可以参考http://maven.apache.org/archetype/maven-archetype-plugin/advanced-usage.html&#xff0c;详细介绍了如何快速创建和使用Archetype。 技术背景 在工作过程中必然会遇到创建项目的蛋…

最新版Crack:Xceed Ultimate Suite

Xceed Ultimate Suite 包括 160 多个适用于所有 Windows 平台的自适应、可靠和高性能控件和库的重要集合。程序前端的 UI 控件和后端的数据处理库。经常更新&#xff0c;并得到反应支持和开发人员的认可。 适用于所有 Windows 平台的 160 个自适应、可靠和高性能控件和库的重要…

vue-elementUI后台管理系统,已实现用户管理、菜单管理、角色管理、公司管理、权限管理、支付管理等

vue搭建后台管理界面模版&#xff08;PC端&#xff09; 完整代码下载地址&#xff1a;vue-elementUI后台管理系统 技术栈 vue2 vuex vue-router webpack ES6/7 axios elementUI 阿里图标iconfont 项目预览 http://nmgwap.gitee.io/vueproject/#/login 说明 本项目主…

Python使用pandas导入csv文件内容

使用pandas导入csv文件内容使用pandas导入csv文件内容1. 默认导入2. 指定分隔符3. 指定读取行数4. 指定编码格式5. 列标题与数据对齐使用pandas导入csv文件内容 1. 默认导入 在Python中导入.csv文件用的方法是read_csv()。 使用read_csv()进行导入时&#xff0c;指定文件名即…

jQuery 过滤方法

文章目录jQuery 过滤方法hasClass() 类名过滤eq() 下标过滤is() 判断过滤not() 反向过滤filter() 表达式过滤has() 表达式过滤后代元素jQuery 过滤方法 过滤方法说明hasClass()类名过滤eq()下标过滤is()判断过滤not()反向过滤filter()表达式过滤has()表达式过滤后代元素 hasCl…

微软发现macOS漏洞可让恶意软件绕过安全检查

©网络研究院 苹果修复了一个漏洞&#xff0c;攻击者可以利用该漏洞通过能够绕过 Gatekeeper 应用程序执行限制的不受信任的应用程序&#xff1b;在易受攻击的 macOS 设备上部署恶意软件。 由微软首席安全研究员发现并报告的安全漏洞&#xff08;称为Achilles&#xff09…

前端基础_矩阵变换

矩阵变换 在介绍矩阵变换之前&#xff0c;首先要介绍一下变换矩阵&#xff0c;这个矩阵是专门用来实现图形变形的&#xff0c;它与坐标一起配合使用&#xff0c;以达到变形的目的。当图形上下文被创建完毕时&#xff0c;事实上也创建了一个默认的变换矩阵&#xff0c;如果不对…

腾讯T4熬夜硬肝的全套微服务学习笔记,Github万星只是开始

写在前面 微服务架构被认为是 IT 软件架构的未来方向。热度虽高&#xff0c;但对于很多中小公司来说微服务却是遥不可及&#xff0c;因为团队规模和能力又反过来制约了他们采用新技术的步伐。很多人对于微服务技术也都有着一些疑虑&#xff0c;比如&#xff1a;微服务这技术虽然…

编译器原理简介(以Cortex-M3为例)

在"keil根目录\ARM\ARMCC\bin"下可以找到如下文件&#xff1a; 他们就是编译器内核&#xff0c;将工程代码转换成二进制文件&#xff0c;烧写进MCU中执行。 目录 C与汇编 典型的开发流程 编译工具报错举例 C与汇编 在CM3上编程&#xff0c;开发人员既可以使用C也…

CANoe-新型通信模式(SOA面向服务架构)

传统的以ECU为单元的整车通信架构,是面向信号的以CAN/LIN等总线为代表的经典通信模式。而以车载以太网为总线,SOME/IP或DDS等为中间件的SOA面向服务的新型通信模式,在以域控为单元的整车通信架构中被越来越多的使用 CANoe作为仿真和测试环境提供了统一的跨网络通信概念。这…