说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
近日,Twitter开源了名为Summingbird的数据分析工具。区别于以往的更快、更准确节奏,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示例:

def wordCount(source: Iterable[String], store: MutableMap[String, Long]) =  source.flatMap { sentence =>    toWords(sentence).map(_ -> 1L)  }.foreach { case (k, v) => store.update(k, store.get(k) + v) }

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

def wordCount[P <: Platform[P]]  (source: Producer[P, String], store: P#Store[String, Long]) =    source.flatMap { sentence =>      toWords(sentence).map(_ -> 1L)    }.sumByKey(store)

不难看出他们有着相同的逻辑和近乎完全相同的代码,然而不同的是,你既可以使用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基元注入更高级的数学及机器学习代码
  • 通过相关项目,实现更多扩展
  • 通过公共数据源释放更多的教程

更多详细信息访问Summingbird HomePage及Summingbird问题跟踪,Summingbird  GitHub下载页。

亚信CTO金亚东:传统企业向产业互联网转型的两条路径 微信评论功能开启将成净土还是地狱 如何定位Android NDK开发中遇到的错误 流行从这里开始,MDCC 2014十大人气产品榜单揭晓! 专访POWER 8编程挑战赛选手唐刚:大数据计算永远是主角 微信公众号认证命名松绑,您怎么看? LambdaNet:纯Haskell实现的人工神经网络库 专注模式识别,易道博识为海量信息输入提供便捷之门 【问底】Michael G. Noll:整合Kafka到Spark Streaming——代码示例和挑战 2014年手游和社交游戏行业重要趋势解读 腾讯副总裁罗道锋:共建全国最大安全云库 5分钟内数据精准共享 Connected Cycle 一举两得的智能自行车踏板 CES可穿戴产品前瞻:汽车厂商入局智能手表领域 果断Mark!国外程序员收集整理的PHP资源大全 Google 2015项目前瞻:智能隐形眼镜、Google X、Ara Swift的坑:如何实现enum的多选? Swift,其实没那么任性 如何利用单台服务器实现10万多个Git仓库托管 Swift的初始化方法 TIOBE 2015年1月编程语言排行榜:JavaScript成大赢家 为什么iOS开发不需要Storyboard? 仅有纽扣大小的开发板 Intel Curie “撒娇”的豌豆荚?被百度手机助手屏蔽太糟心! 【工具推荐】Pgcli—自动完成和语法高亮的Postgres命令行工具 CES 2015:挑一款机器人带回家? 夜行、睡眠与健康:CES 2015十款酷炫的可穿戴产品 Java 9中新的货币API 唯“简”不破,Apple Watch App的设计之道 Google Glass从X labs“毕业”,更换项目负责人 不进化,则消亡——互联网时代企业管理的十项实践 RedMonk 2015年1月编程语言排行榜:进击的Swift! Castor Oil 有谁回答我的问题?急急! 我的msdxm.ocx文件为什么注册不上呀! 大虾们有谁知道Debug和Softice的运作机制是什么? 能不能定义一个常量数组? sql server可以用NT认证,pb能不能也用NT认证 如何在一串字符中区分汉字和字母,就是去除字母只留汉字 如何截获另外一个进程调用的函数,比如OUTTEXT(。。 高分获取sql server相关资料的网站/电子书等 Going to die ActiveForm程序如何得到参数? The Glass Eye sqlserver+asp如何实现图像的存储和显示? Just plain stupid 关于main(int argc,char *argv[]) helpme 如何对vb源代码加密 讨论,关于Swing做的Applet! SUN前途堪忧! explorer007(KKcat):麻烦一下,请把你写的游戏TANK的源代码给我发一份(lyf545@263.net),谢谢!!!! sql server中删除一条记录不成功!? Bad Dream about a Coffin 我要用delphi作个学生管理系统,大家给点意见 有声卡,为何没有声音,具体操作如何?一定加分!!!! What a country ! 交流交流多线程程序的开发经验好吗? 谁有关于ejb方面的书或者资料推荐??一定给分 Women over 50 谁编个例程给我,这50分就是谁的了。题目不难,相信高手5分钟就能做完。 jdk1.3+jswdk1.0.1 的JAVAbeans .class文件要放哪啊????? God painted it 提问:猪真的很幸福吗?要求 wywq(幸福如猪) 回答。 哪位高手做过可视电话的? VB能不能实现“一个结构体类型的数组当参数传递 Forgotten Birthd Husbands Overheard Fine 有个在多线程中使用ADO的问题。请高手们帮忙。 Suede jacket 可能是installshield的Bug! 我想去北京找个工作,请大家帮帮忙,提供点信息! 装了“猫”为何还有630错误(电话线也接了)? excel 問題 各位:数据窗口有一检索变量,现在想retrieve出所有的记录,检索变量应该怎样赋值?谢谢! linux和windows是不是只能分别装在两个分区中 关于图像处理:如何使图像锐化与柔化? 帮帮我啦! 我在使用jdbc读取数据的时候,碰到了内存溢出的问题,怎么回事呀 哪里有餐饮系统的介绍?90不够的话,先欠着,多谢了! 在两个ASP程序之间怎么传递参数? ccl2000(不帅不酷的Goblin):其实你真的很酷很帅的。 大侠帮帮我啦(关于SQL语句的问题) 关于Vxd的编译问题 现只有天平,烧杯和水测量玻璃球密度,没有量筒,已知水的密度.写出实验步骤 现只有 测牛奶密度的问题给出的仪器是一架天平,一瓶没有装满的牛奶,一个空奶瓶和定量的水.测牛奶的密度. .密度计是测量___ 的仪器.把它放在密度较大的液体中,它排开的液体体积 则-------【填较大或较小】 现有一家架没有砝码的天平,两只完全相同的10ml的量筒,1只盛有待测液体的玻璃杯,一只滴管,测液体密度天平只能用一次,写出步骤和表达式 测量一瓶牛奶的密度器材只有天平、水、量筒(注意:没有烧杯!)原题是:用天平、水和量筒如何测量一瓶牛奶的密度 测量液体密度的仪器叫做密度计.将其插入被测液体中,待静止后直接读取液面处的刻度值(图10.3-9甲).图10.3乙和图10,3-9丙是自制的简易密度计,它是在木棒的一端缠绕一些铜丝做成的.将其放入 没有量筒,有天平,有墨水瓶,怎样测玻璃球密度 关于测量牛奶密度 今天就要.以下为一些同学用调节好的天平测量牛奶密度实验中的一些步骤:①测出空烧杯的质量m1②向烧杯中倒入一些牛奶,测出烧杯和牛奶的总质量m2③向量筒中倒入一些 1瓶果汁“净含量600ml”如果用天平称这瓶果汁质量为720g,这瓶果汁密度多少 物理——测量密度的实验【测量小石块的密度——实验步骤】:一、测量石块的质量(实验步骤,一共5步)二、利用量筒测量石块的体积(实验步骤,一共3步) 给你一架天平(附带砝码),一瓶没有装满的牛奶,一个牛奶瓶和足够的水(密度已知),怎么测定牛奶的密度?简要说明实验步骤. 各种水果汁的密度(或哪种比哪种沉也可以)帮我解答一下吧!越多越好 初中物理测量塑料块密度 设计实验题塑料块密度小于水 不吸水 测量塑料块密度. 挑选你需要的器材并设计实验. 量筒 塑料块 体积为V铁的小铁块 细针 细线 足量水.选择实验器材 简述实验步 测液体密度时,现在只给如下器材:天平砝码,两个完全相同的烧杯,直尺,足量水,没有量筒,怎么测酱油的密度?测液体密度时,我们通常需要用量筒测出体积,用天平测出质量.现在只给你如下器材: 巧量铁丝的长度.已知铁丝密度为P,质量为Mmg,小明用了一把刻度尺和一支圆珠笔就解决问题 .问小明是如何解决的,写出有关操作步骤,小明的计算公式(用有关量的字母表示),为了减少误差应 将u型压强计的金属盒放入水中...将u型压强计的金属盒放入水中,这时u型管两边水面出现 表明 将金属盒放入水中越深时,u型管两边的水面高度差 这表明 …… 在没有量筒的情况下,怎样测酱油的密度 小明用一满瓶纯净水和放在水平桌面上的海绵做实验做着做着小明想,一瓶纯净水能产生多大的压强,竟把海绵压陷得那么明显.于是就开始想办法计算它.他从商标纸上查到这瓶水的“净含 1、液体为何存在压强?2、液体的压强有何特点?3、U型压强计的工作过程? 一道初二物理密度实验题 测出酱油的密度 要求:天平和量筒各选一个 其他东西随便用 .目前只学了密度 其他什么都没学 什么浮力 压强 什么都没学 从5瓶不同的纯净水,2瓶不同的可乐和6瓶不同的果汁中,拿出2瓶不同类型的饮料,共有多少种不同选法? 将同一压强计的金属盒先后放入甲,乙两种溶液中,观察到的现象是甲的深度大于乙的,而且两压强计显示的压强值相同,问两种液体的密度大小关系是( )A.甲液体的密度一定小于乙液体的密度 天平没有砝码怎么测密度 从5瓶的纯净水,2瓶不同的可乐和6瓶不同的果汁中,拿出2瓶不同类型的饮料,共有多少种不同的选法? 金属盒橡皮膜也会产生压强就是那道压力计的题由于金属盒有一定的体积,不是一个点,因此实验中金属盒在水中深度略小于压强计左右水面的高度差.是因为有弹性所以不能完全传达吗? 初三物理实验题测不规则小木块的密度所给器材:无刻度烧杯、水槽、刻度尺、水和不规则小木块, 小明用刻度尺、两端开口的玻璃管、橡皮膜和水等器材测盐水的密度操作步骤如下:①将玻璃管的一端扎上橡皮膜并倒入水,出现图甲所示的现象,说明水对____有压强.②用刻度尺测出玻璃管 压强计金属盒橡皮膜怎么影响液体压强的测定,使测得的值变小呢 如何测铁球和砖的密度(详细步骤)有实验过程,器材不限!铁球很大很重,其质量无法用天平测量转很大很重,且吸水 小明要测一个玻璃瓶的密度,他手里现在有直尺,烧杯,水,请写出具体步骤 从压强计怎样计算压强,为什么 金属盒的橡皮膜也有压强,就会导致计算压强值不同? 麻烦解答.【2005重庆】下表是小莉同学用如图11所示装置分别测得水和盐水在不同深度时,压强计(U形管中 物理测酒精的密度实验步骤 36.现有天平、量筒、水、空瓶、细线、刻度尺、正方体金属块,请在下列仪器中选用合适的器材测出金属块的密实验项目实验方法 选用仪器 所需测得的物理量 密度表达式实验方法一 实验方 如果用手按压压强计,u型管内水面出现高度差;将橡皮膜放入酒精中,u形管内水面也出现高度差,这说明();这种研究问题的方法是()法 小红利用弹簧测力计、烧杯、石块、细绳和水(ρ水已知)测量酒精密度的过程如下.1.用细绳拴住石块,并用弹簧测力计测出石块重为G;2.将石块浸没在水中并记录弹簧测力计的读数F1.3.________ 为了测量金属块的密度现有器材天平,量筒,水,金属块,细线 还差什么?有砝码 但是已经有量筒了 可以测出体积了 干嘛需要烧杯 当u型管压强计放入水中后无液面差那么实验出现什么问题 利用天平,一个烧杯,水,细线,无量筒,测量小石块密度 实验室有如下器材:水、烧杯、量筒、天平、细线、小金属块、橡皮筋.选用上述器材可以测量小金属块密度.小丽同学的测量步骤是:①在量筒中倒入适量的水,体积为V 1;②把金属块浸没在 在探究液体压强实验中液体压强计u型管装有色水,探头放入水中某一深度,该处深度与两管液面高度差() 用下列器材:天平、烧杯两个、细绳、足够的水,测量小石块的密度. 测量一种矿石的密度.现有器材小矿石块;天平【含砝码】;一个烧杯;足量的水;细线量筒是两种,还要比较可操作性或误差 根据U型管两液面怎样读数?U型管压强计使用原理? 用下列器材:天平、烧杯两个、足够的水,测量小石块的密度. 测土豆密度.材料有一个弹簧测力计一团细线一把厘米刻度尺和菜刀1写出该实验步骤2土豆密度的计算公式3讨论:在密度的测定实践中,影响测定的主要因素有哪些? 方糖,冰糖和白糖哪个吃了最容易胖? u型管压强计的原理还有液体内部的压强受力情况如装满水水瓶及未装满水的水瓶正方倒放压力大小,压强大小,及实验结论 给你天平【无砝码】、量筒、足量的水、烧杯.请你测出酒精的密度 想知道牛奶的密度,只给你一个烧杯,足够的水(已知水的密度),还有托盘天平,该如何设计实验? 密度计和U形管压强计是依据什么原理制成的?RT 如果请你测量酒精的密度,你不需要()仪器?A、量筒 B、烧杯 C、酒精灯 D、天平 给你一小金属块,烧杯,细线,托盘天平(待砝码),足量的水,请你设计一实验,测出此金属块的密度 U型管压强计是研究什么的仪器 密度计是利用______来测量液体密度的仪器. 某同学哎哟测定某中液体的密度,现在有托盘天平,一个烧杯和适量的水,写出简要的实验步骤.其中的哎哟为打错,请直接忽视掉 初二物理密度知识应用题一个空瓶装满水后的总质量为0.7kg,若先在空瓶中先放入108g的某金属块后,再注满水,测得总质量为768g.求:①金属块的体积 ②金属块的密度 密度计是利用_____来测量液体_____的仪器. 请使用天平、砝码、烧杯、水和细线等试验器材,设计一个测量一块小金属的密度的方案使用天平、砝码、烧杯、水和细线等试验器材,设计一个测量一小块金属的密度 关于初二物理密度的实验题6道kuai dian bang mang 不用密度计怎么测量液体的密度?1.根据密度,压强和浮力等知识,设计测量液体密度的方案.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn