热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hadoopmapred的执行过程

hadoop的map-red就是一个并行计算平台,我们在使用这个平台的时候,要做的事情就是提交自己定制的任务(job,主要定制map类,reduce类,combine类等类),

hadoop的
map-red就是一个并行计算平台,我们在使用这个平台的时候,要做的事情就是提交自己定制的任务(job,主要定制map类,reduce类,combine类等类),然后设置job的各种参数,比如设置mappe/reducer/combine类,
输入数据路径,输出数据路径,输出格式。然后可以根据日志或者web页面查看任务执行的情况,如果错误,通过web页面查看日志。对于map-red平台,我们可以设置各种参数,来使得我们提交的任务的执行效率得到优化,比如多少个reducer任务,分片大小等。

map-red的执行过程,首先分片由hadoop来完成,hadoop将完成的分片交给一个mapper任务,一个mapper任务可以不只执行一个分片,mapper任务的执行过程是,从data中读入一行,然后用我们自定义的mapper函数处理,每读入一行,调用mapper函数一次。
如果有多个reducer任务,hadoop还要进行分区,默认的分区器是“key.hash(reduce任务的个数)”(注:
可以写自己的分区器),也就是在一个分区中,是具有相同的hash值的key-value,
等到reducer任务运行的时候,会从对应于自身(hash对应)的多个mapper的相应分区中通过网络取过来放在本地,然后在reducer本地进行shuffle操作,shuffle操作是对多个map的输出进行一次重排序,因为单个map的输出已经是有序的啦(map写入磁盘前在内存中执行的),shuffle操作后进行reduc操作,将结果输出到目标地。(为什么要进行排序,为了reduce的输出?)

为了减少map和redu的之间传输的数据数量,在mapper操作完成后,在map处可以对中间数据进行一次combine处理,combine处理实质上是reduce数据的预处理在map本地的运行。combine是在map输出的中间数据写入到磁盘前运行,并且会反复运行,所以combine的另外一个意义也是使得map写入到磁盘的中间数据量更少。

如果没有reduce任务,hadoop会将map结果直接输出到目标地,如果有reduce,map的结果就是reduce的输入,即中间数据,hadoop把这些中间数据放在本地存储(是否是采用oracle的临时表空间的思想)。

hadoop map-red的执行过程,布布扣,bubuko.com


推荐阅读
  • 本文详细介绍了PHP中的几种超全局变量,包括$GLOBAL、$_SERVER、$_POST、$_GET等,并探讨了AJAX的工作原理及其优缺点。通过具体示例,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 使用 ModelAttribute 实现页面数据自动填充
    本文介绍了如何利用 Spring MVC 中的 ModelAttribute 注解,在页面跳转后自动填充表单数据。主要探讨了两种实现方法及其背后的原理。 ... [详细]
  • LoadRunner中的IP欺骗配置与实践
    为了确保服务器能够有效地区分不同的用户请求,避免多人使用同一IP地址造成的访问限制,可以通过配置IP欺骗来解决这一问题。本文将详细介绍IP欺骗的工作原理及其在LoadRunner中的具体配置步骤。 ... [详细]
  • 本文概述了在GNU/Linux系统中,动态库在链接和运行阶段的搜索路径及其指定方法,包括通过编译时参数、环境变量及系统配置文件等方式来控制动态库的查找路径。 ... [详细]
  • 本文详细介绍了如何使用Rufus工具制作一个兼容UEFI启动模式的Windows Server 2008 R2安装U盘,包括必要的软件和步骤。 ... [详细]
  • 本文介绍如何使用 Python 计算两个时间戳之间的时间差,并将其转换为毫秒。示例代码展示了如何通过 `time` 和 `datetime` 模块实现这一功能。 ... [详细]
  • 使用REM和媒体查询实现响应式布局
    本文介绍如何利用REM单位和媒体查询(Media Queries)来创建适应不同屏幕尺寸的网页布局。通过具体示例,展示在不同屏幕宽度下如何调整页面元素的样式。 ... [详细]
  • 神策数据分析基础
    本文介绍了基于用户行为的数据分析方法,包括业务问题的提出与定义、具体行为的识别及统计分析流程。同时,详细阐述了如何利用事件模型(Event Model)来描述用户行为,以及在实际应用中的案例分析。 ... [详细]
  • Docker基础入门与环境配置指南
    本文介绍了Docker——一款用Go语言编写的开源应用程序容器引擎。通过Docker,用户能够将应用及其依赖打包进容器内,实现高效、轻量级的虚拟化。容器之间采用沙箱机制,确保彼此隔离且资源消耗低。 ... [详细]
  • 本文列举了构建和运行 Struts2 应用程序所需的核心 JAR 文件,包括文件上传、日志记录、模板引擎等关键组件。 ... [详细]
  • selenium通过JS语法操作页面元素
    做过web测试的小伙伴们都知道,web元素现在很多是JS写的,那么既然是JS写的,可以通过JS语言去操作页面,来帮助我们操作一些selenium不能覆盖的功能。问题来了我们能否通过 ... [详细]
  • egg实现登录鉴权(七):权限管理
    权限管理包含三部分:访问页面的权限,操作功能的权限和获取数据权限。页面权限:登录用户所属角色的可访问页面的权限功能权限:登录用户所属角色的可访问页面的操作权限数据权限:登录用户所属 ... [详细]
  • 本文介绍了用户界面(User Interface, UI)的基本概念,以及在iOS应用程序中UIView及其子类的重要性和使用方式。文章详细探讨了UIView如何作为用户交互的核心组件,以及它与其他UI控件和业务逻辑的关系。 ... [详细]
  • 本文详细对比了HashMap和HashTable在多线程环境下的安全性、对null值的支持、性能表现以及方法同步等方面的特点,帮助开发者根据具体需求选择合适的数据结构。 ... [详细]
  • 本文介绍了一个来自AIZU ONLINE JUDGE平台的问题,即清洁机器人2.0。该问题来源于某次编程竞赛,涉及复杂的算法逻辑与实现技巧。 ... [详细]
author-avatar
永远路鸣
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有