MapReduce(一):源起Unix的设计思想

Dlimeng
优质创作者: 人工智能技术领域
领域专家: 大数据技术领域
2022-11-05 21:57:23

作为一个框架,MapReduce 设计的一个重要思想,就是让使用者意识不到“分布式”这件事情本身的存在。从设计模式的角度,MapReduce 框架用了一个经典的设计模式,就是模版方法模式。而从设计思想的角度,MapReduce 的整个流程,类似于 Unix 下一个个命令通过管道把数据处理流程串接起来。MapReduce 的数据处理设计很直观,并不难理解。Map 帮助我们解决了并行在很多台机器上处理互相之间没有依赖关系的数据;而 Reduce 则用来处理互相之间有依赖关系的数据,我们可以通过 MapReduce 框架自带的 Shuffle 功能,通过排序来根据设定好的 Key 进行分组,把相同 Key 的数据放到同一个节点上,供 Reduce 处理。而作为 MapReduce 框架的使用者,你只需要实现 Map 和 Reduce 两个函数,并且指定输入输出路径,MapReduce 框架就会帮助你完成整个数据处理过程,不需要你去关心整个分布式集群的存在。另外,不仅仅是 MapReduce 的用户,只需要考虑“单一职责”,实现自己的 Map 和 Reduce 函数就好了。即使作为 MapReduce 的框架实现,也能够把数据读取、数据输出、网络传输、数据混洗等模块单独拆出来,实现起来也很容易。Map 和 Reduce 这两个函数虽然非常简单,但是对于输入输出的格式,以及内部具体的逻辑代码没有任何限制,是完全灵活的,足以完成从日志分析、网页处理、数据统计,乃至于搜索引擎的索引生成工作。

...全文
39 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

12,271

社区成员

发帖
与我相关
我的任务
社区描述
有大数据和AI的故事
大数据人工智能开源 个人社区 天津·武清区
社区管理员
  • 李孟聊人工智能
  • Somnus_小凯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧