hadoop之MapReduse_02

MapReduse(分布式计算框架)

  • 一、MapReduce 并行计算
  • 二、Hadoop -MapReduce设计构思
  • 三、MapReduce 编程
      • 基础pom文件配置(idea开发)

一、MapReduce 并行计算

HDFS存储数据时对大于128M的数据会进行数据切分,每128M一个数据块,数据块会分散、分布存储到HDFS。

MapReduce在进行计算前会复制计算程序,每个数据块会分配一个独立的计算程序副本(MapTack)。计算时多个数据块几乎同时被读取并计算,但是计算程序完全相同。最终将各个计算程序计算的结果进行汇总(Reduce来汇总)
hadoop之MapReduse_02_第1张图片

二、Hadoop -MapReduce设计构思

MapReduce是一个分布式运算程序的编程框架,核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在Hadoop集群上。
既然是做计算的框架,那么表现形式就是有个输入(input),MapReduce操作这个输入(input),通过本身定义好的计算模型,得到一个输出(output)。
Hadoop MapReduce构思体现在如下的三个方面:

  • 如何应对大数据处理:分而治之
    对相互间不具有计算依赖关系的大数据,实现并行最自然的办法就是采取分而治之的策略。并行计算的第一个重要问题是如何划分计算任务或者计算数据以便对划分的子任务或数据块同时进行计算。不可分拆的计算任务或相互间有依赖关系的数据无法进行并行计算!

  • 构建抽象模型:Map和Reduce
    MapReduce借鉴了函数式语言中的思想,用Map和Reduce两个函数提供了高层的并行编程抽象模型。
    Map: 对一组数据元素进行某种重复式的处理;
    Reduce: 对Map的中间结果进行某种进一步的结果整理。
    MapReduce中定义了如下的Map和Reduce两个抽象的编程接口,由用户去编程实现:
    map: [k1,v1] → [(k2,v2)]
    reduce: [k2, {v2,…}] → [k3, v3]
    hadoop之MapReduse_02_第2张图片
    WordCount体现每个KeyValue
    hadoop之MapReduse_02_第3张图片
    Map和Reduce为程序员提供了一个清晰的操作接口抽象描述。通过以上两个编程接口,大家可以看出MapReduce处理的数据类型是键值对。

  • 统一构架,隐藏系统层细节
    如何提供统一的计算框架,如果没有统一封装底层细节,那么程序员则需要考虑诸如数据存储、划分、分发、结果收集、错误恢复等诸多细节;为此,MapReduce设计并提供了统一的计算框架,为程序员隐藏了绝大多数系统层面的处理细节。
    MapReduce最大的亮点在于通过抽象模型和计算框架把需要做什么(what need to do)与具体怎么做(how to do)分开了,为程序员提供一个抽象和高层的编程接口和框架。程序员仅需要关心其应用层的具体计算问题,仅需编写少量的处理应用本身计算问题的程序代码。如何具体完成这个并行计算任务所相关的诸多系统层细节被隐藏起来,交给计算框架去处理:从分布代码的执行,到大到数千小到单个节点集群的自动调度使用。

三、MapReduce 编程

基础pom文件配置(idea开发)


4.0.0

cn.itcast
mapreduce
1.0-SNAPSHOT

    
        cloudera
        https://repository.cloudera.com/artifactory/cloudera-repos/
    


    
        org.apache.Hadoop
        Hadoop-client
        2.6.0-mr1-cdh5.14.0
    
    
        org.apache.Hadoop
        Hadoop-common
        2.6.0-cdh5.14.0
    
    
        org.apache.Hadoop
        Hadoop-hdfs
        2.6.0-cdh5.14.0
    

    
        org.apache.Hadoop
        Hadoop-mapreduce-client-core
        2.6.0-cdh5.14.0
    
    
        junit
        junit
        4.11
        test
    
    
        org.testng
        testng
        RELEASE
    


    
        
            org.apache.maven.plugins
            maven-compiler-plugin
            3.0
            
                1.8
                1.8
                UTF-8
            
        

        
            org.apache.maven.plugins
            maven-shade-plugin
            2.4.3
            
                
                    package
                    
                        shade
                    
                    
                        true
                    
                
            
        

    

你可能感兴趣的:(MapReduce,hadoop)