# 大数据技术之Hadoop(MapReduce)

# Hadoop(MapReduce)

1.MapReduce

是一个分布式运算程序的编程框架

2.优点:

MapReduce 易于编程,良好的扩展性,高容错性,适合PB级以上海量数据的离线处理

3.缺点:

不擅长实时计算,不擅长流式计算,
    1)不擅长DAG(有向无环图)计算
    流式计算的输入数据是动态的,而MapReduce的输入数据集是静态的,不能动态变化。
    2)不擅长DAG(有向无环图)计算
    多个应用程序存在依赖关系,后一个应用程序的输入为前一个的输出。
    在这种情况下,MapReduce并不是不能做,而是使用后,
    每个MapReduce作业的输出结果都会写入到磁盘,会造成大量的磁盘IO,导致性能非常的低下。

4.MapReduce核心编程思想:

(1)分布式的运算程序往往需要分成至少2个阶段。

(2)第一个阶段的MapTask并发实例,完全并行运行,互不相干。

(3)第二个阶段的ReduceTask并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask并发实例的输出。

(4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。

总结:分析WordCount数据流走向深入理解MapReduce核心思想。

(1)需求:统计其中的每一个单词出现的总次数
    查询结果:a-p 一个文件
                      q-z 一个文件
              
(2)通过传入的数据:进入第一个阶段MapTask阶段,有多个MapTask阶段,完全并发运行,互不相干。
在MapTask里:

 1)读数据,并按行处理
 2)按空格切分行内单词
 3)KV键值对(单词,1)
 4)将所有的KV键值对中单词,按照单词首字母,分成2个分区溢写到磁盘
     注:分区1(a-p)
          分区2(q-z)
                
(3)接下来第二个阶段ReduceTask,可以有多个,并发实例互不相干,但是他们都依赖与上一个阶段的所有MapTask并发实例的输出。
在ReduceTask里:

1)第一个ReduceTask对接每个MapTask的分区1(a-p),统计a-p开头的单词,输出结果到文件
2)第二个ReduceTask对接每个MapTask的分区2(q-z),统计q-z开头的单词,输出结果到文件
                
(4)MapReduce编程模型只能包含一个Map阶段和一个Reduce阶段,如果用户的业务逻辑非常复杂,那就只能多个MapReduce程序,串行运行。

5.查找WordCount源码

  1)进入虚拟机
  2)cd /opt/module/hadoop-3.1.3/share/hadoop/mapreduce
  3)里面有:hadoop-mapreduce-examples-3.1.3.jar
  4)下载到本地:sz hadoop-mapreduce-examples-3.1.3.jar 
注:rz,sz是Linux/Unix同Windows进行ZModem文件传输的命令行工具
       sz:将选定的文件发送(send)到本地机器
       rz:运行该命令会弹出一个文件选择窗口,从本地选择文件上传到Linux服务器

 

public class WordCountMapper extends Mapper<LongWritable, Text,Text, IntWritable> {}
//参数分析:LongWritable:偏移量(这里用LongWriteable写死,因为底层也是LongWri
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值