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); } }
三、
本文来自博客园,作者:{理想三旬},转载请注明原文链接:{https://www.cnblogs.com/zyp0519/}