主流流处理框架比较

Flink及Storm、Spark主流流框架比较-实时框架比较 实时计算框架对比 - flink,storm,spark 三者的区别 我相信有不少的工程师都有着这样的处境,在学flink之前很好奇flink,storm,spark的区别是什么,为什么现在很多企业都在往flink方向转它的优势是什么,为什么不适用storm,为什么不适用spark,在下面的内容中我会为大家解答。希望可以帮助大家,也希望大家看了之后可以提出自己宝贵建议。 有限数据集和无限数据集... 阅读详情

分布式流处理是对无边界数据集进行连续不断的处理、聚合和分析。它跟 MapReduce 一样是一种通用计算,但我们期望延迟在毫秒或者秒级别。这类系统一般采用有向无环图(DAG)。

DAG 是任务链的图形化表示,我们用它来描述流处理作业的拓扑。如下图,数据从 sources 流经处理任务链到 sinks。单机可以运行 DAG,但本篇文章主要聚焦在多台机器上运行 DAG 的情况。

关注点

当选择不同的流处理系统时,有以下几点需要注意的:

  • 运行时和编程模型:平台框架提供的编程模型决定了许多特色功能,编程模型要足够处理各种应用场景。这是一个相当重要的点,后续会继续。
  • 函数式原语:流处理平台应该能提供丰富的功能函数,比如,map 或者 filter 这类易扩展、处理单条信息的函数;处理多条信息的函数 aggregation;跨数据流、不易扩展的操作 join。
  • 状态管理:大部分应用都需要保持状态处理的逻辑。流处理平台应该提供存储、访问和更新状态信息。
  • 消息传输保障:消息传输保障一般有三种:at most once,at least once 和 exactly once。At most once 的消息传输机制是每条消息传输零次或者一次,即消息可能会丢失;A t least once 意味着每条消息会进行多次传输尝试,至少一次成功,即消息传输可能重复但不会丢失;Exactly once 的消息传输机制是每条消息有且只有一次,即消息传输既不会丢失也不会重复。
  • 容错:流处理框架中的失败会发生在各个层次,比如,网络部分,磁盘崩溃或者节点宕机等。流处理框架应该具备从所有这种失败中恢复,并从上一个成功的状态(无脏数据)重新消费。
  • 性能:延迟时间(Latency),吞吐量(Throughput)和扩展性(Scalability)是流处理应用中极其重要的指标。

    平台的成熟度和接受度:成熟的流处理框架可以提供潜在的支持,可用的库,甚至开发问答帮助。选择正确的平台会在这方面提供很大的帮助。

运行时和编程模型

运行时和编程模型是一个系统最重要的特质,因为它们定义了表达方式、可能的操作和将来的局限性。因此,运行时和编程模型决定了系统的能力和适用场景。

实现流处理系统有两种完全不同的方式:一种是称作原生流处理,意味着所有输入的记录一旦到达即会一个接着一个进行处理。

第二种称为微批处理。把输入的数据按照某种预先定义的时间间隔(典型的是几秒钟)分成短小的批量数据,流经流处理系统。

两种方法都有其先天的优势和不足。首先以原生流处理开始,原生流处理的优势在于它的表达方式。数据一旦到达立即处理,这些系统的延迟性远比其它微批处理要好。除了延迟性外,原生流处理的状态操作也容易实现,后续将详细讲解。一般原生流处理系统为了达到低延迟和容错性会花费比较大的成本,因为它需要考虑每条记录。原生流处理的负载均衡也是个问题。比如,我们处理的数据按 key 分区,如果分区的某个 key 是资源密集型,那这个分区很容易成为作业的瓶颈。

接下来看下微批处理。将流式计算分解成一系列短小的批处理作业,也不可避免的减弱系统的表达力。像状态管理或者 join 等操作的实现会变的困难,因为微批处理系统必须操作整个批量数据。并且,batch interval 会连接两个不易连接的事情:基础属性和业务逻辑。相反地,微批处理系统的容错性和负载均衡实现起来非常简单,因为微批处理系统仅发送每批数据到一个 worker 节点上,如果一些数据出错那就使用其它副本。微批处理系统很容易建立在原生流处理系统之上。

编程模型一般分为组合式和声明式。组合式编程提供基本的构建模块,它们必须紧密结合来创建拓扑。新的组件经常以接口的方式完成。相对应地,声明式 API 操作是定义的高阶函数。它允许我们用抽象类型和方法来写函数代码,并且系统创建拓扑和优化拓扑。声明式 API 经常也提供更多高级的操作(比如,窗口函数或者状态管理)。后面很快会给出样例代码。

主流流处理系统

有一系列各种实现的流处理框架,不能一一列举,这里仅选出主流的流处理解决方案,并且支持 Scala API。因此,我们将详细介绍 Apache Storm,Trident,Spark Streaming,Samza 和 Apache Flink。前面选择讲述的虽然都是流处理系统,但它们实现的方法包含了各种不同的挑战。这里暂时不讲商业的系统,比如 Google MillWheel 或者 Amazon Kinesis,也不会涉及很少使用的 Intel GearPump 或者 Apache Apex。

Apache Storm 最开始是由 Nathan Marz 和他的团队于 2010 年在数据分析公司 BackType 开发的,后来 BackType 公司被 Twitter 收购,接着 Twitter 开源 Storm 并在 2014 年成为 Apache 顶级项目。毋庸置疑,Storm 成为大规模流数据处理的先锋,并逐渐成为工业标准。Storm 是原生的流处理系统,提供 low-level 的 API。Storm 使用 Thrift 来定义 topology 和支持多语言协议,使得我们可以使用大部分编程语言开发,Scala 自然包括在内。

Trident 是对 Storm 的一个更高层次的抽象,Trident 最大的特点以 batch 的形式进行流处理。Trident 简化 topology 构建过程,增加了窗口操作、聚合操作或者状态管理等高级操作,这些在 Storm 中并不支持。相对应于 Storm 的 At most once 流传输机制,Trident 提供了 Exactly once 传输机制。Trident 支持 Java,Clojure 和 Scala。

当前 Spark 是非常受欢迎的批处理框架,包含 Spark SQL,MLlib 和 Spark Streaming。Spark 的运行时是建立在批处理之上,因此后续加入的 Spark Streaming 也依赖于批处理,实现了微批处理。接收器把输入数据流分成短小批处理,并以类似 Spark 作业的方式处理微批处理。Spark Streaming 提供高级声明式 API(支持 Scala,Java 和 Python)。

Samza 最开始是专为 LinkedIn 公司开发的流处理解决方案,并和 LinkedIn 的 Kafka 一起贡献给社区,现已成为基础设施的关键部分。Samza 的构建严重依赖于基于 log 的 Kafka,两者紧密耦合。Samza 提供组合式 API,当然也支持 Scala。

最后来介绍 Apache Flink。Flink 是个相当早的项目,开始于 2008 年,但只在最近才得到注意。Flink 是原生的流处理系统,提供 high level 的 API。Flink 也提供 API 来像 Spark 一样进行批处理,但两者处理的基础是完全不同的。Flink 把批处理当作流处理中的一种特殊情况。在 Flink 中,所有的数据都看作流,是一种很好的抽象,因为这更接近于现实世界。

快速的介绍流处理系统之后,让我们以下面的表格来更好清晰的展示它们之间的不同:

Word Count

Wordcount 之于流处理框架学习,就好比 hello world 之于编程语言学习。它能很好的展示各流处理框架的不同之处,让我们从 Storm 开始看看如何实现 Wordcount:

 TopologyBuilder builder = new TopologyBuilder();
 builder.setSpout("spout", new RandomSentenceSpout(), 5);
 builder.setBolt("split", new Split(), 8).shuffleGrouping("spout");
 builder.setBolt("count", new WordCount(), 12).fieldsGrouping("split", new Fields("word"));

 ...

 Map<String, Integer> counts = new HashMap<String, Integer>();

 public void execute(Tuple tuple, BasicOutputCollector collector) {
   String word = tuple.getString(0);
   Integer count = counts.containsKey(word) ? counts.get(word) + 1 : 1;
   counts.put(word, count);
   collector.emit(new Values(word, count));
 }

首先,定义 topology。第二行代码定义一个 spout,作为数据源。然后是一个处理组件 bolt,分割文本为单词。接着,定义另一个 bolt 来计算单词数(第四行代码)。也可以看到魔数 5,8 和 12,这些是并行度,定义集群每个组件执行的独立线程数。第八行到十五行是实际的 WordCount bolt 实现。因为 Storm 不支持内建的状态管理,所有这里定义了一个局部状态。

按之前描述,Trident 是对 Storm 的一个更高层次的抽象,Trident 最大的特点以 batch 的形式进行流处理。除了其它优势,Trident 提供了状态管理,这对 wordcount 实现非常有用。

public static StormTopology buildTopology(LocalDRPC drpc) {
 FixedBatchSpout spout = ...

 TridentTopology topology = new TridentTopology();
 TridentState wordCounts = topology.newStream("spout1", spout)
 .each(new Fields("sentence"),new Split(), new Fields("word"))
 .groupBy(new Fields("word"))
 .persistentAggregate(new MemoryMapState.Factory(), 
 new Count(), new Fields("count"));

 ...

 }

如你所见,上面代码使用 higher level 操作,比如 each(第七行代码)和 groupby(第八行代码)。并且使用 Trident 管理状态来存储单词数(第九行代码)。

下面是时候祭出提供声明式 API 的 Apache Spark。记住,相对于前面的例子,这些代码相当简单,几乎没有冗余代码。下面是简单的流式计算单词数:

val conf = new SparkConf().setAppName("wordcount")
val ssc = new StreamingContext(conf, Seconds(1))

val text = ...

val counts = text.flatMap(line => line.split(" "))
 .map(word => (word, 1))
 .reduceByKey(_ + _)

counts.print()

ssc.start()
ssc.awaitTermination()

每个 Spark Streaming 的作业都要有 StreamingContext,它是流式函数的入口。StreamingContext 加载第一行代码定义的配置 conf,但更重要地,第二行代码定义 batch interval(这里设置为 1 秒)。第六行到八行代码是整个单词数计算。这些是标准的函数式代码,Spark 定义 topology 并且分布式执行。第十二行代码是每个 Spark Streaming 作业最后的部分:启动计算。记住,Spark Streaming 作业一旦启动即不可修改。

接下来看下 Apache Samza,另外一个组合式 API 例子:

class WordCountTask extends StreamTask {

  override def process(envelope: IncomingMessageEnvelope, collector: MessageCollector, 
    coordinator: TaskCoordinator) {

    val text = envelope.getMessage.asInstanceOf[String]

    val counts = text.split(" ").foldLeft(Map.empty[String, Int]) {
      (count, word) => count + (word -> (count.getOrElse(word, 0) + 1))
    }

    collector.send(new OutgoingMessageEnvelope(new SystemStream("kafka", "wordcount"), counts))

 }

Samza 的属性配置文件定义 topology,为了简明这里并没把配置文件放上来。定义任务的输入和输出,并通过 Kafka topic 通信。在单词数计算整个 topology 是 WordCountTask。在 Samza 中,实现特殊接口定义组件 StreamTask,在第三行代码重写方法 process。它的参数列表包含所有连接其它系统的需要。第八行到十行简单的 Scala 代码是计算本身。

Flink 的 API 跟 Spark Streaming 是惊人的相似,但注意到代码里并未设置 batch interval。

val env = ExecutionEnvironment.getExecutionEnvironment

 val text = env.fromElements(...)
 val counts = text.flatMap ( _.split(" ") )
   .map ( (_, 1) )
   .groupBy(0)
   .sum(1)

 counts.print()

 env.execute("wordcount")

上面的代码是相当的直白,仅仅只是几个函数式调用,Flink 支持分布式计算。

结论

上面给出了基本的理论和主流流处理框架介绍,下篇文章将会更深入的探讨其它关注点。希望你能对前面的文章感兴趣,如果有任何问题,请联系我讨论这些主题。

流数据处理微框架-Golang开发 流数据处理的微框架; 使用预定义和自定义管道读取,清理,处理和存储数据。 Papilo Stream数据处理微框架; 使用预定义和自定义管道读取,清理,处理和存储数据。 Papilo打包了通用和简单的数据处理功能以供重用,允许定义自定义组件/功能,并允许使用Pipes and Filters体系结构以强大的方式排列它们。 功能(WIP)管道阶段:读取-处理-存储预定义管道:Papilo提供预定义管道和组件自定义管道:组织compo 立即下载

相关推荐

dagflow:C++数据流并行处理框架

DagFlow 框架、并行、数据流、C++、模板元编程 一个c++异步Dag流处理并发编程框架,程序运行结构以Dag的方式组织起来 优势 将传统的单生产者单消费者模型重构成通过 Dag 形成数据依赖的结构,让代码高度模块化 解决了回调多层嵌套的问题,让业务开发者可以用同步的思路写异步的代码 (Feature)可扩展性强,基于框架自动生成算法流程图,模块间 Profile 工具,单模块 debug 工具等 使用场景 实时数据分析、数据处理、等并行度较高但是逻辑比较复杂的场景 使用方式 参考dag_flower_unittest.cpp

Strom、SparkStreaming以及Flink三种流式框架了解

本文主要是想了解下Storm、Flink、Spark Streaming这三种流式计算框架的区别以及它们适合的应用场景。 Storm: Storm 是 Twitter 开源的分布式实时大数据处理框架,擅长处理海量数据,适用于数据实时处理而非批处理。 Storm也是主从架构,主节点Nimbus负责资源分配和任务调度,工作节点Supervisor负责真正执行任务。一个Supervisor可以有多个工作进程Worker,每个工作进程中可以运行多个Task,每个Task都是一个线程,执行实...

淡定一生2333的博客 1843

最全中文停用词表(可直接复制)

最全的停用此表整理 词表名 词表文件 中文停用词表 cn_stopwords.txt 哈工大停用词表 hit_stopwords.txt 百度停用词表 baidu_stopwords.txt 机器智能实验室停用词库 scu_stopwords.txt 以上停用词表链接:https://github.com/goto456/stopwords 以下是我常用的1893个停用词,可直接复制 ! " # $ % & ' ( ) * + , - -- . .. ... ....

dilifish的博客 12万+

[转]三种流处理框架比较:Storm,Spark和Flink

storm、spark streaming、flink都是开源的分布式系统,具有低延迟、可扩展和容错性诸多优点,允许你在运行数据流代码时,将任务分配到一系列具有容错能力的计算机上并行运行,都提供了简单的API来简化底层实现的复杂程度。 Apache Storm 在Storm中,先要设计一个用于实时计算的图状结构,我们称之为拓扑(topology)。这个拓扑将会被提交给集群,由集群中的主控节点(ma...

大仁哥、的博客 7607

Python量化投资入门教程:从零构建你的第一个交易策略

量化投资教程以数学模型和计算机程序实现超额收益,选用Python工具链完成数据获取、策略构建及回测。通过移动平均线交叉策略示例,展示数据预处理、信号生成、收益计算及可视化全流程,结合收益率、最大回撤和夏普比率评估策略,并建议参数优化与策略融合提升稳健性。

ylmx5201314的博客 2460

光耦继电器电路分析

光耦电路的分析笔记

MingYue_SSS的博客 6890

【Go泛型】用Go 写了个Stream处理框架堪比Java-Stream

Go中没有合适的类似于Java Stream的处理框架,这里自行根据Go语言特性及泛型实现了个,用起来和Java Stream一样丝滑,就是有点费笔水。。。

bingju328的博客 2382

RAGFlow API 实战指南:从数据集管理到智能对话

本文提供了RAGFlow API的实战指南,详细介绍了如何从零开始构建基于检索增强生成(RAG)的智能应用。内容涵盖环境准备、API密钥获取、核心概念理解,以及通过API进行数据集创建与管理、文档上传解析、知识块管理、检索测试,最终创建并配置智能聊天助手,实现基于私有知识库的精准对话。

weixin_29284885的博客 381

Golang框架实战-KisFlow流式计算框架(1)-概述

本人亲身经历过一个大规模的系统,多达上千个需要计算的业务数据字段,而早期因为没有规划好,最后导致存在1000+的脚本在定时跑,最后导致了脚本之间对数据的影响,数据始终无法准确,导致业务数据经常性的报数据问题错误。如下面一个场景:某个业务计算字段的值,正确为100,错误为99, 但是由于历史代码的臃肿,会有多个计算脚本对其值做修复补丁计算,会有各个脚本相互冲突,在一定的时间间隔内会存在数据值抖动,可能最终一个补丁修复正确,但是这种情况就会存在一定时间范围内业务数据不正确,最终却奇迹正确的情况,很让用户苦恼。

qq_40239222的博客 1223

PINN求解PDE

PINN求解Dirichlet泊松方程 泊松方程引入 −Δu=f,x∈Ω=(0,1)2-\Delta u=f,x \in \Omega=(0,1)^2−Δu=f,x∈Ω=(0,1)2 u=g,x∈∂Ωu=g,x \in \partial \Omegau=g,x∈∂Ω import torch import time import numpy as np import matplotlib.pyplot as plt import torch.nn as nn def UU(X, order,prob):

forrestguang的博客 3807

手把手带你实现DAF-Net:零代码基础入门红外与可见光图像融合(从理论到实战)

本文介绍了红外与可见光图像融合技术及DAF-Net网络的应用。红外图像能捕捉热源但缺乏细节,可见光图像纹理丰富但在低光环境下表现不佳。DAF-Net采用双分支特征提取和动态注意力融合架构,能智能分配特征权重实现优势互补。文章详细讲解了环境配置、数据集准备(如TNO数据集)和预处理方法,并提供了DAF-Net的核心代码实现,包括特征提取、注意力融合和图像重建模块。通过该技术可在安防、自动驾驶等领域获得更优质的融合图像,提升视觉感知能力。

m0_71589036的博客 235

流式计算

Storm nimbus :Master,负责集群管理、任务分配 supervisor : Slave,完成计算,每个 supervisor 启动多个 worker 进程,每个 worker 上运行多个 task,而 task 就是 spout 或者 bolt。 zookeepr:supervisor 和 nimbus 通过 ZooKeeper 完成任务分配、心跳检测等操作。 Flink Fl...

mlsoftware的博客 293

毕设帮扶:从0到1搭建基于YOLOv5的打架斗殴检测系统——助你搞定深度学习毕设

做完这个毕设,你已经掌握了从数据准备到模型部署、界面开发的全流程。把模型部署到边缘设备(如安防摄像头的嵌入式系统)上,实现本地化实时检测与报警;加入行为严重程度分析(如轻微推搡 vs 严重斗殴)、涉事人员数量统计,让系统从“检测”升级为“智能安防决策”;尝试融合声音、红外等多模态数据,打造全方位的暴力事件监测系统。按照这个教程一步步做,你的毕设肯定能做得很扎实。要是过程中遇到啥问题,别担心,慢慢梳理或者咱们一起聊聊,一定能把这个毕设做成你满意的作品。

LXY_LOVE36的博客 123

python流处理框架_主流流处理框架比较

关注点当选择不同的流处理系统时,有以下几点需要注意的:•运行时和编程模型:平台框架提供的编程模型决定了许多特色功能,编程模型要足够处理各种应用场景。这是一个相当重要的点,后续会继续。•函数式原语:流处理平台应该能提供丰富的功能函数,比如,map或者filter这类易扩展、处理单条信息的函数;处理多条信息的函数aggregation;跨数据流、不易扩展的操作join。•状态管理:大部分应用都需要保持...

weixin_39620252的博客 202

从零搭建 SAP ALE/IDoc:自定义 IDoc 结构、Outbound 发送、Inbound 入库与排错全流程

本文介绍了SAP系统中ALE和IDoc技术的应用,用于解决分布式系统集成中的数据传递问题。主要内容包括: ALE/IDoc技术概述 ALE通过消息驱动方式实现业务数据传递 IDoc作为标准化数据信封,包含控制信息、业务数据和状态记录 支持SAP与非SAP系统间集成 核心概念 ALE的价值在于业务消息传递而非远程调用 IDoc由控制记录、数据记录和状态记录三部分组成 WE60工具用于查看IDoc文档结构 实践案例 演示如何将自定义业务表数据打包为IDoc 详细说明IDoc结构定义步骤(段、基本类型、消息类型)

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 329

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Storm,Trident,Spark Streaming,Samza和Flink主流流处理框架比较

文 | Petr Zapletal ,译者 | 侠天   分布式流处理是对无边界数据集进行连续不断的处理、聚合和分析。它跟MapReduce一样是一种通用计算,但我们期望延迟在毫秒或者秒级别。这类系统一般采用有向无环图(DAG)。   DAG是任务链的图形化表示,我们用它来描述流处理作业的拓扑。如下图,数据从sources流经处理任务链到sinks。单机可以运行

陈海峰的博客 2035

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

实时数据流处理完全指南:Apache Flink、Spark Streaming、Kafka Streams深度解析

在当今数据驱动的世界中,**实时数据流处理**已成为现代数据架构的核心支柱。随着企业对即时洞察需求的不断增长,掌握流处理技术变得至关重要。本指南将为您全面解析三大主流流处理框架:Apache Flink、Spark Streaming和Kafka Streams,帮助您选择最适合的技术栈。 ## 为什么需要实时数据流处理?🚀 传统的批处理模式已经无法满足现代业务对数据时效性的要求。想象一下,

gitblog_00226的博客 1190

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Flink学习笔记(一):基础概念

文章目录1.有界/无界数据集2.Flink简介3.主流数据流处理框架特点比较4.Flink 基本架构5.Flink编程模型6.对时间的处理7. 窗口8.时间和水印(Watermarks)9.有状态计算 1.有界/无界数据集 有界数据集 有界数据集对开发者来说都很熟悉,在常规的处理中我们都会从Mysql,文本等获取数据进行计算分析。我们在处理此类数据时,特点就是数据是静止不动的。也就是说,没有再进行...

gentlewei的博客 616

【比较】常用大数据处理框架

Hadoop MapReduce Apache Spark Apache Flink Apache Storm Kafka Streams,常用大数据处理框架对比。

weixin_74776798的博客 1647

主流流处理框架之间的区别

文章目录主流流处理框架的区别 主流流处理框架的区别 流计算:将大规模流动数据在不断变化的运动过程中实现数据的实时分析,捕捉到可能有用的信息,并把结果发送到下一计算节点。 主流流计算框架:Kafka Streaming、Apache Storm、Spark Streaming、Flink DataStream等 Kafka Streaming:是一套基于Kafka-Streaming库的一套流计算...

zax_java的博客 813

Kafka Stream 以及其他流处理框架对比

1. Kafka Stream Introduction 假设我们需要对kafka 消息做流数据分析,例如: 对部分消息做过滤 每分钟计算一次收到了多少消息 这种情况下,对于消息过滤以及定时统计,甚至是进行流的合并,是几个基本的流式处理。但是在这种情况下,仅使用Kafka Producer 与 Consumer 很难实现这些功能,因为它们属于非常底层的API,并且并不是d...

weixin_30872337的博客 748

Flink及主流流框架比较

引言随着大数据时代的来临,大数据产品层出不穷。我们最近也对一款业内非常火的大数据产品 - Apache Flink做了调研,今天与大家分享一下。Apache Flink(以下简称flink) 是一个旨在提供‘一站式’ 的分布式开源数据处理框架。是不是听起来很像spark?没错,两者都希望提供一个统一功能的计算平台给用户。虽然目标非常类似,但是flink在实现上和spark存在着很大的区别,flin...

xorxos的专栏 2590

流处理和批处理框架的异同

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34034261的博客 5888

探索大数据领域 Kafka 的流处理框架集成

Kafka 与流处理框架的集成,核心是匹配场景需求低延迟、复杂计算选 Flink;批流统一、Spark 生态选 Spark Streaming;轻量级、简单处理选 Kafka Streams。Flink:学习 CEP(复杂事件处理)、Watermark(乱序数据处理);Spark:迁移到 Structured Streaming(更高级的流处理 API);:学习 KTable/GlobalKTable(流与表的关联)。最后。

AI算力网络与通信的博客 1229

python流处理框架_流式处理框架对比

分布式流处理是对无边界数据集进行连续不断的处理、聚合和分析的过程,与MapReduce一样是一种通用计算框架,期望延迟在毫秒或者秒级别。这类系统一般采用有向无环图(DAG)。DAG是任务链的图形化表示,用它来描述流处理作业的拓扑。在选择不同的流处理系统时,通常会关注以下几点:运行时和编程模型:平台框架提供的编程模型决定了许多特色功能,编程模型要足够处理各种应用场景。函数式原语:流处理平台应该能提供...

weixin_39965161的博客 755

Flink-Flink及主流流框架比较

引言 随着大数据时代的来临,大数据产品层出不穷。我们最近也对一款业内非常火的大数据产品 - Apache Flink做了调研,今天与大家分享一下。Apache Flink(以下简称flink) 是一个旨在提供‘一站式’ 的分布式开源数据处理框架。是不是听起来很像spark?没错,两者都希望提供一个统一功能的计算平台给用户。虽然目标非常类似,但是flink在实现上和spark存在着很大的区别,fl...

lisery的博客 951
上一篇: Vue.js——60分钟快速入门
下一篇: 阿里重磅开源Blink:为什么我们等了这么久?
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值