Twitter开源Summingbird:近原生编码下整合批处理与流处理

  根据使用场景不同,大数据处理逐渐的发展向两个极端——批处理和流处理。其中流处理更注重于数据的实时分析,代表工具有Storm及S4。而批处理更注重于数据的长期挖掘,典型的工具则是从Google 三大论文上衍生的Hadoop。

  随着数据的“爆棚”,各个公司在大数据的处理上可谓是绞尽脑汁,目的无非就是更快、更准。然而近日Twitter 开源的新工具Summingbird却打破了这个节奏,在流处理与批处理的无缝整合上更进了一步。

  开发背景

  众所周知,Twitter的系统基本上完成了面向服务的架构转变,而众多服务对数据处理也有着不同的需求,从而无可避免的出现这种情况:类似Trending Topics及搜索服务在开始时有实时处理的需求,而数据的价值却需要经过最终的深度挖掘——批处理。这样减少转换时开销的重要性就显而易见了,Summingbird应运而生。

  Sunmmingbird

  相关简介

  Twitter在9月3日开源了一个名为Summingbird的大数据处理系统,通过整合批处理与流处理来减少它们之间的转换开销。

  从Twitter对Summingbird的介绍还得知,开发者可以使用非常接近原生的Scala或者Java 在Summingbird上执行MapReduce作业,下面着眼一个使用纯粹Scala编写的word-counting示例:

  而在Summingbird做word-counting则需要这样的代码

  不难看出他们有着相同的逻辑和近乎完全相同的代码,然而不同的是,你既可以使用Summingbird项目做“批处理”(Scalding),也可以使用它做“实时处理”(使用Storm);同时,你还可以使用两种模式的混合给应用程序带来无与伦比的容错性。

  核心观念

  Summingbird作业会产生两种类型的数据:流(stream)和快照(snapshot)。流包含了数据的所有历史,Store则是包含了系统在指定时间的快照。Summingbird核心通过众多组件实现:

  Producer——Producer是Summingbird的数据流抽象,用以传递给特定Platform做MapReduce流编译。

  Platform——Platform实例可以用于任何流MapReduce库的实现,Summingbird库包含了Platform对Storm、Scalding及内存处理的支持。

  Source——Source代表了一个数据的源,每个系统都对数据源有自己的定义,比如Memory平台将Source[T]定义为任何TraversableOnce[T]。

  Store——Store是Summingbird中流MapReduce进行“reduce”操作的场所,Store包含了所有键对应值聚合的快照。

  Sink——不同于Store,Sink允许你形成一个体现Producer值的非聚合流,sink是流而不是快照。

  Service——Service允许用户在Producer流中当前值上执行“lookup join”或者是“leftJoin”,被连接的值可以是来自另一个Store的快照,也可以是另一个Sink的流,甚至来自一些其它的异步功能。

  Plan—— Plan由Platform调用platform.plan(producer)产生,作为MapReduce流的最终实现。对于Storm来说,Plan就是个StormTopology实例,用户可以通过Storm提供的方法执行。对于Memory平台来说,Plan就是个内存Stream,包含了被传递Producer提供的输出内容。

  详细内容请访问:Summingbird的核心概念

  相关项目

  Summingbird催生了大量的子项目,其中必须关注的有:

  Algebird——Scala的抽象代数库,Algebird中的众多数据结构都经Monoid实现,让他们能更好的进行Summingbird聚合。

  Bijection——Summingbird使用Bijection项目的Injection在不同客户端和执行平台间共享序列化。

  Chill——Summingbird的Storm及Scalding平台都使用了Kryo库做序列化处理,Chill是对Kryo一个很好的补充,其中包括许多可用配置选项,并且提供了Storm、Scala、Hadoop的使用模型。Chill同样也在伯克利Amp实验室的Spark中使用。

  Tormenta——Tormenta在Storm的Scheme及Spout接口上提供了类型安全层。

  Storehaus——Summingbird客户端通过 Storehaus的异步键值储存特性实现,Storm平台利用了 Storehaus的MergeableStore特性,以达到一些常用后备存储的实时聚合,包括memcache及Redis。

  未来计划

  支持更多的平台, Spark及 Akka“首当其冲”

  Producer图层的可插式优化

  支持可过滤的数据源,比如 Parquet

  为Producer基元注入更高级的数学及机器学习代码

  通过相关项目,实现更多扩展

  通过公共数据源释放更多的教程

时间: 2024-10-04 10:13:29

Twitter开源Summingbird:近原生编码下整合批处理与流处理的相关文章

详解Twitter开源分布式自增ID算法snowflake,附演算验证过程

1.snowflake简介 互联网快速发展的今天,分布式应用系统已经见怪不怪,在分布式系统中,我们需要各种各样的ID,既然是ID那么必然是要保证全局唯一,除此之外,不同当业务还需要不同的特性,比如像并发巨大的业务要求ID生成效率高,吞吐大:比如某些银行类业务,需要按每日日期制定交易流水号:又比如我们希望用户的ID是随机的,无序的,纯数字的,且位数长度是小于10位的.等等,不同的业务场景需要的ID特性各不一样,于是,衍生了各种ID生成器,但大多数利用数据库控制ID的生成,性能受数据库并发能力限制,

Twitter 开源分布式高性能日志复制服务

日前,Twitter在Github上基于Apache 2许可证协议开源了其日志服务DistributedLog(DL). DL是一个高性能的日志复制服务,提供了持久化.复制以及强一致性的功能,这对于构建可靠的分布式系统都是至关重要的,如复制状态机(replicated-state-machines).通用的发布/订阅系统.分布式数据库以及分布式队列. DistributedLog会分类维护记录的序列(sequences of records),并将其称为Log(又叫做Log Stream),将记

php5.4以上版本GBK编码下htmlspecialchars输出为空问题解决方法汇总_php技巧

从旧版升级到php5.4,恐怕最麻烦的就是htmlspecialchars这个问题了!当然,htmlentities也会受影响,不过,对于中文站来说一般用htmlspecialchars比较常见,htmlentities非常少用到. 可能老外认为网页普遍应该是utf-8编码的,于是苦了那些用GB2312,GBK编码的中文站......! 具体表现: 复制代码 代码如下: $str = "9enjoy.com的php版本是5.2.10"; echo htmlspecialchars($s

Twitter开源分布式高性能日志复制服务

Twitter在Github上基于Apache 2许可证协议开源了其日志服务DistributedLog(DL).DL是一个高性能的日志复制服务,提供了持久化.复制以及强一致性的功能,这对于构建可靠的分布式系统都是至关重要的,如复制状态机(replicated-state-machines).通用的发布/订阅系统.分布式数据库以及分布式队列. DistributedLog会分类维护记录的序列(sequences of records),并将其称为Log(又叫做Log Stream),将记录写入到

Twitter开源云环境时间序列数据断层检测工具BreakoutDetection

[编者按]区别于传统环境,鉴于云环境中众多不可预测的因素和异常,其时间序列breakout检测并不容易.近日,Twitter开源了一款基于E-Divisive with Medians(EDM)的breakout检测工具,旨在更好地分析复杂环境中的时间序列数据. 以下为译文 当下,大数据已经深入影响到各个领域,其中包括新产品决策制定.用户参与程度衡量.产品的定制化推荐.医疗.数据中心效率等. 而着眼数据类型,时间序列数据无疑是非常常见的一种形式.随着数据收集和挖掘成本的下降,包括Twitter等

php中utf-8编码下用正则表达式如何匹配汉字_正则表达式

在javascript中,要判断字符串是中文是很简单的.比如: 复制代码 代码如下: var str = "php编程"; if (/^[\u4e00-\u9fa5]+$/.test(str)) { alert("该字符串全部是中文"); } else { alert("该字符串不全部是中文"); } 想当然的,在php中来判断字符串是否为中文,就会沿袭这个思路: 复制代码 代码如下: <?php $str = "php编程&qu

最佳的开源网络视频会议音频编码库:Speex

在网络视频会议开发领域,我们有许多开源的音频编码库可以供选择,如G.7x系列.ACC.AC3.Speex等音频编码库,但由于网络视频会议可能会在无QOS保证的网络中传输数据,所以不仅要求音频编码器可以传输实时的高质量的音频数据,还需要保证带宽足够小,满足不同带宽的需求.因此一些宽带的编码器,如ACC.AC3等,其传输需要较大的带宽,就很难适应网络视频会议的低带宽传输要求.Speex是一个基于CELP算法的开源编码器,其可以支持从窄带(2kb)到宽带(44kbs)的音频传输,最少的音频传输带宽可以

net framework-.NET开源代码TextBox在输入状态下光标和文本的绘制代码在哪里?

问题描述 .NET开源代码TextBox在输入状态下光标和文本的绘制代码在哪里? 微软已经公布.NET源代码,http://referencesource.microsoft.com/,可以下载浏览调试,本人下载后浏览WinForm中TextBox,TextBox,Control代码,找不到TextBox在输入状态下光标和文本的绘制代码,求高手解答关键源代码. 解决方案 .net 开源了,但是windows没有开源,文本框.按钮包括rich文本框都是windows实现的.显然你得在windows

[jsp+php]Windows2000 下整合Apache2与Tomcat4

=============================================本文我已经测试通过了!=============================================题目:Windows2000 下整合Apache2与Tomcat4作者:robornet日期:2002-10-30原由:搞了一段时间的java项目,到分发的时候了,可找不到一份最新的Apache2与Tomcat4的整合配置,遂看了半天的jakarta在线资料,并参照以前网友的文章,写了这篇配置文档