流式传输大数据:Storm,Spark和Samza

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

阿帕奇风暴

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

风暴建筑41

阿帕奇火花

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

spark-architecture4

阿帕奇·萨姆扎(Apache Samza)

Samza的流式传输方法是在收到消息时一次处理一次。 Samza的流原语不是元组Dstream ,而是消息 。 流被分成多个分区 ,每个分区都是只读消息的有序序列,每个消息具有唯一的ID( 偏移量 )。 该系统还支持批处理 ,即按顺序使用来自同一流分区的多个消息。 尽管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

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

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

相关文章

uniapp使用阿里云多色图标

下载,然后解压 输入cmd,然后enter 输入 npm install -g iconfont-tools 再输入 iconfont-tools,然后一直enter,直到结束 目录会多了个iconfont-weapp文件,点击去找到 iconfont-weapp-icon.css 导入和使用 t-icon开头 接…

针对Java中的XSD验证XML

有许多工具可用于根据XSD 验证XML文档 。 其中包括操作系统脚本和工具,例如xmllint ,XML编辑器和IDE,甚至是在线验证器。 由于前面提到的方法的局限性或问题,我发现拥有自己的易于使用的XML验证工具很有用。 Java使编写这样的工具…

uniapp uni.request GET方式请求,不能直接传数组解决方法

这里写目录标题目录遇到的问题 GET请求方法传数组解决方案目录 遇到的问题 GET请求方法传数组 想传一个数组,但是后台接受到的数据与浏览器中显示的数据和前台代码传的不一样; 前台代码打印 浏览器显示数据 其中HerbalNameList ,变成了字…

休眠CascadeType.LOCK陷阱

介绍 引入了Hibernate 显式锁定支持以及Cascade Types之后 ,就该分析CascadeType.LOCK行为了。 休眠锁定请求触发内部LockEvent 。 关联的DefaultLockEventListener可以将锁定请求级联到锁定实体子级。 由于CascadeType.ALL也包括CascadeType.LOCK ,因…

c++中在堆和栈中申请空间的差别

堆中和栈中申请的空间的比较, 我找到了下面的比较: 栈的情况:栈上分配空间的好处是快,而且对象生存期是自动的,离开当前域之后就自动析构回收。坏处就是栈空间有限,而且不能人为控制对象的生存期,比如你无法将一个函数…

推销自己的海盗猫王运营商

因此,Java没有Elvis运算符(或者更正式的名称是null合并运算符或null安全成员选择)……虽然我个人不太在意它,但有些人似乎很喜欢它。 当一位同事需要几天后,我坐下来探讨了我们的选择。 而且你知道什么! 您…

使用CDI简化JAX-RS缓存

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

transform限制position:fixed的跟随效果

我们应该都知道,position:fixed可以让元素不跟随浏览器的滚动条滚动,而且这种跟随效果连它的兄弟们position:relative/absolute都限制不了。但是,真是一物降一物,position:fixed固定效果却被小小的transform给干掉了,直…

Java 8 Lambda表达式教程

问候! :) 离开几个月后,我决定恢复风格:)。 我注意到我以前有关新的Date / Time API的一篇文章非常受欢迎,因此这次我将把本篇文章专门介绍Java 8的另一个新功能: Lambda Expressions 。 功能编程 Lambda表达式是Java编程语言最…

[HDU] 2553 N皇后问题-简单深搜

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid2553 方法: 1.可以用对称的思想,即:如果N是偶数,则只计算第一个皇后分别放在第一行的位置1到N/2这N/2个情况的结果和,最后再乘以2。如果是奇数&#…

您真的了解@WebService吗?

SOAP Web服务无论如何都不是最先进的技术-尽管它仍然存在,但是基于REST的Web服务却提供了激烈的竞争。 无论如何–这绝对不是REST vs SOAP帖子! 我观察到了一些实例,至少可以说,使用基于Java的SOAP Web服务的方式不太理想。 我认…

Error: Module “xxx“ does not exist in container. / antd pro v5启用qiankun报错 / 同时使用mfsu和qiankun报错

一、问题描述 我们用antd pro v5搭建前端项目,启用qiankun微前端模式,终端报错如下: Uncaught (in promise) Error: Module “xxx” does not exist in container. while loading “xxx” from webpack/container/reference/mf 经过排查&…

双链表

问题:在分配空间时,遇到问题 定义一个结构体: typedef struct dLinkListNode{ int data; struct dLinkListNode *prior; struct dLinkListNode *next;}*dLinkList,dListNode; dList(dLinkList)malloc(sizeof(dListNode));与dList(dLinkList)m…

JVMTI标记如何影响GC暂停

这篇文章分析了为什么Plumbr Agents在某些情况下以及如何延长GC暂停的时间。 对基本问题进行故障诊断揭示了有关在GC暂停期间如何处理JVMTI标记的有趣见解。 发现问题 我们的一位客户抱怨说,附加了Plumbr代理后,应用程序的响应速度明显降低。 通过分析G…

使用Apache Hadoop计算PageRanks

目前,我正在接受Coursera的培训“ 挖掘海量数据集 ”。 我对MapReduce和Apache Hadoop感兴趣已有一段时间了,通过本课程,我希望对何时以及如何MapReduce可以帮助解决一些现实世界中的业务问题有更多的了解(我在这里介绍了另一种解…

分享一篇关于奇异值分解的文章[Eng]

原文地址:http://www.igvita.com/2007/01/15/svd-recommendation-system-in-ruby/ One day, a bunch of friends, who happened to be big Family Guy fans, decided to put together a site to rank and share their thoughts on the show. Soon thereafter they h…

为雅安祈福

四川是个多灾多难的省份,更是个多地震的省份,十年之内发生了两次大地震。我们能做的就是为雅安的人们祈福。 淘宝给互联网带头了: 天猫也跟着祈福了,因为他们都属于阿里巴巴,这里就不上图了。 百度作为国内互联网企业的…

在运行时打开GC日志记录

总是有下一个JVM表现不佳。 而且,您内心深知,如果您只有少数启动选项可以公开一些有关正在发生的事情的信息,那么您可能就有机会真正修复该死的东西。 但是不,您需要的标志( -XX: HeapDumpOnOutOfMemoryErr…

jpannel设置位置xy_实用的摄影技巧!10种常见摄影场景的单反相机设置技巧!

相机是爱拍一族必不可少的东西,对于摄影爱好者对于一些相机设置技巧可能也不是太了解,在摄影过程中,有很多的场景需要不同的设置,根据光线变化和周围环境,一般来说都会特定的摄影技巧,今天红视觉和大家一起…

Only digits (0-9) can be put inside [] in the path string: formData.XXX

使用uniapp开发时微信小程序中爆出的问题,问题在于form表单组件中绑定表单值,去除报错值则正常。 解决办法如下: 修改注释行内容, 转载连接