最近,我正在学习可扩展的机器学习,Spark MLlib是我学会使用的第一个工具。我已经成功实现了一些简单的机器学习任务,例如使用Spark MLlib进行线性回归,并且它们都能在我的笔记本电脑上顺利运行。
但是,我想知道,该程序未部署在群集中,而是在单个节点上运行。在这种情况下它仍然没有分布吗?如果是分布式的,Spark是否会自动运行多线程任务?
有人可以告诉我Spark MLlib使可扩展的机器学习实现变得更容易的原因吗?
答案 0 :(得分:1)
好吧,这取决于您对“分布式”的定义。
Spark MLlib是一个框架,该框架允许(但不能保证)编写能够分发的代码。它处理了分布式计算附带的许多分发和同步问题。因此,是的,它使程序员编写和部署分布式算法更加简单。
Spark使可扩展ML更容易的原因是,您可以将更多的精力放在算法上,而不是因为数据竞争以及如何将代码分配到不同的节点而陷入困境,同时考虑到数据的局部性等。由SparkContext / RDD类处理。
话虽如此,Spark编码并不能保证将分配到最佳状态。仍然需要考虑其他因素,例如数据分区和并行性级别。