spark 流式计算_流式传输大数据:Storm,Spark和Samza

spark 流式计算

有许多分布式计算系统可以实时或近实时处理大数据。 本文将从对三个Apache框架的简短描述开始,并试图对它们之间的某些相似之处和不同之处提供一个快速的高级概述。

阿帕奇风暴

在风暴 ,你设计要求的T opology实时计算的图,然后喂到集群,其中主节点将分发工作节点来执行它之间的代码。 在拓扑中,数据在喷口之间传递, 喷口以不可变的键值对集(称为元组)的形式发射数据流螺栓则转换这些流(计数,过滤器等)。 螺栓本身可以选择将数据发送到处理管道中的其他螺栓。

风暴建筑41

Apache Spark

Spark Streaming (核心Spark API的扩展)不会像Storm那样一次处理一个流。 相反,它在处理它们之前将它们切成小批时间间隔。 连续数据流的Spark抽象称为DStream (用于离散流 )。 DStream是RDD弹性分布式数据集 )的微型批次。 RDD是分布式集合,可以通过任意功能和数据滑动窗口上的转换( 窗口计算 )并行操作。

spark-architecture4

阿帕奇·萨姆扎(Apache Samza)

Samza的流式传输方法是在收到消息时一次处理一次。 Samza的流原语不是元组Dstream ,而是消息 。 流分为多个分区 ,每个分区都是只读消息的有序序列,每个消息具有唯一的ID( offset )。 该系统还支持批处理 ,即按顺序使用来自同一流分区的多个消息。 尽管Samza通常依赖于Hadoop的YARN ( 另一个资源协商者 )和Apache Kafka ,但Samza的执行和流模块都可以插入。

samza42

共同点

所有这三个实时计算系统都是开源, 低延迟分布式,可伸缩容错的 。 它们都使您能够通过分布在具有故障转移功能的计算机集群上的并行任务来运行流处理代码。 它们还提供了简单的API,以抽象出底层实现的复杂性。

这三个框架针对相似的概念使用不同的词汇表:

apache-concepts21

比较矩阵

下表总结了一些区别:

阿帕奇1

交付模式一般分为三类:

  1. 最多一次 :消息可能会丢失。 通常这是最不希望的结果。
  2. 至少一次 :可以重新发送邮件(不丢失,但重复)。 对于许多用例来说,这已经足够了。
  3. 恰好一次 :每封邮件仅发送一次,并且一次(无损失,无重复)。 尽管在所有情况下都难以保证,但这是一个理想的功能。

另一方面是状态管理 。 存储状态有不同的策略。 Spark Streaming将数据写入分布式文件系统(例如HDFS)。 Samza使用嵌入式键值存储。 使用Storm,您将不得不在应用程序层滚动自己的状态管理,或者使用称为Trident的更高级别的抽象。

用例

这三个框架特别适合于有效处理连续的大量实时数据。 那么使用哪一个呢? 没有硬性规定,最多只有一些通用准则。

如果您想要一个允许增量计算的高速事件处理系统, Storm将会很适合。 如果您进一步需要按需运行分布式计算,而客户端正在同步等待结果,则可以直接使用分布式RPC (DRPC)。 最后但并非最不重要的一点,因为Storm使用Apache Thrift ,所以您可以用任何编程语言编写拓扑。 但是,如果您需要状态持久性和/或仅一次交付,则应查看更高级别的Trident API,该API还提供了微分批处理。

一些使用Storm的公司: Twitter,Yahoo!,Spotify,天气频道

说到微批处理,如果您必须进行状态计算,一次发送并且不介意更高的延迟,则可以考虑使用Spark Streaming……特别是如果您还计划图形操作,机器学习或SQL访问。 Apache Spark堆栈使您可以将多个库与流( Spark SQL , MLlib , GraphX )结合起来,并提供方便的统一编程模型。 特别是, 流算法 (例如,流k均值 )使Spark可以实时进行决策。

spark-stack2

一些使用Spark的公司: Amazon,Yahoo!,NASA JPL,eBay Inc.,百度…

如果您要处理的状态很多(例如,每个分区有许多GB), Samza会将存储和处理置于同一台机器上,从而可以有效处理内存中无法容纳的状态。 该框架还通过其可插拔 API提供了灵活性:其默认执行,消息传递和存储引擎都可以用您选择的替代方案来代替。 此外,如果您有来自不同团队,具有不同代码库的多个数据处理阶段,则Samza的细粒度作业将特别适合,因为可以在添加或删除它们时以最小的波纹效应进行工作。

一些使用Samza的公司: LinkedIn,Intuit,Metamarkets,Quantiply,Fortscale…

结论

我们只涉及了《三个阿帕奇人》的表面。 我们没有涵盖其他许多功能,以及这些框架之间的细微差别。 另外,重要的是要牢记上述比较的局限性,因为这些系统在不断发展。

翻译自: https://www.javacodegeeks.com/2015/02/streaming-big-data-storm-spark-samza.html

spark 流式计算

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338485.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

嵌入式开发C语言中的uint8_t

在嵌入式开发中的C语言代码中,经常可以看到类似uint8_t、uint16_t、uint32_t、uint64_t这种数据类型,在教材中却从来没见过。实际上这些数据类型都是某种数据类型的别名。比如,在定义函数时用到了uint8_t。右键“uint8_t”,单击“…

多模态语义分析_情感分析、多模态NLP、多语言翻译...这场NLP知识盛宴不可错过!...

AI科技评论按:2020年12月20日,由中国计算机学会自然语言处理专业委员会(CCF-NLP)发起,联合AI研习社及各个知名高校开展的“CCF-NLP走进高校”系列高校NLP研究分享报告会第六期——华中师范大学站,通过线上会议直播的方式进行。本期…

电瓶车续航测试软件,重点看续航 测试2020款蔚来ES8 485KM

时间回到2019年12月28日,一场隆重的“NIO DAY 2019”在深圳举行,2020款ES8便是在那场大秀中首次亮相。5个月之后,2020款蔚来ES8已于4月19日正式开始交付,我们也在交付之日对新车进行了试驾体验。所以今天就不多废话了,…

海盗云商插件_推销自己的海盗猫王运营商

海盗云商插件因此,Java没有Elvis运算符(或者,更正式地讲,它没有null合并运算符或null安全成员选择)……虽然我个人不太在意它,但有些人似乎很喜欢它。 当一位同事需要几天后,我坐下来探讨了我们…

英文期刊催稿信模板_手把手教你写投稿信,另附查尔斯沃思高质量模板

导语本文是查尔斯沃思作者服务关于学术论文写作系列文章的最后一篇,我们邀请英国编辑团队资深成员,根据其自身丰富的撰稿经验,为中国作者呈现系统全面的写作指导建议,我们将其翻译成中文,方便大家理解。希望本系列文章…

63权限提升-Linux脏牛内核漏洞SUID信息收集

今天讲到的方法是suid和内核漏洞 案例一Linux 提权自动化脚本利用-4 个脚本 两个信息收集:LinEnum、linuxprivchecker 两个漏洞探针:linux-exploit-suggester、linux-exploit-suggester2 信息收集有什么用? 信息收集就能判断能否进行s…

擦窗机器人不用时怎么收纳_省心省力,智能擦窗机器人

以前擦窗户,一手湿抹布一手干抹布,身边再放点儿报纸,可能还得再来一个人换洗抹布。一天下来,两个人都是腰酸背痛的。对于又爱干净又是懒癌星人的人来说,玻妞擦窗机器人,让大家不用爬上爬下,也能…

C语言变量定义和赋值

定义变量的格式非常简单,如下所示:数据类型 变量名;首先要强调的一点是:最后的分号千万不要丢了。变量的定义是一个语句,我们说过,语句都是以分号结尾的。“数据类型”表示想要存储什么类型的数据就定义什么类型的变量…

win7计算机盘共享,win7电脑如何共享文件夹 win7电脑共享文件夹操作方法

我们在工作当中,中是喜欢在电脑当中创建一个文件夹,然后把东西放进这个文件夹当中,最后实现共享,这样的方式能够为我们省去不少时间,那么win7电脑如何共享文件夹呢?今天为大家带来win7电脑共享文件夹的操作步骤。win7…

cdi-api_使用CDI简化JAX-RS缓存

cdi-api这篇文章(通过一个简单的示例)说明了如何使用CDI Producers使其在RESTful服务中利用缓存控制语义更加容易 与HTTP 1.0中可用的Expires标头相比, HTTP 1.1中添加了Cache-Control标头,这是急需的改进。 RESTful Web服务可以…

【C语言】结构体赋值

结构体在 C 程序中使用的较为频繁,能对数据有一定的封装的作用。对一个结构体赋值时,经常采用的方式是,分别对其成员变量赋值。那么能否将一个结构体用赋值号(“”)直接赋值给另一个结构体呢?网上的答案不一…

vue 传参 微信_vue-router 你可能忽略的知识点

vue-router相信大家都不陌生,并且很多都有实战经验。可能有很多你忽略的一些点。1、丑陋的hash值vue-router 默认 hash 模式 —— 使用 URL 的 hash 来模拟一个完整的 URL,于是当 URL 改变时,页面不会重新加载。const router new VueRouter(…

适合计算机64位的cad,【1人回答】求一个能适用于CAD2008的纬地,我的电脑是Win7 64位的-3D溜溜网...

回答:下载方法:1、建立临时目录,如 CAD20082、下载AutoCAD2008安装软件,将文件复制到CAD2008目录下。3、将 CAD2008 文件夹中的 zh-cn 文件夹改名为 en-us;4、下载“AutoCAD 2008 64 位补丁包(下载地址:ACA…

C |格式化输出与变量类型

C语言 格式化输出与变量类型 1、格式化输出在PHP里面,我们一般都是用echo和var_dump以及print_r等来输出调试语句,在C语言中一般用printf来输出,不过由有点特殊,你需要在输出的时候指定输出的数据类型:#in…

信工干货||C语言输入输出语句

数据输入与输出C语言无I/O语句,I/O操作由函数实现putchar( ) getchar( ) printf( ) scanf( ) puts( ) gets( )#include或#include “stdio.h”数据输出字符输出函数格式:putchar(c)参数:c为字符型或整型常量、变量或表…

如何设置网件gs108e_Netgear 网件 EAX80 AX6000规格 无线扩展器 开箱拆解评测

前言众所周知,国行网件RAX系列默认中国区,这就导致了路由器的发射功率不会高,所以很多人觉得国行RAX无线路由器信号覆盖不尽如意。为了解决这个问题,本次为大家介绍一款WiFi 6信号扩展器—EAX80(官网链接),它可以将高强…

饥荒海难创建显示专用服务器,饥荒创建世界时一直显示启动服务器 | 手游网游页游攻略大全...

发布时间:2017-08-07TGP版怎么建立服务器呢?各位知道在TGP里如何创建服务器吗?这里给大家带来了TGP版服务器创建开服方法,教大家TGP如何创建服务器,还不会的玩家,一起来了解下吧. >&gt ...标签:攻略发布时间:2015-12-20联机过程中有…

C语言 | 6种常用的转换工具函数盘点

字符串转十六进制代码实现:void StrToHex(char *pbDest, char *pbSrc, int nLen){ char h1,h2; char s1,s2; int i; for (i0; i2; i) { h1 pbSrc[2*i]; h2 pbSrc[2*i1];s1 toupper(h1) - 0x30; //toupper 转换为大写字母 if (s1 > 9) s1…

企业联合体的形式_联合体如何联合?——总包新政下,联合体如何联合?系列三...

以下文字为根据科思顿企业咨询管理(上海)有限公司合伙人胡建于2020年4月10日的网课核心内容摘录,因内容较多,分三个系列发布,包括:系列之一、为什么政策突变?系列之二、联合体是什么?系列之三、联合体如何联…

vue2 怎么用vite_Vue2和Vue3开发组件有什么区别

我们一直都有关注和阅读很多关于Vue3的新特性和功能即将到来。但是我们没有一个具体的概念在开发中会有如何的改变和不一样的体验。还有一些童鞋已经开始又慌又抓狂了 -- “又要开始学新的写法了 (ノToT )ノ ~┻┻”。所以这里我使用Vue2和Vue3开发一个简单的表格组件来展示一下…