很多涉及或者并行式机器学习工作或者大数据处理的岗位,基本都会有要求会使用Hadoop/Hive/Spark/Storm这几个开源工具,那么针对其中比较主流的Spark,我在这里做一个比较简单地总结。
什么是Spark?
在技术不断告诉更迭的程序圈,一个新的工具的出现与流行必然是因为它满足了很大一部分人长期未被满足的需求,或是解决了一个长期让很多人难受的一个痛点。
以上这个定理提醒我们,要学一个新技术,就有必要先了解这门技术出现的意义。这样,我们才能更好明白:它是应用到什么场景的,相比同类工具它的优缺点是什么,因此什么时候用它比其它工具好或差等等等等。只有至少理解了这些,才好说自己是真正掌握了这个工具,否则只能说是浅尝辄止,半生不熟。
Spark,最早是2009年Berkeley大学AMPLab实验室开发的一个分布式、内存式、流式计算引擎,初衷为了可以高速地进行大量的数据的一系列处理工作。后来项目给了Apache基金会运营。14年的Databricks团队使用Spark刷新数据排序世界记录,可算是让Spark一战成名。 (参考 wiki-Spark)
为什么要用Spark?
说到底,Spark的就是一个非常非常“快”的大数据计算引擎,可以高速地完成大量数据的复杂处理任务。
而我们用Spark,也是因为它的快!它非常快,以至于我们可以在很短的时间内完成原来需要很长时间完成的相同量级的任务。那它具体快到什么程度?Spark为什么可以这么快呢?我们来看看它的wiki说明:
相对于Hadoop的MapReduce会在运行完工作后将中介数据存放到磁盘中,Spark使用了内存内运算技术,能在数据尚未写入硬盘时即在内存内分析运算。Spark在内存内运行程序的运算速度能做到比Hadoop MapReduce的运算速度快上100倍,即便是运行程序于硬盘时,Spark也能快上10倍速度。Spark允许用户将数据加载至集群内存,并多次对其进行查询,非常适合用于机器学习算法。