Ale*_*der 23 machine-learning apache-spark apache-flink
有人可以比较Flink和Spark作为机器学习的平台吗?哪种迭代算法可能更好?链接到一般的Flink vs Spark讨论:Apache Spark和Apache Flink有什么区别?
Fab*_*ske 24
免责声明:我是Apache Flink的PMC成员.我的回答集中在Flink和Spark中执行迭代的差异.
Apache Spark通过循环展开来执行迭代.这意味着每次迭代都会调度和执行一组新的任务/运算符.Spark非常有效,因为它非常擅长低延迟任务调度(相同的机制用于Spark流btw.)并在迭代中缓存内存中的数据.因此,每次迭代对前一次迭代的结果进行操作,该结果保存在存储器中.在Spark中,迭代实现为常规for循环(请参阅Logistic回归示例).
Flink以循环数据流的形式执行迭代程序.这意味着数据流程序(及其所有运算符)只被调度一次,数据从迭代的尾部反馈到它的头部.基本上,数据在迭代中围绕运算符循环流动.由于运算符只是安排一次,因此它们可以在所有迭代中保持状态.Flink的API提供了两个专用的迭代运算符来指定迭代:1)批量迭代,在概念上类似于循环展开,以及2)delta迭代.Delta迭代可以显着加速某些算法,因为每次迭代中的工作随着迭代次数的增加而减少.例如,delta迭代PageRank实现的第10次迭代比第一次迭代完成得快得多.
| 归档时间: |
|
| 查看次数: |
3575 次 |
| 最近记录: |