hadoop 中MapReduce工作原理,如何实现文章单词统计,并在linux和Windows系统下运行

MapReduce分布式计算框架作为hadoop中三大核心之一专门用来解决大数据计算,适用于大规模数据处理场景;每个节点处理存储在该节点的数据各司其职,它将大型数据操作作业分解为可以跨服务器集群并行执行的单个任务。每个job包含Map和Reduce两部分,只专注于实现Map和Reduce函数;至于其它的复杂细节,例如如何启动map任务和reduce任务、如何读取文件、如对map结果排序、如何把map结果数据分配给reduce、reduce如何把最终结果保存到文件等等,MapReduce框架都帮我们做好了。
下面来说下简单原理和思想:
首先当要读取一篇文章,会自动分成多个map任务块对文章进行分割,通过什么条件拆分任务块下的单词,可以自己定义,每个map任务读取目标文件后,每读一行就拆分一下单词,并记下来每个单词都出现了一次,重复的单词一样接着又记录出现一次,且每个单词次数都是1;文件的每一行都处理完成后,把单词自动进行排序,完成后用combne进行单词合并统计,单词和次数是以键值对的形式储存;然后shuffle进行数据迁移 ,拉数据统计到新节点,当然过程非常慢  ,相同的键的单词的次数放到List;处理完成后在多个服务器上启动reduce任务,每个reduce获取一部分map的处理结果,最后reduce任务进行汇总统计,输出最终的结果数据

如图
接下来用java代码实现map和reduce
创建myMapper类继承Mapper ,重写map方法

  /**
  *LongWritable偏移量 long,表示该行在文件中的位置,
  *Text在这里就是String类型,
  *后面的Text表示键的输出数据类型是Text,
  *值是LongWritable,对应java中的long类型,表示行号
  */
public class MyMapper  extends Mapper<LongWritable,Text,Text,LongWritable> {
   
  
private LongWritable one = new LongWritable(1);//值为1

    @Override
    protected void map(LongWritable key, Text value, Context context) throws IOException, InterruptedException {
   
        String [] wds =
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值