当前位置: 首页 > 编程日记 > 正文

开源的Blink和Spark3.0,谁将称霸大数据领域?

640?wx_fmt=jpeg


来源 | 大数据技术与架构(import_bigdata)

作者 | 王知无,阿里巴巴高级大数据开发工程师,先后在京东、阿里等大型互联网公司从事大数据平台、实时计算和离线计算中间件和业务平台开发。


2018和2019年是大数据领域蓬勃发展的两年,自2019年伊始,实时流计算技术开始步入普通开发者视线,各大公司都在不遗余力地试用新的流计算框架,实时流计算引擎Spark Streaming、Kafka Streaming、Beam和Flink持续火爆。


最近Spark社区,来自Databricks、NVIDIA、Google以及阿里巴巴的工程师们正在为Apache Spark 3.0添加原生的GPU调度支持,参考(SPARK-24615和SPARK-24579)该方案将填补了Spark在GPU资源的任务调度方面的空白,极大扩展了Spark在深度学习、信号处理的应用场景。


与此同时,2019年1月底,阿里巴巴内部版本Blink正式开源!一石激起千层浪,Blink开源的消息立刻刷爆朋友圈,整个大数据计算领域一直以来由Spark独领风骚,瞬间成为两强争霸的时代。那么未来Spark和Blink的发展会碰撞出什么样的火花?谁会成为大数据实时计算领域最亮的那颗星?


我们接下来看看Spark和Flink各自的优劣和主要区别。


底层机制


Spark的数据模型是弹性分布式数据集 RDD(Resilient Distributed Dattsets),这个内存数据结构使得spark可以通过固定内存做大批量计算。初期的Spark Streaming是通过将数据流转成批(micro-batches),即收集一段时间(time-window)内到达的所有数据,并在其上进行常规批处,所以严格意义上,还不能算作流式处理。但是Spark从2.x版本开始推出基于 Continuous Processing Mode的 Structured Streaming,支持按事件时间处理和端到端的一致性,但是在功能上还有一些缺陷,比如对端到端的exactly-once语义的支持。


640?一个典型的Spark DAG示意图


Flink是统一的流和批处理框架,基本数据模型是数据流,以及事件(Event)的序列,Flink从设计之初秉持了一个观点:批是流的特例。每一条数据都可以出发计算逻辑,那么Flink的流特性已经在延迟方面占得天然优势。


640?wx_fmt=png一个典型的Flink workflow示意图



Flink还提供了一个独特的概念叫做有状态的计算,它被用来处理一种情况:数据的处理和之前处理过的数据或者事件有关联。比如,在做聚合操作的时候,一个批次的数据聚合的结果依赖于之前处理过的批次。早期的Spark用户会经常受此类问题所困扰,直到Structured Streaming的出现才得已解决。


Flink从一开始就引入了state的概念来处理这种问题。为状态计算提供了一个通用的解决方案。


周边生态


在大数据领域,任何一个项目的火爆都被离不开完善的技术栈,Spark和Flink都基于对底层数据和计算调度的高度抽象的内核上开发出了批处理,流处理,结构化数据,图数据,机器学习等不同套件,完成对绝大多数数据分析领域的场景的支持,意图统一数据分析领域。


Flink和Spark都是由Scla和Java混合编程实现,Spark的核心逻辑由Scala完成,而Flink的主要核心逻辑由Java完成。在对第三方语言的支持上,Spark支持的更为广泛,Spark几乎完美的支持Scala,Java,Python,R语言编程。

640?640?wx_fmt=png

Spark周边生态(图来源于官网)


与此同时,Flink&Spark官方都支持与存储系统如HDFS,S3的集成,资源管理/调度Yarn,Mesos,K8s等集成,数据库Hbase,Cassandra,消息系统Amazon,Kinesis,Kafka等。


640?wx_fmt=png

Flink周边生态(图来源于官网)


在最近的Spark+AI峰会上,Databricks公司推出了自己的统一分析平台(Unified Analytics Platform),目标是使户在一个系统里解决尽可能多的数据需求。Flink的目标和Spark一致,包含AI的统一平台也是Flink的发展方向,从技术上来看,Flink是完全有能力支持对机器学习和深度学习的集成,但目前来看,Flink仍有很长的路要走。


未来趋势


2018年是机器学习和深度学习元年,ML在数据处理领域占比越来越重。Spark和Flink在做好实时计算的同时,谁能把握住这次机会就可以在未来的发展中占得先机。另外随着5G的发展,网络传输不再是瓶颈之时,IOT的爆发式发展也将会是实时计算需求爆发之时,届时Flink在流式计算中的天然优势将发挥的淋漓尽致,Blink的开源和阿里巴巴对Blink的加持无疑又给Flink未来的发展注入一针强心剂。


总结


Spark和Flink发展至今,基本上已经是实时计算领域的事实标准。两者在易用性和生态系统建设上都投入了大量的资源,是现在和未来一段时间内大数据领域最有有力的竞争者。二者的发展是竞争中伴随着互相促进,在与机器学习集成和统一处理平台的建设上双方各有优劣,谁能尽早补齐短板就会在未来的发展中占得优势。对于普通大数据领域的开发者而言,当下也是最好的时代,可以见证两大数据引擎的蓬勃发展,除了学习别无选择,这何尝不是是一种幸运?


参考目录:

http://datastrophic.io/core-concepts-architecture-and-internals-of-apache-spark

https://databricks.com/spark/about

https://ci.apache.org/projects/flink/flink-docs-stable/release-notes/flink-1.7.html

http://spark.apache.org

CSDN原文链接:

https://blog.csdn.net/u013411339/article/details/88544359


在线分享会

周五晚8点

拿下斯坦福和剑桥双offer,00后的算法学习之路


640?wx_fmt=png

推荐荐阅读:


  • Google又逆天:语音输入离线实时输出文字,仅占80MB!然而……

  • 西工大开源拥挤人群数据集生成工具,大幅提升算法精度 | CVPR 2019

  • R和Python谁更好?这此让你「鱼与熊掌」兼得

  • 10行Python,搭建一个游戏AI | 视频教程

  • Node.js 与 JavaScript 基金会正式合并,JS 喜提新主场

  • 云计算时代运维的出路在哪?

  • 30岁的万维网活不长了! 蒂姆·伯纳斯·李要借去中心化亲手杀死它, 你再也不用担心...

  • 互联网裁员潮亲历者:那些阵痛、挣扎与去向

  • 没有一个人,能躲过程序员的诱惑!

640?wx_fmt=png

❤点击“阅读原文”,查看历史精彩文章。

相关文章:

Redis 集群部署及踩过的坑

本文目标 要在单台机器上搭建Redis集群,方式是通过不同的TCP端口启动多个实例,然后组成集群,同时记录在搭建过程中踩过的坑。 安装准备 centos版本:6.7 redis版本:3.2.3 安装方式:源码安装 服务器&#xff…

【linux】Valgrind工具集详解(三):打印信息说明

一、打印信息格式 Valgrind打印信息的格式如下,很容易和程序输出信息区分出来 == 进程ID ==Valgrind的打印信息二、打印到何处 1、打印到文件描述符中 主要是设置打印到终端上,默认情况下为2(stderr标准错误输出)。如果要想打印到其他文件描述符(例如编号9),则可以指…

杨超越第一,Python第二

追星追到程序员们狂热得搞起了编程比赛,长这么大,这种应援架势真没见过。没错,说的就是你们的杨超越妹妹。近日百度贴吧吧主在杨超越吧发帖,呼吁要为自己的偶像组织第一届杨超越杯编程大赛,众粉丝呼应,随即…

SQL Server数据库错误9003(LSN无效)的处理方法

国内一些ERP、财务软件一般后台都使用SQL Server的数据库,SQL Server作为一个中大型数据库是不应该在桌面系统上运行的,小规模企业一般不使用专用服务器,大部分直接使用XP系统桌面引擎MSDE作为SQL数据库的后台服务。这种方案当然就谈不上什么…

新款Tesla最低仅售26.2万,马斯克终于凑齐了S3XY

作者 | 琥珀出品 | AI科技大本营(公众号id:rgznai100)北京时间 3 月 15 日上午许,整整等待了 20 分钟的特斯拉 Model Y 新品发布会终于开场。在台下观众的阵阵欢呼声中,台上的埃隆 马斯克显得神采奕奕。这次&#xff…

【linux】Valgrind工具集详解(四):抑制错误

一、什么是抑制错误 错误检查工具可以检测系统库中的许多问题,例如C库,它是随操作系统预安装的。这些错误无法修复,并且有很多,但不希望看到这些错误。如何屏蔽这样错误就叫做“抑制错误”。 二、使用方法 1、使用默认的抑制错误配置 valgrind参数为 –default-suppress…

jenkins配置git

# jenkins配置git # 检测当前git版本是否是2.7.4以上 git --version # 如果没有安装git直接源码安装即可,如果安装了先删除原来的git yum -y remove git # 先安装编译git需要的包 yum -y install zlib-devel perl-CPAN gettext curl-devel expat-devel gettext-deve…

让别人不知道你的网站使用PHP

2019独角兽企业重金招聘Python工程师标准>>> 如果不想让别人知道你的网站使用了PHP程序,这样可以提高网站的安全。这并不说明PHP不安全,只是可以防止一些人攻击你的网站。你可以按照下面的方法设置你的httpd.conf文件。 你可以使用下面的方法…

【linux】Valgrind工具集详解(五):命令行详解

一、使用方法 usage: valgrind [options] prog-and-args 使用方法:valgrind [参数选项] 程序和参数 二、选择工具 tool-selection option, with default in [ ]: 工具选择选项,默认值在[]中: –tool= use the Valgrind tool named [memcheck] name取值如下: 1、memcheck…

小白程序员仅用5分钟入职BAT,他只做了这件事!

有一个知名独立博客「左岸读书」,坚持运营11年。最为印象深刻的,是网站的副标题:一切成就,均源自积累。我曾经“唯天赋主义”,觉得有些事永远都学不好。但慢慢的我发现,疏于锻炼、但依然是NBA第一中锋的奥尼…

源码阅读:AFNetworking(十六)——UIWebView+AFNetworking

该文章阅读的AFNetworking的版本为3.2.0。 这个分类提供了对请求周期进行控制的方法,包括进度监控、成功和失败的回调。 1.接口文件 1.1.属性 /**网络会话管理者对象*/ property (nonatomic, strong) AFHTTPSessionManager *sessionManager; 复制代码1.2.方法 /**异…

腾讯微博快速有效增加广播转播量的方法与技巧

经过一段时间对腾讯微博的实践,对腾讯微博也算是有所收获,要做好腾讯微博,无非就是两个方面,一是增加听众数,二是增加广播的转播量,本篇写的是做好微博质量–即增加转播量的方法。增加转播量不像增加听众数…

详解 | 推荐系统的工程实现

作者 | gongyouliu 来源 | 大数据工程师01 写在前面本篇文章作者会结合多年推荐系统开发的实践经验粗略介绍推荐系统的工程实现,简要说明要将推荐系统很好地落地到产品中需要考虑哪些问题及相应的思路、策略和建议,其中有大量关于设计哲学的思考,希望对从事推荐算法…

【linux】Valgrind工具集详解(六):使用Valgrind gdbserver和GDB调试程序

一、概述 在Valgrind下运行的程序不是由CPU直接执行的。相反,它运行在Valgrind提供的合成CPU上。这就是调试器在Valgrind上运行时无法调试程序的原因。 二、快速入门 在使用Memcheck工具时使用GDB调试程序,启动方式如下: 1、valgrind --vgdb = yes --vgdb-error = 0 可执…

C++模式学习------工厂模式

工厂模式属于创建型模式,大致可以分为简单工厂模式、抽象工厂模式。 简单工厂模式,它的主要特点是需要在工厂类中做判断,从而创造相应的产品。 1 enum PTYPE2 {3 ProdA 0,4 ProdB 15 };6 7 class ProductBase8 {9 public: 10 v…

JavaScript中正则表达式学习(一)

2019独角兽企业重金招聘Python工程师标准>>> 1.判断是不是手机号码&#xff08;实际判断是不是11位数字&#xff0c;可以用\d来匹配数字&#xff09; 表单部分代码&#xff1a; <form name"form1" > <lable>请输入&#xff1a;</lable>…

深度 | 推荐系统评估

作者 | gongyouliu 来源 | 大数据工程师作者在上篇文章《推荐系统的工程实现》中提到推荐系统要很好地落地到业务中&#xff0c;需要搭建支撑模块&#xff0c;其中效果评估模块就是其中非常重要的一个。本篇文章作者来详细说明怎么评估(Evaluating)推荐系统的效果&#xff0c;…

【linux】Valgrind工具集详解(七):Memcheck(内存错误检测器)

一、概述 Memcheck是一个内存错误检测器。它可以检测C和C ++程序中常见的以下问题: 1、非法内存:如越界、释放后继续访问; 2、使用未初始化的值; 3、释放内存错误:如double-free(同一内存上执行了两次free)、或者 malloc、new、new[] 与 free、delete、delete[]错配使用…

Kafka系列三 java API操作

使用java API操作kafka 1.pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.x…

用自己的×××身换来男朋友的健康

MASKDIY BLOG开通作 他把她当成孩子一样宠着&#xff0c;不让她工作&#xff0c;更不让她做一点点家务。他对她说&#xff1a;我就是要让你幸福&#xff0c;一点苦也不让你尝&#xff0c;等你快乐的长到二十岁&#xff0c;我就娶你&#xff0c;继续宠你养你一辈子。   他是一…

R和Python谁更好?这次让你「鱼与熊掌」兼得

作者 | Parul Pandey译者 | 大鱼责编 | Jane出品 | Python大本营&#xff08;公众号id&#xff1a;pythonnews&#xff09;如果你从事在数据科学领域&#xff0c;提到编程语言&#xff0c;一定能马上想到 R 语言和 Python语言&#xff08;以下分别简称 R、Python&#xff09;。…

大学实习就要来了,买个性价比高的笔记本应付一下

人才市场历来有着“金三银四”、“金九银十”招聘高峰期之说。“金九银十”指的是每年9、10月份&#xff0c;各大企业为第二年拓宽事务许多吸纳人才&#xff0c;一起应届高校毕业生找作业&#xff0c;供需两旺。而“金三银四”则是职场人拿到了奖金&#xff0c;看清了得失&…

【linux】Valgrind工具集详解(八):Memcheck命令行参数详解

【linux】Valgrind工具集详解(五):命令行详解中不够全,在此专门针对Memcheck工具中的命令行参数做一次详细的解释。 Memcheck命令行选项 –leak-check=<no|summary|yes|full> [default: summary] 程序执行完毕后,搜索内存泄漏。默认值为summary,只统计发生了多少…

PHP 5.3 中不建议使用的(部分)函数列表

2019独角兽企业重金招聘Python工程师标准>>> PHP 5.3.0 introduces two new error levels: E_DEPRECATED and E_USER_DEPRECATED. The E_DEPRECATED error level is used to indicate that a function or feature has been deprecated. The E_USER_DEPRECATED level…

【linux】Valgrind工具集详解(九):Memcheck检查的内容和方法

一、值的有效性 1、什么是值的有效性? 英文原文是Valid-value (V) bits,直译过来就是有效值(V)位。 我将它理解为值的有效性,就是判断在内存或CPU的物理地址中存储的数据是否有效,比如在内存中变量(int i)代表的物理位置(不是地址),没有初始化,就去使用它,是否合…

微软亚研院提出用于语义分割的结构化知识蒸馏 | CVPR 2019

作者 | CV君来源 | 我爱计算机视觉今天跟大家分享一篇关于语义分割的论文&#xff0c;刚刚上传到arXiv的CVPR 2019接收论文《Structured Knowledge Distillation for Semantic Segmentation》&#xff0c;通讯作者单位为微软亚洲研究院。作者信息&#xff1a;作者分别来自澳大利…

Elam的git笔记:(二)git的安装与基本操作介绍

Giti安装 下载地址下载&#xff1a;https://git-scm.com/download/win自动下载64位&#xff0c;如果是32位系统&#xff0c;取消下载后自行下载对应版本双击安装&#xff0c;自选项可根据自身需求自由选择 习惯于cmd的同学可以选择第二个安装完成后在桌面右键&#xff0c;选择G…

创新驱动未来,浪潮持续深耕信息安全市场

2010年&#xff0c;我国信息安全行业在快速发展中涌现出众多优秀的安全厂商&#xff0c;以创新的产品及技术推动中国信息安全产业做大做强。其中&#xff0c;浪潮创造性地开发出了英信安全服务器&#xff0c;加上此前推出的浪潮服务器安全加固系统&#xff08;&#xff09;&…

Pig变飞机?AI为什么这么蠢 | Adversarial Attack

整理 | Jane责编 | Jane出品 | AI科技大本营&#xff08;公众号id&#xff1a;rgznai100&#xff09;【编者按】这篇文章的起意有两点&#xff1a;一是由刚刚过去的 315 打假日&#xff0c;智能语音机器人在过去一年拨出的超 40 亿电话&#xff0c;联想到前一段时间引起大家热烈…

【linux】Valgrind工具集详解(十):SGCheck(检查栈和全局数组溢出)

一、概述 SGCheck是一种用于检查栈中和全局数组溢出的工具。它的工作原理是使用一种启发式方法,该方法源于对可能的堆栈形式和全局数组访问的观察。 栈中的数据:例如函数内声明数组int a[10],而不是malloc分配的,malloc分配的内存是在堆中。 SGCheck和Memcheck是互补的:它…