5.MapRecuce

一、MapReduce特点:

   简化并行计算的编程模型。只需要关心map和reduce两阶段即可,隐藏了很多系细节。

   优点:

    1.相对易于编程(从只需要分开,写map写reduce这个层面来讲,确实易于编程....和高阶工具没法比....)

    2.可扩展性

    3.高容错性(节点挂掉,yarn会调度新的节点来工作)

    4.高吞吐量

 不适用领域:

    1.难以实时计算

    2.不适合流式计算(只能分布式)

    3.不适合DGA计算

 

二、整体流程

 输入  >>  map  >>  shuffle  >>  reduce  >>  输出

 

 

  大致流程:

    1. 每当系统启动一个task任务,整个过程分两个阶段:map阶段和reduce阶段。

    2. map阶段,首先会调用InputFormat(默认TextInputFormat)接口去读取,对文件进行分割,(分割: 统计出来文件各块上的大小,根据总totalSize进行分割,分割多少份可根据用户传参进来,默认一块128M来分。)

      

    3. 

      

 

用java来做一个词频统计:

public class App 
{
    public static void main( String[] args ) throws IOException {
        //  读文件
        //  一行一行分割字符串
        //  在向1个hashMap存放对应的数据
        Map<String,Integer> mp = new HashMap<>();

        RandomAccessFile raf = new RandomAccessFile("d:/zyp/word.txt","rw");
        String line = "";
        while ((line=raf.readLine())!=null){
            String[] wds = line.split(" ");
            for (String word : wds) {
                if (mp.containsKey(word)){
                    mp.put(word,mp.get(word)+1);
                }else {
                    mp.put(word,1);
                }
            }
        }
        raf.close();
        System.out.println(mp);
    }
}

 

 

三、

 

posted on 2021-09-16 00:09  理想三旬_z  阅读(52)  评论(0编辑  收藏  举报

导航