Map Reduce 是 Google 的三驾马车之一,用于进行分布式计算。
其实 Map Reduce 的基本思想很简单,就是通过 Map 这个步骤使用多台机器并行,将所有的数据都整理为<Key, Value>的二元组,然后在 Reduce 操作之前,系统会按照 Key 的不同,将不同的 Key 分给不同的机器进行处理。
比如可以简单地根据 hash ( key )%机器数的方式来进行数据分配(这个过程叫做 shuffle )。接下来,每台机器拿到数据之后,进行 reduce 合并统计的操作,将同一个 key 的数据进行处理。最终得到了每个 key 的处理结果。
这个知识点在《海量数据处理算法与面试题全集》中免费开放,想详细学习的话可以去听一下。
接下来我们继续说,Map reduce 系统有什么好处呢?
其实 Map Reduce 并没有结余实际上的计算时间总和,但是如果你现在有很多的计算资源(很多台机器),你可以通过 Map Reduce 的框架利用多台机器同时计算,来优化性能进行提速。Map Reduce 是一套通用的分布式计算框架。这样,对于很多类似的问题,工程师并不需要每次都去自己构思如何使用多台机器优化计算的算法,只需要套用这个通用框架,就可以快速的解决问题。(比如:矩阵分解问题,Page Rank 搜索排序算法)
你可能会有疑问,为什么一定要使用 Map Reduce 来分割文件呢,单纯的分割文件分别统计是否可行呢?
其实是不行的。单纯的将文件 1 丢给机器 1,文件 2 丢给机器 2,分别统计 Top K 之后再合并,这种方法是不行的。因为最高频的那一项可能分别出现在文件 1 和文件 2,这样就相当于降低了其出现的频率,可能造成统计结果不对。
Map Reduce 是大数据职位面试的敲门砖,如果你的目标岗位是 Software Development Engineer,Data Engineer,Data Scientist,学会 MapReduce 是非常必要的。
实际上,Map Reduce 只是海量数据处理类问题其中之一。海量数据类处理问题,是面试中非常高频的一类问题。但是在没有任何处理经验的情况下,面试者往往很难回答上来。
学好海量数据处理,你需要学会:
算法方面:
数据结构方面:
以上的知识点,你了解多少呢?
如果这些名词对你来说还很陌生,不用着急~
《海量数据处理算法与面试题全集》这门原价$199 的课程,现在免费获得!
参与方式:
戳我免费试听后,添加泡芙微信 jiuzhang10,回复 [ V2EX ] +试听报名截图即可免费获得本课程。
参与条件:
九章新用户(未购买过九章课程都算新用户哦~)