开发者社区> 问答> 正文

Apache Flink与Apache Spark可以作为大规模机器学习的平台吗?

Apache Flink与Apache Spark可以作为大规模机器学习的平台吗?

谁能将Flink和Spark作为机器学习的平台进行比较?哪种算法对迭代算法更好?

展开
收起
问问小秘 2020-05-19 13:21:40 1160 0
1 条回答
写回答
取消 提交回答
  • Apache Spark通过循环展开执行迭代。这意味着对于每次迭代,计划并执行一组新的任务/操作员。Spark非常高效地执行了此任务,因为它非常擅长进行低延迟的任务调度(顺便说一句,Spark流使用相同的机制),并且在迭代过程中将数据缓存在内存中。因此,每次迭代都基于保存在内存中的前一次迭代的结果。在Spark中,迭代被实现为常规的for循环(请参阅Logistic回归示例)。

    Flink执行具有循环数据流的迭代程序。这意味着数据流程序(及其所有运算符)仅被调度一次,并且数据从迭代的尾部反馈到其头部。基本上,数据在一次迭代中围绕运算符循环流动。由于运算符仅被调度一次,因此他们可以在所有迭代中维持状态。Flink的API提供了两个专用的迭代运算符来指定迭代:
    1)批量迭代,在概念上类似于循环展开
    2)增量迭代。增量迭代可以显着加快某些算法的速度,因为随着迭代次数的增加,每次迭代的工作量都会减少。例如,增量迭代PageRank实现的第10个迭代比第一个迭代快得多。


    根据我在ML和数据流处理方面的经验。Flink和Spark擅长不同领域,在ML场景中它们可以互补。Flink可以胜任在线学习任务,其中我们通过消耗新事件并同时进行实时推断来不断更新局部模型。并且部分模型还可以合并基于Spark脱机的历史数据构建的预训练模型。

    2020-05-19 13:29:32
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Apache Flink技术进阶 立即下载
Apache Spark: Cloud and On-Prem 立即下载
Hybrid Cloud and Apache Spark 立即下载

相关镜像