过去对于需要大量处理负载的工作,我会使用Scala和并行集合。
我目前正在尝试Spark并发现它很有趣,但是学习曲线陡峭。我发现开发速度较慢,因为必须使用简化的Scala API。
在决定是否使用Spark之前,我需要确定什么?
我尝试实施的当前Spark作业如果数据处理大约5GB。这个数据不是很大但是我正在运行这个数据的笛卡尔积,这就产生了超过50GB的数据。但也许使用Scala并行集合将同样快,我知道从我的角度来看,实现这项工作的开发时间会更快。
那么在决定使用Spark之前我应该考虑哪些因素?
答案 0 :(得分:2)
Spark相对于传统的高性能计算框架(例如MPI)的主要优势是容错,易于集成到Hadoop堆栈以及非常活跃的邮件列表http://mail-archives.apache.org/mod_mbox/spark-user/。让分布式容错的内存计算有效地工作并不容易,而且它绝对不是我想要自己实现的东西。在原始论文中对问题的其他方法进行了审核:https://www.usenix.org/system/files/conference/nsdi12/nsdi12-final138.pdf。
但是,当我的工作受I / O限制时,我仍然倾向于主要依赖猪脚本,因为猪更成熟,我认为脚本更容易编写。当猪脚本不会削减它时(例如迭代算法,图形,大量连接),Spark非常棒。
现在,如果您只获得50g数据,那么您可能不关心分布式容错计算(如果您的所有内容都在一个节点上,那么那里没有框架)可以从节点故障中拯救你的世界:))所以并行集合可以正常工作。