【大数据】Map-Reduce的讲解

Map-Reduce

Map-Reduce也逐渐成为大数据题目面试的热门,多了解一下也无妨
总结自左神。

我们先来介绍一下哈希函数
哈希函数又叫做散列函数,哈希函数的输入域可以是非常大的范围,但是输出域是固定范围,假设为s.
哈希函数的性质:

  1. 典型的哈希函数都拥有无限的输入值域
  2. 输入值相同时,返回值一样(返回值又叫哈希值)
  3. 输入值不同时,返回值有可能一样,也有可能不一样。
  4. 不同输入值得到的哈希值,虽然会有重复,但是整体均匀的分布在输出域s上(评价哈希函数优劣的关键)

比如 “aaa1”、“aaa2” 、"aaa3"虽然相似,但优秀的哈希函数计算出的哈希值差异巨大。

MD5和SHA1算法都是经典的哈希函数算法。
Map-Reduce和Hadoop逐渐成为面试热门,对Map-Reduce的了解与总结也显得很重要

Map-Reduce

Map-Reduce 分为两个阶段

  1. Map阶段 —把大任务分成子任务

通过哈希函数将任务分成若干的子任务, 同样 哈希值的任务可以分到一个节点上进行处理。在分布式的系统上,一个节点可能是一个机器,也可能是一个计算节点

  1. Reduce阶段 — 子任务并发处理,然后合并结果

对Map阶段得到的结果,再结合用户的要求进行合并。按照结果和要求对子任务得到的总数据进行一定的处理、

Map-Reduce的注意点

Map-Reduce的难点在于工程上的处理
在大型的分布式系统中,每台机器都是一个计算节点。

  1. 在大型的分布式系统上,每一个机器是一个计算节点,如果有机器损坏,上面的数据就会损坏,所以需要 备份。 Map-Reduce产生的文件相当的庞大,可能一个文件就让一台机器的硬盘存不下,这么多文件如何分布式存储呢,这种存储是分布式的存储,所以就需要考虑备份,分布式存储的备份细节,以及容灾策略
  2. 分布式系统上,会分配给不同的机器。不同的机器性能上也不一定相同。机器相同,分配的任务也不会那么的平均,必然会导致会有先后完成。所以要考虑任务策略与任务进度跟踪的细节设计,节点状态的呈现
  3. 分布式系统上,任务都是并行处理的。要是有一个任务失败,还得想办法重新分配这个任务i,所以还有并行的跟踪每一个进程,看进程的完成情况。
  4. 多用户权限等问题

经典的map-reduce统计问题:

用map-reduce方法统计一篇文章每个单词出现的个数

map阶段
文章 -> 预处理(去标点、去连字符) -> 得出只包含完整单词的文本->map阶段{对每个单词生成词频为1的记录,如(“book”,1)、(“bit”,1)} ->通过哈希函数将得到的每一个单词分成若干个子任务(单词相同的记录会被分到一起)

reduce阶段
子任务:

  1. 把每个子任务中相同的记录合并{ 比如 (“map”,101)、(“bit”, 120)};
  2. 再将所有的记录统一合并到一起,就是每种单词的词频统计了。

总结:

Map-Reduce 适合用于对大数据的处理,适合用于数以百万级的网页上的单词统计。因为是并行处理,节省空间,减少时间消耗。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值