`
ld_hust
  • 浏览: 166046 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论
阅读更多

 

      目前最流行的大规模数据处理是MapReduce,不过MapReduce只是一个面向批处理的框架。其它情况则是流处理系统或针对特定问题的特殊解决方案(比如Pregel、GraphLab等等),当然还有“应用最广”的并行数据库。

      流计算来自于一个信念:数据的价值随着时间的流逝而降低,所以事件出现后必须尽快地对它们进行处理,最好数据出现时便立刻对其进行处理,发生一个事件进行一次处理,而不是缓存起来成一批处理。

      S4(Simple Scalable Streaming System)是Yahoo最新发布的一个开源流计算平台,引用项目开源地址(http://s4.io/)首页对S4的介绍:

    S4 is a general-purpose, distributed, scalable, partially fault-tolerant, pluggable platform that allows

programmers to easily develop applications for processing continuous unbounded streams of data.

      即S4是一个通用的、可扩展性良好、具有部分容错能力、支持插件的分布式流计算平台,在该平台上程序员可以很方便地开发处理流数据的应用。

      S4发布之后自然是立刻得到了大家的广泛关注(相对比较落后的我都在半个月前就看过本篇论文了,无奈在集中精力准备学位课考试),以下是我的论文阅读笔记 :

 

==== (这是liulixiang.info上有意义的分割线)====

 

S4: Distributed Stream Computing Platform

 

by Leonardo Neumeyer, Bruce Robbins, Anish Nair, Anand Kesari

from Yahoo! Labs

论文pdf地址:KDCloud 2010 S4.pdf

 

开发流处理平台的动机:

 

流计算的必要性:

     实时搜索、高频率交易、社交网络等需要可扩展性好、能处理高频数据和大规模数据的流计算解决方案。

    {liulixiang注:流计算已经有多年历史,最典型的应用流处理的领域是金融机构的交易系统——这种系统的需求体现了流处理的优势:实时性、transaction控制。不过在数据规模和可扩展性方面的要求并不高}

Yahoo创立该项目的直接业务需求:

     在搜索引擎的“cost-per-click”广告中,根据当前情景上下文(用户偏好、地理位置、已发生的查询和点击等)估计用户点击的可能性,开发S4的主要目的是为了处理用户反馈。

为什么不用Hadoop?

      在线算法对框架的需求:suitable for both research and production environments。即不断对算法进行实验和调整所需的灵活性(flexibility),和实际应用中的可扩展性(scalability)和高可用性(HA:High availability)。

      MapReduce模型主要针对批处理(batch processing)应用,可以预先调度和控制作业的执行。流计算面向的是不可控的事件(load shedding问题)。搭建两种应用都适用的系统很复杂(当然也有在线的MapReduce框架[xx])。即尽管MapReduce编程模型在批数据处理和大规模集群方面具有很多优点(advance),但是并不满足通用分布式流计算软件的需要。

      目前已经有一些通过把输入数据划分成段使用MapReduce平台实现流处理策略的方案,但是延迟是一个很大的问题,而小段数据需要解决段之间的依赖问题,最佳大小完全依赖于应用。

 

 

基本假设和设计目标:

 

系统基本假设:

  • 允许故障时的数据丢失(Lossy failover is acceptable)。
  • 集群运行时不会添加或减少节点。

设计目标:

  1. 提供简单的编程接口;
  2. 设计一个由普通硬件组成的高可用、可扩展性良好的集群;
  3. 最小化延时(minimise latency):使用本地内存,尽量避免磁盘I/O。
  4. 使用分散、对称的结构(decentralized and symmetric architecture):所有节点功能一样,无中心节点和特殊功能节点(方便部署和维护);
  5. 可插拔的结构以满足通用和定制的需要;
  6. 设计思想要比较友好:容易编程、比较灵活。

系统未考虑的问题(根据系统假设):

  • 负载load balancing
  • 健壮性robust

设计模型:

Actor模型+MapReduce

Actor模型是最适合设计目标的模型:在普通硬件上的分布式操作+避免不同机器间共享内存。

{liulixiang注:作者提到了IBM同类型系统SPC(IBM’s Stream Processing Core Middleware)使用的是PubSub模型,也是目前最流行的事件处理模型之一}

 

 

 

设计细节

 

流(Stream)定义为一系列的元素(events),每个元素用(K, A)表示。(K:tuple-valued keys; A:attributes)

 

系统组成之Precessing Elemens(PEs):

基本计算单元;一个计算单元实例由四个部分标识:

  • 功能functionality
  • 接受(消耗)的事件Types of vents
  • (键值)属性Keyed attributes
  • (属性)值Value(of the ekyed attributes)

特殊的keyless PE——无属性PE,接受所有满足类型限制的的事件,通常处于输入层

Standard PE:完成count、join、aggregate等功能。

PE的生存使用TTL控制。

 

系统组成之Processing Nodes(PNs)

image

 

PN是逻辑节点——负责事件监听、输入事件处理、发射输出事件

使用基于键值的哈希函数发送事件(一个事件可能发给多个PE)

PN使用PEC(Processing element container)根据event调用对应的PE

特殊的PE对象:无属性值的PE prototype,用作初始化和PE的克隆

每个keyed PE传给有且仅有一个PN

 

通信层:

集群管理:进行failover、逻辑节点到物理节点的映射、硬件失败管理等

提供Java\C++等的API、支持部分网络协议

使用ZooKeeper进行协同(coordinate)管理

 

 

编程模型

 

开发者只需要实现processEvent()和output()两种处理器(handler)

image

 

流计算实例

  • CTR预估( Click-Through Rate Computation)
  • 在线参数优化( online parameter optimization (OPO) system)

image

 

== 分隔线 ==

     由于去年来间断地关注分布式事件系统,所以看到流计算、复杂事件处理之类的应用或paper就比较激动。S4的出现很好地说明了流计算在互联网应用中有较大作用,该paper中的相关应用场景应该的相关公司将考虑引入流计算的必要性,国内互联网也应该很快会开始(或已经)关注流计算。

自己整理了一个事件处理的书单:

Event-Processing豆列by liulixiang.info

 

更新,已经有人对该论文做全文翻译发布在百度文库——Yahoo!的分布式流计算平台(S4)论文的中文版:


– EOF –

 

分享到:
评论
1 楼 issllx 2011-09-20  

看到此文后对iteye深表遗憾

相关推荐

    Yahoo的分布式流计算平台 S4

    Yahoo的分布式流计算平台 S4

    yahoo s4 部署cluster1时用的编译文件

    运行s4中myApp程序时,./s4 deploy -s4r=`pwd`/build/libs/myApp.s4r -c=cluster1 -appName=myApp,该命令若运行失败是,可将该文件考到myApp文件夹下,跳过该命令,运行下面命令即可

    Yahoo的分布式流计算平台 S4源码

    Yahoo的分布式流计算平台 S4源码

    基于Java的Yahoo的分布式流计算平台 S4.zip

    基于Java的Yahoo的分布式流计算平台 S4.zip

    基于java的Yahoo的分布式流计算平台 S4.zip

    基于java的Yahoo的分布式流计算平台 S4.zip

    java源码:Yahoo的分布式流计算平台 S4.rar

    java源码:Yahoo的分布式流计算平台 S4.rar

    基于java的开发源码-Yahoo的分布式流计算平台 S4.zip

    基于java的开发源码-Yahoo的分布式流计算平台 S4.zip

    基于Java的实例源码-Yahoo的分布式流计算平台 S4.zip

    基于Java的实例源码-Yahoo的分布式流计算平台 S4.zip

    s4:分布式流计算平台

    s4:分布式流计算平台,yahoo的云计算流处理平台

    s4需要的包,已经测试过,很全

    yahoo流式处理平台s4需要的一些jar包~

    漫谈大数据第四期-storm

    可以和Storm相提并论的系统有Esper、Streambase、HStreaming和Yahoo S4。其中和Storm最接近的就是S4。两者最大的区别在于Storm会保证消息得到处理。这些系统中有的拥有内建数据存储层,这是Storm所没有的,如果需要...

    小程序 Yahoo的分布式流计算平台 S4(源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    数据分析方法与技术.pptx

    解决方案: Hadoop(MapReduce技术) 流计算(twitter的storm和yahoo!的S4) Spark(基于内存的分布式计算) 大数据技术: 数据采集:ETL工具 数据存取:关系数据库;NoSQL;SQL 基础架构支持:云存储;分布式文件...

    大数据分析一体机.pptx

    流计算(twitter的storm和yahoo的S4) 一些相关技术 大数据分析一体机全文共31页,当前为第5页。 1、对现有数据库管理技术的挑战 传统的数据库部署不能处理数TB 级别的数据,也不能很好的支持高级别的数据分析。急速...

    java开源包1

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包11

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包2

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包3

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包6

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

    java开源包5

    JOpenID是一个轻量级的OpenID 2.0 Java客户端,仅50KB+(含源代码),允许任何Web网站通过OpenID支持用户直接登录而无需注册,例如Google Account或Yahoo Account。 JActor的文件持久化组件 JFile JFile 是 JActor ...

Global site tag (gtag.js) - Google Analytics