`
十三月的
  • 浏览: 168407 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

没有Map和reduce的mapReduce:求解MapReduce过程

阅读更多



    用一个10行代码的案例,一个没有map和reduce的类分解Mapreduce过程

  

操作过程:

  1>:创建MapReduce项目,并配置Run Configuration选项中的Argument输入输出路径.如图

   
 

  2>:再看代 

    

public class MyWordCount{
	/**
	 * @param args
	 * @throws IOException 
	 * @throws ClassNotFoundException 
	 * @throws InterruptedException 
	 */
	public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException {

		//根据安装的Hadoop夹下conf文件创建对象
		Configuration conf = new Configuration();
		//根据Run Configuration设置下的arguments 下的选项得到输入输出路径
		String [] otherArgs=new GenericOptionsParser(conf, args).getRemainingArgs();
		      
		   if(otherArgs.length!=2){
			    System.err.println("Usage:wordcount <in> <out>");
			      System.exit(2);
		               }
		   
		   //定义一个job
		  Job job=new Job(conf, "My WordCount");
		   //制定输入输出路径
		  FileInputFormat.addInputPath(job,new Path(args[0]));
		  FileOutputFormat.setOutputPath(job, new Path(args[1]));
		  //等待job执行完毕退出
		  System.exit(job.waitForCompletion(true)?0:1);
	}
	
	

	}

 

 

    

 

3>执行结果

 文件源如图:

 
执行结果如图:                                 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

结果分析:

1>事实

源文件有两个,用户没有自己定义任何Map和Reduce的情况下,执行后依旧可以得到MapReduce结果,当然前提是使用了插件创建的是MapReduce项目.并非是一个单纯的Java 项目.

2>过程解析

   第一步:首先使文件会被分为特定大小的split,叫做分区每一个split会对应启动一个task.分别执行的是MapTask和ReduceTask.

   第二步:每一个split首先会被hadoop框架分解成一个个的<key,Value>对,具体是<偏移量,文本行>(偏移量指的是每个文本行的首字母对文件的初始位置的偏移,文本行是以/r/n来判断的). 如此形式:

    <0,zhong nan da xue>

    <14,hu nan da xue>

    <27,shi fan da xue>

   第三步:交由用户自定义的Map处理.以系统的wordcount为例,执行程序中的命令得到的结果是:          <zhong,1>,<nan,1><da,1>,<xue,1>,<hu,1>,<nan,1>.....

  

   第四步:sort过程.即排序.           

  <zhong,list(1)>

  <nan,list(1,1)>

  <da,list(1,1,1)>....

   显然是将文件中有相同的key的进行排序,以这种格式发送给Reduce,有助于解决带宽问题. 

    第五步:shuffle过程,翻译为洗牌过程.顾名思义,洗牌是将牌打乱再分配的过程.对应的是reduce任务取得map任务输出的文件.这个过程是hadoop框架自动实现的,默认是按照hash函数执行的(此处不做深入分析).此过程后就将文件传给了reduce了.

    第六步:执行reduce.还是以wordcount为例.j将list中的数字相加得到:

     <zhong,1>

     <nan,2>

     <da,3>....

 

分析本案例:

     本案例中没有定义任何map和reduce,得到了上述的结果是因为没有执行用户自定义的map和reduce,所以是以第二步之后的结果形式展现的,这是默认的形式.

    以上只是很概括的展现了map和reduce的过程,还有很多细节值得深入,未完待续.....

 

         

    

      

              

              

     

     

 

 

 

 

 

  • 大小: 39.9 KB
  • 大小: 73 KB
  • 大小: 86.4 KB
2
0
分享到:
评论
2 楼 十三月的 2012-02-08  
小篮子java的家 写道
,默认是按照hash函数执行的(此处不做深入分析).不是叫parting嘛?求解·····

其实上面写的不够严密,按照权威指南的原版介绍

The term shuffle is actually imprecise, since in some contexts it refers to only the part of the process where map outputs are fetched by reduce tasks. In this section, we take it to mean the whole process from the point where a map produces output to where a reduce consumes input.

按照此处的理解 首先进行的是partition,之后是sort和spill to disk.再然后是ferch过程。hash是在partition执行的,所以上面讲的shuffle不是太合理的。
1 楼 小篮子java的家 2012-02-07  
,默认是按照hash函数执行的(此处不做深入分析).不是叫parting嘛?求解·····

相关推荐

    MapReduce编程之求Top3(TopN)

    在分布式计算领域,MapReduce是一种广泛使用的编程模型,尤其在处理大数据时...这就是使用MapReduce求解Top 3问题的基本思路和实现步骤。通过这个过程,我们可以看到MapReduce如何在分布式环境下高效地处理大规模数据。

    基于MapReduce的网页排序算法

    - Shuffling和Sorting:在Map和Reduce之间,数据按键排序并分组,确保相同键的数据被同一个Reduce任务处理。 5. **容错机制**: MapReduce框架提供了自动数据备份和错误恢复机制,保证了系统的高可用性和数据的...

    MapReduce-Machine-Learning:一些机器学习算法的 Map-Reduce 实现

    5. **神经网络**:在分布式环境中,MapReduce 可以用于训练大型神经网络,如 Map阶段进行前向传播,Reduce阶段执行反向传播和权重更新。 6. **特征选择**:Map阶段计算每个特征的相关性或重要性,Reduce阶段选择最...

    MapReduce求解物流配送单源最短路径研究

    否则,重复Map和Reduce过程,直至找到最短路径。 此外,文章还提供了MapReduce算法的伪代码,清晰展示了Map和Reduce阶段的处理逻辑。Map阶段主要负责处理节点,当节点颜色为1时,生成新的中间结果;Reduce阶段则...

    Data-Intensive+Text+Processing+with+MapReduce

    MapReduce是一种基于函数式编程思想的分布式计算模型,通过将数据处理任务分解为“映射(Map)”和“规约(Reduce)”两个阶段来实现。映射阶段负责将原始数据分割成一系列键值对,规约阶段则对映射结果进行汇总和...

    基于MapReduce的机器学习

    MapReduce是由Google提出的一种分布式计算模型,它将复杂的、大规模的数据处理问题分解为两个阶段:Map阶段和Reduce阶段。这种模型非常适合用于处理海量数据集,并且可以在大规模集群上高效地运行。在本论文中,作者...

    基于MapReduce的分布式EM算法的研究与应用.pdf

    MapReduce是一个流行的分布式计算框架,它通过Map(映射)和Reduce(归约)两个阶段,实现对大规模数据集的分布式处理。Map阶段负责处理输入数据,将其转换为一系列中间键值对;Reduce阶段则将具有相同中间键的所有...

    基于MapReduce和多目标蚁群算法的制造云服务动态选择算法.pdf

    CSSMA算法通过设计Map和Reduce函数,实现对云服务选择问题的分布式并行计算,加快了处理速度,提高了算法的可扩展性和效率。 仿真实验结果表明,CSSMA算法在处理大规模问题时具有良好的能力,并且适用于制造云服务...

    Data-Intensive Text Processing with MapReduce Jimmy Lin and Chris Dyer

    MapReduce的核心机制——映射(Map)和归约(Reduce)操作,本质上就是对数据进行转换和聚合的功能性操作。 ##### 2.2 映射器与归约器 - **映射器**:将输入数据转换为键值对的形式。每个映射任务通常会处理一个...

    大数据环境下的关联规则挖掘

    MapReduce的核心概念包括**Map**(映射)和**Reduce**(归约)两个阶段。 - **Map阶段**:在这个阶段,原始数据集被划分为多个部分,由不同的map任务并行处理。每个map任务读取一部分输入数据,并将其转换为一系列...

    基于大数据处理平台的计算任务调度的配置优化.pdf

    MapReduce计算任务执行过程大致可以分为四个阶段:计算任务提交阶段、Map子任务执行阶段、Reduce子任务执行阶段以及执行结果返回阶段。在这些阶段中,资源配置的优化能够显著提高大数据平台的资源利用率和业务承载...

    基于Hadoop的分布式并行算法在最佳路径中的研究.pdf

    这涉及到如何优化MapReduce的Map和Reduce任务分配,以及如何通过Shuffle阶段确保数据的正确排序和分发。此外,由于NP问题的复杂性,还需要探索高效的数据分区策略和近似算法,以在有限计算资源下找到接近最优解的...

    Hadoop hdfs文件操作,mr demo,topN demo

    其工作原理分为两个主要阶段:Map阶段和Reduce阶段。Map阶段将输入数据切分成多个键值对,由多个Mapper并行处理;Reduce阶段则将Mapper的输出进行聚合,生成最终结果。在Hadoop中编写MapReduce程序,通常需要继承`...

    高性能计算与云计算实验三报告.docx

    - MapReduce是一种用于处理大规模数据集的软件框架,由Map函数和Reduce函数两部分组成。 - **Map函数**:接受一组数据,将其转换为键值对列表。 - **Reduce函数**:接受Map函数生成的键值对列表,进一步处理后...

    服务器与MapReduce作业的联合调度:性能界限和实验

    文中提到的“MapReduce作业”是大数据处理中常见的编程模型,它将任务分为Map(映射)和Reduce(归约)两个阶段,其中Map阶段处理输入数据,生成中间键值对,Reduce阶段则对这些键值对进行合并以生成最终结果。...

    华南理工大学云计算试卷.pdf

    1. **MapReduce执行过程**:MapReduce是一种分布式计算模型,由Google提出。在执行过程中,Map任务并行处理输入数据,生成中间键值对;Reduce任务则根据中间键对这些数据进行聚合处理。选项A是正确的,因为Map任务...

    大数据技术概述.pptx

    * Hadoop:Hadoop是一个开源的可运行于大规模集群上的分布式并行编程框架,它实现了Map/Reduce 计算模型 * MapReduce:MapReduce是一个软件框架,用于并行处理大规模数据 * HDFS:HDFS是Hadoop分布式文件系统 * ...

    基于Hadoop大数据平台实现遗传算法并行化.rar

    - 并行选择:通过MapReduce的Map阶段并行执行选择操作,每个Map任务处理一部分个体。 - 并行交叉与变异:在Reduce阶段,节点之间交换信息,进行并行的交叉和变异操作。 - 全局收敛:通过周期性地全局同步种群信息...

Global site tag (gtag.js) - Google Analytics