随着人工智能的兴起,大数据又火了起来,大数据的方法论的本质是众人拾柴火焰高,从算法角度来讲,就是分治法。
例如普通的合并排序。
就是分治法的体现
分三个部分,第一分,Devide,将总的任务分成多个分任务。
第二,处理,Concur,每个人将分给自己的任务做完,输出结果
第三,合,Merge,每个人将任务结果汇总,得到最终结果。
对于大量数据来讲,数据的处理从单线程模型
到多线程模型
最终到多进程模型,也即Map-Reduce的基本思路
首先是分,Split,然后是处理,Map,然后是合并,Reduce,最终输出结果。
对于多进程来讲,需要一个控制器和调度器来控制多个进程的合作,所以有了Map-Reduce的两个版本的框架,以及后来有了Spark。
网页的爬取系统Nutch就是一个使用了Map-Reduce的典型框架。
对于如图的一个网页体系,对它进行广度优先搜索
然而这个算法本身是并行不起来的。因为广度优先搜索的时候,需要对节点着色,保证同一个节点只能抓取一次。
为了保证能够并行起来,因而大数据算法中的一个常见的做法是,先分开做,大家做重了没关系,因为数据量大,不需要那么准确,多一篇少一篇无所谓,而且我们可以后期的去重。