`
liaobinxu
  • 浏览: 43326 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Hadoop MapReduce 概念和基础

阅读更多
Hadoop MapReduce 逻辑代码

public class NewMaxTemperature {

    public static final int CONST_INT_ZERO = 0;
    public static final int CONST_INT_ONE = 1;

     //【关键代码】Mapper类继承 Mapper类
    static class NewMaxTemperatureMapper extends Mapper{
       //【关键代码】覆盖父类Mapper的map(LongWritable, Text, Context)方法
        @Override
       protected void map(LongWritable key, Text value, Context context ) throws IOException , InterruptedException{
           //[业务代码]
            super.map(key, value, context); 

            String line = value.toString();
            String year = line.substring(15, 19);
            int airTemperature;
            if( line.charAt(87) == '+'){
                airTemperature = Integer.parseInt(line.substring(88, 92));
            }else{
                airTemperature =Integer.parseInt( line.substring( 87, 92));
            }
            String quality = line.substring(92, 93);
            if(airTemperature != MISSING && quality.matches( "[01459]" )){
                context.write( new Text( year), new IntWritable( airTemperature));
            }
            //[/业务代码]       
        }
   }
   //【关键代码】继承Reducer
   static class NewMaxTemperatureReducer extends Reducer{
       //【关键代码】覆盖Reducer的reduce(Text , Iterable, Context)方法
        @Override
       protected void reduce (Text key, Iterable values, Context context) throws IOException , InterruptedException{
            //[业务代码]
            for (IntWritable value : values){
                maxValue = Math.max(maxValue , value.get() );
            }
            context.write(key,  new IntWritable(maxValue));
            //[/业务代码]
        }

   }
   public static void main(String[] args) throws IOException, InterruptedException, ClassNotFoundException{
       //【关键代码】创建一个任务,设置任务入口类
       Job job= new Job();
       job.setJarByClass(NewMaxTemperature.class);

       FileInputFormat.addInputPath(job, new Path(args[0]));
       FileInputFormat.addInputPath(job, new Path(args[0]));
        //【关键代码】设置任务的map任务,和reduce任务,及入口类型
       job.setMapperClass(NewMaxTemperatureMapper.class);
       job.setReducerClass(NewMaxTemperatureReducer.class);

       job.setOutputKeyClass(Text.class);
       job.setOutputValueClass(IntWritable.class);
        //【关键代码】 等待完成
       System.exit(job.waitForCompletion(true) ? CONST_INT_ZERO : CONST_INT_ONE);
   }
}




MapReduce作业时客户端执行的单位:包括输入数据、MapReduce、程序和配置信息。 Hadoop把作业分为若干个小任务task, 任务包括map任务和reduce任务。
有两种节点控制作业的完成, 这种节点包括jobtracker和多个tasktracker。jobtracker是tasktracker的调度器, tasktracker是jobtracker的slaves。tasktracker在运行过程中从jobtracker获取任务,并把进度报告给jobtracker, 如果一个任务失败,jobtracker会重新调度任务到另外一个tasktracker。 Hadoop 把输入的数据划分为小数据到MapReduce,称为输入分片(input split),每个分片包括创建map任务, 由它运行自定义的map函数来分析片中的记录。分片大小一般为一个block的大小64M。

[img]http://dl.iteye.com/upload/attachment/370088/e37e019c-c9a8-39fc-ae3a-8b7b5599f5c7.jpg" alt="[/img]

map任务把输出到本地硬盘, 而不是HDFS,应为map的输出是一个中间输出,中间输出是reduce处理的输入, 最终结果是reduce输出的。一但结果完成,map的输出是可以删除的,所以map的结果一般是不会存储在HDFS中的。

[img]http://dl.iteye.com/upload/attachment/370101/2f8579f7-bbab-36a2-8b61-f9692246315e.jpg" alt="[/img]

reduce任务不具备本地读取的优势-- 一个单一的reduce任务的输入往往来自于所有map的输出。 map的输出通过网络传输到reduce任务运行的节点, 并在哪里合并, 然后传递给自定义的reduce函数, 为了增加可靠性, reduce的输出通常存储在HDFS中。
[img]http://dl.iteye.com/upload/attachment/370096/75086578-e367-3d3b-bf0f-98b85de34661.jpg" alt="[/img]
如果是多个reducer, map任务会会对输出结果进行分区, 为配给reduce任务创建一个分区(partition)。 每个分区包含许多键/值对, 分区可以有用户自定义的partitioner来控制,通常是采用默认的分区工具, 它使用的算法是hashhas函数, 这种方法效率非常高。
也有可能不存在reduce任务, 直接的输出就是map任务的输出
[img]http://dl.iteye.com/upload/attachment/370094/85e96ac9-a17a-37d6-b046-13e1af4c6850.jpg" alt="[/img]


注释: 大部分内容来自《Hadoop权威指南》
  • 大小: 31.3 KB
  • 大小: 40.2 KB
  • 大小: 64 KB
  • 大小: 48.1 KB
分享到:
评论

相关推荐

    Hadoop MapReduce实现tfidf源码

    本篇文章将详细讲解如何利用Hadoop MapReduce实现TF-IDF(Term Frequency-Inverse Document Frequency)算法,这是一种在信息检索和文本挖掘中用于评估一个词在文档中的重要性的统计方法。 首先,我们要理解TF-IDF...

    大数据 hadoop mapreduce 词频统计

    总的来说,大数据Hadoop MapReduce词频统计是大数据分析的重要应用之一,它揭示了文本数据的内在结构,为文本挖掘、信息检索等应用提供了基础。通过理解和掌握这一技术,开发者可以更好地应对现代数据驱动决策的需求...

    Hadoop MapReduce实战手册(完整版)

    总之,《Hadoop MapReduce实战手册》全面覆盖了MapReduce的基本概念、工作流程、编程模型以及在大数据处理中的实际应用,是学习和理解大数据处理技术的理想读物。通过深入阅读,读者可以提升在大数据环境下的编程和...

    Hadoop MapReduce Cookbook 源码

    书中提供的源码对于理解MapReduce的工作流程至关重要,读者可以通过实际运行和修改这些代码,加深对概念的理解。 在阅读和实践过程中,建议读者结合Hadoop官方文档和其他相关资料,以便更全面地学习。同时,不断...

    hadoop mapreduce编程实战

    Hadoop MapReduce 编程实战 ...通过了解 MapReduce 编程基础、MapReduce 项目实践、MapReduce 编程模型、Deduplication、MAC 地址统计和计数器的使用,我们可以更好地掌握 Hadoop MapReduce 的编程技术。

    基于Apriori算法的频繁项集Hadoop mapreduce

    而Hadoop MapReduce则是一个分布式计算框架,能够处理和存储海量数据。现在我们详细探讨这两个概念以及它们如何协同工作。 首先,让我们理解Apriori算法的基本原理。Apriori算法由Raghu Ramakrishnan和Gehrke在1994...

    Hadoop MapReduce v2 Cookbook.pdf

    Hadoop MapReduce是Apache Hadoop框架的核心组件之一,它设计用于分布式处理大规模数据集,而v2的引入主要是为了解决v1在资源管理和效率上的局限性。 MapReduce的工作原理分为两个主要阶段:Map阶段和Reduce阶段。...

    Hadoop MapReduce教程.pdf

    从给定的文件信息来看,文档标题为"Hadoop MapReduce教程.pdf",描述与标题相同,标签为"Hadoop Map Reduce",部分内容虽然无法完全解析,但可以推断出与Hadoop MapReduce的基本概念、操作流程以及相关的编程模型...

    mapred.zip_hadoop_hadoop mapreduce_mapReduce

    这个"mapred.zip"文件显然包含了与Hadoop MapReduce相关的测试样例、文档和源码,这对于理解MapReduce的工作原理以及进行实际开发是非常宝贵的资源。 MapReduce的核心理念是将大规模数据处理任务分解为两个主要阶段...

    hadoop mapreduce 例子项目,运行了单机wordcount

    1. Hadoop框架的基本概念,包括HDFS和MapReduce。 2. MyEclipse和Maven在构建Hadoop项目中的作用。 3. MapReduce编程模型,包括Map和Reduce阶段的工作原理。 4. WordCount程序的设计和实现,用于演示MapReduce的基本...

    Hadoop Mapreduce Cookbook(英文版)

    1. **Hadoop基础知识**:首先,书中会介绍Hadoop的基础概念,包括Hadoop分布式文件系统(HDFS)的工作原理、Hadoop集群的搭建和管理,以及MapReduce的运行机制。理解这些基础知识是掌握MapReduce的关键。 2. **...

    hadoop学习本地win测试mapreduce程序,所要用到的环境软件.rar

    它包含必要的工具和资源,帮助你配置Hadoop环境,编写并执行MapReduce程序,从而深入理解分布式计算的核心概念。在学习过程中,记得结合文档资料,实践操作,不断调试和优化,才能更好地掌握这一技术。

    Python中Hadoop MapReduce的一个简单示例.zip

    总的来说,这个压缩包提供的资源对于初学者来说是一个很好的起点,它涵盖了Hadoop MapReduce的基本概念和Python实现,有助于深入理解分布式计算的核心原理。通过实践这个简单的示例,你可以更好地掌握如何在大数据...

    Hadoop MapReduce Cookbook

    《Hadoop MapReduce Cookbook》是一本针对大数据处理专家和开发者的实用指南,详细阐述了如何使用Hadoop MapReduce框架分析大规模复杂数据集。Hadoop是大数据处理领域的核心工具之一,尤其擅长处理海量数据集,而...

    理论部分-Hadoop MapReduce1

    此外,Hadoop MapReduce 还包括 JobTracker 和 TaskTracker,这两个组件负责任务调度和监控,确保整个计算过程的正确执行和资源的有效利用。JobTracker 分配任务给 TaskTracker,而 TaskTracker 负责执行具体的 Map ...

    hadoop mapreduce2

    在Windows环境下,使用Eclipse进行Hadoop MapReduce开发是一项基础但重要的技能。 标题“hadoop mapreduce2”可能指的是在Hadoop 2.x版本下进行MapReduce编程,这个版本引入了YARN(Yet Another Resource ...

    03_Hadoop MapReduce与Hadoop YARN.zip

    在大数据处理领域,Hadoop MapReduce和YARN是两个至关重要的组件,它们构成了Apache Hadoop生态系统的核心部分。...理解这两者的运作机制对于深入掌握Hadoop生态系统至关重要,也是开发和运维大数据应用的基础。

    006_hadoop中MapReduce详解_3

    "006_hadoop中MapReduce详解_3"可能是指一个系列教程的第三部分,着重讲解MapReduce的核心概念、工作原理以及实际应用。在这个部分,我们可能会探讨更深入的技术细节和优化策略。 MapReduce的工作流程分为两个主要...

Global site tag (gtag.js) - Google Analytics