首页 > 试题广场 >

关于MapReduce的描述错误的是()

[单选题]
关于MapReduce的描述错误的是()
  • 一个Task通常会把输入集切分成若干独立的数据块
  • 通常计算节点和存储节点是同一节点
  • 通常,作业的输入输出都会被存储在文件系统中
  • MapReduce框架会先排序map任务的输出
map任务的输入,会按照key进行聚集,之后会有一个shuffle的阶段,并不是排序
发表于 2015-11-28 23:50:48 回复(0)

Hadoop Map/Reduce是一个使用简易的软件框架,基于它写出来的应用程序能够运行在由上千个商用机器组成的大型集群上,并以一种可靠容错的方式并行处理上T级别的数据集。

一个Map/Reduce 作业(job) 通常会把输入的数据集切分为若干独立的数据块,由 map任务(task)以完全并行的方式处理它们。框架会对map的输出先进行排序, 然后把结果输入给reduce任务。通常作业的输入和输出都会被存储在文件系统中。 整个框架负责任务的调度和监控,以及重新执行已经失败的任务。

通常,Map/Reduce框架和分布式文件系统是运行在一组相同的节点上的,也就是说,计算节点和存储节点通常在一起。这种配置允许框架在那些已经存好数据的节点上高效地调度任务,这可以使整个集群的网络带宽被非常高效地利用.
在文章《 MapReduce原理与设计思想 》中,详细剖析了MapReduce的原理,这篇文章则通过实例重点剖析MapReduce


发表于 2015-11-17 17:27:29 回复(2)
Hadoop框架的流程,MapReduce的框架流程:map任务可以细分为四个阶段:record reader、mapper,combiner和partitioner。map任务的输出被称为中间键和中间值,会被送到reducer做后续处理。reduce任务可以分为四个阶段:混排(shuffle),排序(sort),reducer和输出格式(output format)。所以D选项是不正确的,map任务结束的第一步应该是shuffle阶段,然后才是sort阶段。
发表于 2016-04-25 10:23:59 回复(0)

MapReduce提供的主要功能

—任务调度:提交的一个计算作业(job)将被划分为很多个计算任务(tasks), 任务调度功能主要负责为这些划分后的计算任务分配和调度计算节点(map节点或reducer节点); 同时负责监控这些节点的执行状态, 并负责map节点执行的同步控制(barrier); 也负责进行一些计算性能优化处理, 如对最慢的计算任务采用多备份执行、选最快完成者作为结果

—数据/代码互定位:为了减少数据通信,一个基本原则是本地化数据处理(locality),即一个计算节点尽可能处理其本地磁盘上所分布存储的数据,这实现了代码向数据的迁移;当无法进行这种本地化数据处理时,再寻找其它可用节点并将数据从网络上传送给该节点(数据向代码迁移),但将尽可能从数据所在的本地机架上寻找可用节点以减少通信延迟

—出错处理:以低端商用服务器构成的大规模MapReduce计算集群中,节点硬件(主机、磁盘、内存等)出错和软件有bug是常态,因此,MapReducer需要能检测并隔离出错节点,并调度分配新的节点接管出错节点的计算任务

—分布式数据存储与文件管理:海量数据处理需要一个良好的分布数据存储和文件管理系统支撑,该文件系统能够把海量数据分布存储在各个节点的本地磁盘上,但保持整个数据在逻辑上成为一个完整的数据文件;为了提供数据存储容错机制,该文件系统还要提供数据块的多备份存储管理能力

—Combiner和Partitioner:为了减少数据通信开销,中间结果数据进入reduce节点前需要进行合并(combine)处理,把具有同样主键的数据合并到一起避免重复传送; 一个reducer节点所处理的数据可能会来自多个map节点, 因此, map节点输出的中间结果需使用一定的策略进行适当的划分(partitioner)处理,保证相关数据发送到同一个reducer节点
编辑于 2017-06-06 13:03:04 回复(0)