`
ld_hust
  • 浏览: 170270 次
  • 性别: 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

    S4是Yahoo开发的一种分布式流计算平台,全称为“Simple Scalable Streaming System”(简单可扩展流处理系统)。它是一个开源项目,旨在处理无界数据流,即不断流入且无固定结束时间的数据流。S4的设计目标是为大...

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

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

    s4-概要介绍

    它由 Yahoo! 研究院开发,并在 Apache Software Foundation 的孵化器项目中进行维护。S4 的设计目标是提供一个可扩展、容错性好且灵活的平台,用于构建大规模的实时分析应用。 ### S4 架构 S4 的核心架构基于“无...

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

    S4是Yahoo开发的一个开源的、分布式的流计算平台,专为处理和分析连续的数据流而设计。在本文中,我们将深入探讨S4的核心概念、架构、工作原理以及其源码中的关键组件。 **核心概念** S4的核心概念是事件(Events)...

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

    描述:“基于Java的Yahoo的分布式流计算平台 S4.zip”是一个包含有关Yahoo的S4项目的压缩文件,该平台专注于处理大规模实时数据流。S4是开源的,旨在提供一个可扩展、容错的框架,用于构建和运行分布式流应用。 ###...

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

    这个压缩包“基于java的Yahoo的分布式流计算平台 S4.zip”显然包含了关于S4的相关资料,下面将详细介绍S4及其相关知识点。 S4是一个分布式、容错的实时计算系统,它允许开发者在无共享的架构上构建应用,处理持续...

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

    《基于Java的Yahoo分布式流计算平台S4详解》 在当今大数据时代,高效处理实时数据流成为企业不可或缺的能力。Yahoo的S4(Simple Scalable Streaming System)是一个开源的分布式流计算平台,它专为处理和分析大规模...

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

    本文将深入探讨基于Java的Yahoo的分布式流计算平台S4,旨在为开发者提供一个全面的理解,以便更好地利用这个强大的工具。 S4(Simple Scalable Streaming System)是由Yahoo研发的一个开源分布式流计算平台,专门...

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

    Java源码:Yahoo的分布式流计算平台S4是开源项目,旨在提供一个可扩展的、容错的实时计算系统。S4的核心理念是处理不断流入的数据流,这使得它非常适合大规模实时数据分析应用。在这个压缩包中,你将找到S4项目的源...

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

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

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

    描述中提到的"yahoo流式处理平台s4需要的一些jar包",意味着这些jar包可能与Yahoo对S4平台的定制或优化有关。Yahoo作为一个大型互联网公司,可能会在其内部基础设施中使用S4来处理其产生的海量数据,因此这些jar包...

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

    java资源Yahoo的分布式流计算平台 S4提取方式是百度网盘分享地址

    安全技术-网络信息-社会网络中不良URL的研究.pdf

    在研究过程中,作者不仅关注了不良URL的鉴定,还对爬虫技术、黑白名单技术以及基于特征识别的技术进行了深入的探讨,并结合了雅虎S4内部模型来提高系统的处理速度。 在系统设计与实现方面,本文详细描述了系统的...

    s4:分布式流计算平台

    S4(Simple Scalable Streaming System)是由雅虎实验室开发的一款通用的分布式流计算平台,其核心设计目标是提供一个可扩展、部分容错、可插拔的框架,使开发者能够轻松构建用于处理连续无界数据流的应用程序。...

    计算机前沿报告.pdf

    Yahoo S4和Twitter Storm主要用于实时数据处理,而Dremel则是Google推出的一个用于交互式查询大数据的系统。Apache Spark则是一个用于大规模数据处理的快速、通用的计算引擎,支持多种数据处理模型,包括批处理、...

    漫谈大数据第四期-storm

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

    【翻译】Storm.pdf

    4. Yahoo S4:一个分布式流计算平台,用于处理大量连续数据流。它允许以高可扩展性和容错性的方式进行事件处理。 最后,本文档还讨论了如何利用Apache Storm进行大数据分析,包括分析的材料、方法和结果。在讨论中...

    三星s4可精简的程序

    - **YahoonewsDaemon**、**YahoonewsWidget**、**YahoostockDaemon**、**YahoostockWidget**: 与雅虎新闻和股票信息相关的应用和服务。 ### 结论 以上列举的应用程序涵盖了三星S4预装的各种类型,包括天气、共享、...

    分布式流式计算平台——S4.pdf

    S4(Simple Scalable Streaming System)作为分布式流式计算平台的一个实例,由Yahoo!发布,专注于为开发者提供一个易用的平台,以便开发出处理流式数据的应用程序。S4的设计和应用主要是为了解决搜索广告的展现问题...

Global site tag (gtag.js) - Google Analytics