阅读更多

3顶
0踩

数据库

原创新闻 Spark与Flink:对比与分析

2015-07-20 15:56 by 副主编 mengyidan1988 评论(0) 有6869人浏览
Spark是一种快速、通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作。用户也可以让Spark保留一个RDD在内存中,使其能在并行操作中被有效的重复使用。Flink是可扩展的批处理和流式数据处理的数据处理平台,设计思想主要来源于Hadoop、MPP数据库、流式计算系统等,支持增量迭代计算。

原理

Spark 1.4特点如下所示:

1.Spark为应用提供了REST API来获取各种信息,包括jobs、stages、tasks、storage info等。
2.Spark Streaming增加了UI,可以方便用户查看各种状态,另外与Kafka的融合也更加深度,加强了对Kinesis的支持。
3.Spark SQL(DataFrame)添加ORCFile类型支持,另外还支持所有的Hive metastore。
4.Spark ML/MLlib的ML pipelines愈加成熟,提供了更多的算法和工具。
5.Tungsten项目的持续优化,特别是内存管理、代码生成、垃圾回收等方面都有很多改进。
6.SparkR发布,更友好的R语法支持。



图1 Spark架构图




图2 Flink架构图




图3 Spark生态系统图

Flink 0.9特点如下所示:
1.DataSet API 支持Java、Scala和Python。
2.DataStream API支持Java and Scala。
3.Table API支持类SQL。
4.有机器学习和图处理(Gelly)的各种库。
5.有自动优化迭代的功能,如有增量迭代。
6.支持高效序列化和反序列化,非常便利。
7.与Hadoop兼容性很好。



图4 Flink生态系统图

分析对比

性能对比

首先它们都可以基于内存计算框架进行实时计算,所以都拥有非常好的计算性能。经过测试,Flink计算性能上略好。

测试环境:
1.CPU:7000个;
2.内存:单机128GB;
3.版本:Hadoop 2.3.0,Spark 1.4,Flink 0.9
4.数据:800MB,8GB,8TB;
5.算法:K-means:以空间中K个点为中心进行聚类,对最靠近它们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。
6.迭代:K=10,3组数据



图5 迭代次数(纵坐标是秒,横坐标是次数)

总结:Spark和Flink全部都运行在Hadoop YARN上,性能为Flink > Spark > Hadoop(MR),迭代次数越多越明显,性能上,Flink优于Spark和Hadoop最主要的原因是Flink支持增量迭代,具有对迭代自动优化的功能。

流式计算比较

它们都支持流式计算,Flink是一行一行处理,而Spark是基于数据片集合(RDD)进行小批量处理,所以Spark在流式处理方面,不可避免增加一些延时。Flink的流式计算跟Storm性能差不多,支持毫秒级计算,而Spark则只能支持秒级计算。

与Hadoop兼容

计算的资源调度都支持YARN的方式

数据存取都支持HDFS、HBase等数据源。

Flink对Hadoop有着更好的兼容,如可以支持原生HBase的TableMapper和TableReducer,唯一不足是现在只支持老版本的MapReduce方法,新版本的MapReduce方法无法得到支持,Spark则不支持TableMapper和TableReducer这些方法。

SQL支持

都支持,Spark对SQL的支持比Flink支持的范围要大一些,另外Spark支持对SQL的优化,而Flink支持主要是对API级的优化。

计算迭代

delta-iterations,这是Flink特有的,在迭代中可以显著减少计算,图6、图7、图8是Hadoop(MR)、Spark和Flink的迭代流程。



图6 Hadoop(MR)迭代流程




图7 Spark迭代流程




图8 Flink迭代流程

Flink自动优化迭代程序具体流程如图9所示。



图9 Flink自动优化迭代程序具体流程

社区支持

Spark社区活跃度比Flink高很多。

总结

Spark和Flink都支持实时计算,且都可基于内存计算。Spark后面最重要的核心组件仍然是Spark SQL,而在未来几次发布中,除了性能上更加优化外(包括代码生成和快速Join操作),还要提供对SQL语句的扩展和更好地集成。至于Flink,其对于流式计算和迭代计算支持力度将会更加增强。无论是Spark、还是Flink的发展重点,将是数据科学和平台API化,除了传统的统计算法外,还包括学习算法,同时使其生态系统越来越完善。

作者:卢亿雷

简介:AdMaster技术副总裁,资深大数据技术专家。关注高可靠、高可用、高扩展、高性能系统服务,关注Hadoop/HBase/Storm/Spark/Flink/ElasticSearch等离线、流式及实时分布式计算技术。

作者:彭远波

简介:AdMaster研发工程师,关注Hadoop/HBase/Spark/Flink等技术。
  • 大小: 39.7 KB
  • 大小: 126.2 KB
  • 大小: 100.7 KB
  • 大小: 81 KB
  • 大小: 15.6 KB
  • 大小: 49 KB
  • 大小: 56.9 KB
  • 大小: 54.8 KB
  • 大小: 85 KB
3
0
评论 共 0 条 请登录后发表评论

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • hadoop之Spark强有力竞争者Flink,Spark与Flink:对比与分析

    hadoop之Spark强有力竞争者Flink,Spark与Flink:对比与分析 Spark是一种快速、通用的计算集群系统,Spark提出的最主要抽象概念是弹性分布式数据集(RDD),它是一个元素集合,划分到集群的各个节点上,可以被并行操作...

  • spark与Flink对比

    spark准确的说是批处理,Spark streaming是微批处理,spark底层都依赖于RDD flink是流式处理,批处理看做是有限的流处理 SQL sparksql支持的更好 flink一般,在完善中 机器学习图计算等 spark有mllib和graphx等模块 ...

  • Spark与Flink的对比

    随着大数据的普及,出现了许多的的流式处理框架,比如我们常用的Spark,Flink,Storm以及Samza,这里主要列举Spark和Flink的区别。 当提及大数据时,我们无法忽视流式计算的重要性,它能够完成强大的实时分析。而...

  • Spark与Flink对比

    Spark缺点 无论是 Spark Streaming还是 Structured Streaming, Spark流处理的实时性还不够,所以无法用在一些对实时性要求很高的流处理场景中。 这是因为 Spark的流处理是基于所谓微批处理( Micro- batch processing)...

  • flink Spark 和 Flink对比

      Apache Spark 是一个通用大规模数据分析引擎。它提出的内存计算概念让大家得以从 Hadoop 繁重的 MapReduce 程序中解脱出来。除了计算速度快、可扩展性强,Spark 还为批处理(Spark SQL)、流处理(Spark ...

  • 大数据处理引擎Spark与Flink对比分析!

    大数据技术正飞速地发展着,催生出一代又一代快速便捷的大数据处理引擎...今天,大圣众包威客平台(www.dashengzb.cn)将从几个项出发着重对比Spark与Flink这两个大数据处理引擎,探讨其两者的区别。 一、Spark与Fl...

  • 深入对比Spark与Flink

    首先,从 MapReduce 框架存在的问题入手,我们知道了 Spark 的主要优点,比如用内存运算来提高性能;提供很多 High-level API;开发者无需用 map 和 reduce 两个操作实现复杂逻辑;支持流处理等等。。 RDD 是整个 ...

  • 大数据处理引擎Spark与Flink对比

    大数据处理引擎Spark与Flink对比 大数据技术正飞速地发展着,催生出一代又一代快速便捷的大数据处理引擎,无论是Hadoop、Storm,还是后来的Spark、Flink。然而,毕竟没有哪一个框架可以完全支持所有的应用场景,也...

  • 触目惊心的汉芯黑幕

     触目惊心的汉芯黑幕/*一下内容是转载揭发者提供给新浪的信,看了以后,让我不知所云.*/ 一、  芯片居然是民工磨出来的! 2002年8月,陈进从美国买来10片MOTO-freescale的56800芯片,找来几个民工将芯片表面的MOTO等字样全部用砂纸磨掉,然后找浦东的一家公司将表面光滑的芯片打上“汉芯一号”字样,并加上汉芯的LOGO。虚假的DSP芯片磨好后,陈进通过种种关系,加上了“由国内

  • 我开发的XLibrary资料收集管理程序出炉。请大家近来瞅瞅!欢迎排砖!

    这个软件本来是从2002年开始开发的,一直以来就是想自己用这方便。后用的朋友说有潜力,所以,我就在有时间的情况下慢慢完善。可以说是边用编写。功能上基本上涵盖了市面上的同类软件。近期打算发布,希望大家给与意见或建议!谢谢啦!~软件界面:http://blog.csdn.net/images/blog_csdn_net/friecin/111045/o_Untitled-1.jpg......http

  • AnsiString 使用大全

    // coding by Friecin //Ansistring 转 char void __fastcall TForm1::Button1Click(TObject *Sender) {     AnsiString Test = "哈哈";     char *chr = Test.c_str(); }     //char转Ansistring

  • 开发QQ小强智能聊天的基本原理

    QQ小强,基本原理就是有一个根据汉语语法规则的对照表。例如,你说:"去死吧",在程序中就会在对照表中找到与"死"有关的记录,然后对比"去死",确认与"去死"相关的记录,随机找出一条(这样对话就不会重复)。如果句子过长,例如,"我今天很不开心",找出句子中的"主谓宾",这将语句分为:"我","不","开心",逐一组合与答复对应表进行匹配,再将初步筛选的记录针对"我不开心"进行最近似比较,最终确认

  • 谈谈“极限编程(Extreme Programming)”

    极限编程Extreme Programming审校 BigMac[AKA]译者 march-bird lucian yjf taopin wl jazz韩伟 nullgate Simon[AKA]As we have explored in several issues of eAD, the two most pressing issues in information technolo

  • 编程规范-程序员们都应该这样写代码

    编程规范-程序员们都应该这样写代码基本要求1.1 程序结构清析,简单易懂,单个函数的程序行数不得超过100行。1.2 打算干什么,要简单,直接了当,代码精简,避免垃圾程序。1.3 尽量使用标准库函数和公共函数。1.4 不要随意定义全局变量,尽量使用局部变量。1.5 使用括号以避免二义性。2.可读性要求2.1 可读性第一,效率第二。2.2 保持注释与代码完全一致。2.3 每个源程序文件,

  • (补课)borland c++ bulder的文件操作总结-2

    二、直接I/O文件操作   这是C提供的另一种文件操作,它是通过直接存/取文件来完成对文件的处理,而上篇所说流式文件操作是通过缓冲区来进行;流式文件操作是围绕一个FILE指针来进行,而此类文件操作是围绕一个文件的"句柄"来进行,什么是句柄呢?它是一个整数,是系统用来标识一个文件(在WINDOWS中,句柄的概念扩展到所有设备资源的标识)的唯一的记号。此类文件操作常用的函数如下表,这些函数及其所用的一

  • (补课)borland c++ bulder的文件操作总结-1

    基于C的文件操作   在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。 一、流式文件操作   这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下: typedef struct { int level; /* fill/empty level of buffer */ unsigned flags; /* File

  • (补课)borland c++ bulder的文件操作总结-3

    在C++中,有一个stream这个类,所有的I/O都以这个"流"类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符: 1、插入器(  向流输出数据。比如说系统有一个默认的标准输出流(cout),一般情况下就是指的显示器,所以,cout2、析取器(>>)   从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表

  • (补课)borland c++ bulder的文件操作总结-4

    在BCB中也提供了文件操作的函数,这些函数的功能和前面所介绍的大致相同,但这类函数和BCB关系紧密,能使用BCB中的AnsiString等数据类型,在BCB中用这种方式的文件操作是最方便的,下面我就把这种文件操作详细介绍。   在BCB提供的这组文件操作函数中,可分为三种类型,就是:1、文件名函数,2、文件管理函数;3、文件I/O函数。 1、文件名函数   文件名函数可以对文件的名称、所在

Global site tag (gtag.js) - Google Analytics