加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

比拼生态和未来,Spark和Flink哪家强?

发布时间:2018-10-17 08:59:53 所属栏目:教程 来源:赵慧
导读:【51CTO技术沙龙】10月27日,让我们共同探索AI场景化应用实现之道 概 况 Spark 是最活跃的 Apache 项目之一。从 2014 年左右开始得到广泛关注。Spark 的开源社区一度达到上千的活跃贡献者。最主要推动者是 Databricks,由最初的 Spark 创造者们成立的公司。
副标题[/!--empirenews.page--] 【51CTO技术沙龙】10月27日,让我们共同探索AI场景化应用实现之道

概 况

Spark 是最活跃的 Apache 项目之一。从 2014 年左右开始得到广泛关注。Spark 的开源社区一度达到上千的活跃贡献者。最主要推动者是 Databricks,由最初的 Spark 创造者们成立的公司。今年 6 月的 Spark+AI 峰会参加人数超过 4000。 Spark 因为在引擎方面比 MapReduce 全面占优,经过几年发展和 Hadoop 生态结合较好,已经被广泛视为 Hadoop MapReduce 引擎的取代者。

比拼生态和未来,Spark和Flink哪家强?

Flink 也是 Apache 顶级项目,创始者们成立了 Data Artisans。社区规模还无法和 Spark 相比。不过在业界,特别是流处理方面,有不错的口碑。在大规模流处理方面走在最前沿,也是需求最强的几个美国公司,包括 Netflix、 LinkedIn、Uber、Lyft 等,除 LinkedIn 有自己的 Samza 外,都已经采用 Flink 作为流处理引擎或者有了较大投入。

阿里集团在 Flink 社区也有较大影响力。最近 Flink 1.3 到 1.5 里都有几个重磅功能是阿里和 Data Artisans 合作或者独立开发的。阿里还有可能是世界上最大的流计算集群,也是在 Flink 的基础上开发的。

Unified Analytic platform

最近的 Spark+AI 峰会上, Databricks 主打的主题是统一分析平台(Unified Analytics Platform)。三大新发布:Databricks delta、Databricks Runtime for ML和 ML flow,都是围绕这一主题。随着近年来机器学习(包括深度学习)在数据处理中占比越来越高,可以说 Databricks 又一次把握住了时代的脉搏。

统一分析平台回应了 Spark 的初衷。经过几年的探索,对初始问题,即用户可以在一个系统里解决绝大部分大数据的需求,有了一个比较明确具体的解决方案。

不过有意思的是可以看出 Databricks 在 AI 方面策略的转变。在深度学习流行前,Spark 自带的 MLLib 功能上应该是够用的,但是可能是由于兼容性原因并没有取得预期中的广泛采用。

对深度学习的新宠 TensorFlow,Spark 曾经推出过 TensorFrames 和 Spark 引擎做了一些集成。结果应该不是很成功,可能还没有 Yahoo 从外面搭建的 TensorFlowOnSpark 影响力大。

从这次来看,Spark 转向了集成的策略。Databricks Runtime for ML 实际上就是预装了各个机器学习框架,然后支持在 Spark 任务里启动一个比如 TensorFlow 自己的集群。Spark 引擎方面做的主要改进就是 gang scheduling,即支持一次申请多个 executor 以便 TensorFlow 集群能正常启动。

MLFlow 更是和 Spark 引擎无关。作为一个工作流工具,MLFlow 的目标是帮助数据科学家提高工作效率。主要功能是以项目为单位记录和管理所做的机器学习试验,并支持分享。设计要点是可重复试验,以及对各种工具的灵活易用的支持。看起来 Spark 暂时在作为 AI 引擎方面可能没什么大动作了。

Flink 的目标其实和 Spark 很相似。包含 AI 的统一平台也是 Flink 的发展方向。Flink 从技术上也是可以支持较好的机器学习集成和整条链路的,而且有一些大规模线上学习的使用实例。不过看起来在现阶段 Flink 这方面的平台化还没有 Spark 成熟。值得一提的是 Flink 由于流处理引擎的优势,在线上学习方面可能能支持得更好一些。

数据使用者

产品和生态归根结底是要解决大数据使用者的问题,从数据中产生价值。了解数据的使用者和他们的需求可以帮助我们在在讨论生态的各方面时有一个比较清晰的脉络。

数据相关的工作者大致可以分为以下角色。实际情况中一个组织里很可能几个角色在人员上是重合的。各个角色也没有公认的定义和明确的界限。

  • 数据采集:在产品和系统中合适的地方产生或收集数据发送到数据平台。
  • 平台:提供数据导入,存储,计算的环境和工具等等。
  • 数据工程师:使用数据平台把原始数据加工成可以供后续高效使用的数据集。把分析师和数据科学家创建的指标和模型等等生产化成为高效可靠的的自动处理。
  • 数据分析师和数据科学家(关于这两者的异同有很多讨论。感兴趣的可以自行搜索。https://www.jianshu.com/p/cfd94d9e4466 这里的译文可以提供一个视角):为数据赋予意义,发现内含的价值。 下文再不特别区分的地方统称为数据分析。
  • 产品经理,管理和决策层:根据以上产生的数据调整产品和组织行为。

这些构成了一个完整的环。上面的顺序是数据流动的方向,而需求的驱动是反过来的方向。

本文所说的 Spark 和 Flink 的生态主要是对应到数据平台这一层。直接面向的用户主要是数据工程师、数据分析师和数据科学家。好的生态能够大大简化数据平台和数据工程师的工作,并使得数据分析师和数据科学家更加自主化同时提高效率。

开发环境

API

从 API 上来看,Spark 和 Flink 提供的功能领域大致相当。当然具体看各个方向支持的程度会有差异。总体来看 Spark 的 API 经过几轮迭代,在易用性,特别是机器学习的集成方面,更强一些。Flink 在流计算方面更成熟一些。

比拼生态和未来,Spark和Flink哪家强?

支持的语言也大致相当。Spark 发展的时间长一些还是有优势,特别是数据分析常用的 Python 和 R。

比拼生态和未来,Spark和Flink哪家强?

Connectors

有了 API,再有数据就可以开工了。Spark 和 Flink 都能对接大部分比较常用的系统。如果暂时还没有支持的,也都能比较好地支持自己写一个 connector。

https://databricks.com/spark/about

https://www.slideshare.net/chobeat/data-intensive-applications-with-apache-flink

集成开发工具

这方面数据工程师和数据分析的需求有一些不同。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读