Skip to main content
QUICK REVIEW

[论文解读] Muppet: MapReduce-Style Processing of Fast Data

Wang Lam, Lu Liu|arXiv (Cornell University)|Aug 21, 2012
Cloud Computing and Resource Management参考文献 12被引用 19
一句话总结

本文提出 Muppet,一种类似 MapReduce 的框架,用于低延迟、可扩展地处理快速数据流(如社交媒体动态)。它引入了 MapUpdate,一种流处理模型,利用‘板面’(slates)——一类一等的、分布式的、持久化的状态结构——在有状态操作中持续维护汇总信息,从而实现在通用集群上高效、容错的实时分析。

ABSTRACT

MapReduce has emerged as a popular method to process big data. In the past few years, however, not just big data, but fast data has also exploded in volume and availability. Examples of such data include sensor data streams, the Twitter Firehose, and Facebook updates. Numerous applications must process fast data. Can we provide a MapReduce-style framework so that developers can quickly write such applications and execute them over a cluster of machines, to achieve low latency and high scalability? In this paper we report on our investigation of this question, as carried out at Kosmix and WalmartLabs. We describe MapUpdate, a framework like MapReduce, but specifically developed for fast data. We describe Muppet, our implementation of MapUpdate. Throughout the description we highlight the key challenges, argue why MapReduce is not well suited to address them, and briefly describe our current solutions. Finally, we describe our experience and lessons learned with Muppet, which has been used extensively at Kosmix and WalmartLabs to power a broad range of applications in social media and e-commerce.

研究动机与目标

  • 解决传统 MapReduce 在处理高速度、实时数据流方面的局限性。
  • 设计一种框架,使开发人员能够通过简单的映射和更新函数的程序化工作流编写快速数据应用。
  • 实现在通用硬件集群上对连续数据流的低延迟、高度可扩展的处理。
  • 通过‘板面’——分布式、持久化、持续更新的数据结构——显式且透明地管理应用状态,无需开发人员手动处理状态持久化或分发。

提出的方法

  • 提出 MapUpdate,一种流处理模型,其中映射器和更新器在数据流上操作,对数据进行转换、拆分或合并。
  • 采用‘板面’——一等的、分布式的、持久化的状态结构——来总结迄今为止所见的数据,作为更新器的内存。
  • 设计基于工作流的执行模型,将多个映射和更新函数组合成复杂、有状态的数据处理流水线。
  • 在集群中的多台机器之间分发事件处理,状态(板面)按节点分片存储,并持久化到键值存储中以实现容错。
  • 通过从持久化存储重新初始化板面状态并从检查点重新处理事件来管理故障。
  • 使用基于拉取的机制读取板面,从而在处理过程中实现对最新状态值的高效访问。

实验结果

研究问题

  • RQ1能否有效将类似 MapReduce 的编程模型适配到低延迟、高可扩展性的快速数据流处理中?
  • RQ2在分布式流处理系统中,如何在无需开发人员手动处理持久化和分发的情况下,高效且透明地管理应用状态?
  • RQ3MapReduce 与专为实时数据设计的流处理框架之间,关键的架构差异是什么?
  • RQ4如何在分布式环境中高效地将有状态操作组合成复杂、可扩展的数据处理工作流?
  • RQ5在流处理系统中使用一等的、持久化的状态(板面)时,性能与可靠性之间存在哪些权衡?

主要发现

  • Muppet 在生产工作负载中成功实现了对快速数据流(如 Twitter 和 Foursquare 动态)的低延迟、高吞吐量处理,端到端延迟低于一秒。
  • 使用‘板面’作为一等的、分布式的、持久化的状态结构,实现了高效、容错的状态管理,减轻了开发人员负担并提升了系统可靠性。
  • 该框架已在 Kosmix 和 WalmartLabs 广泛使用,用于支持社交媒体和电子商务领域的多样化实时应用,证明了其实际可扩展性和开发人员生产力。
  • MapUpdate 的工作流模型允许将简单的映射和更新函数组合成复杂、有状态的数据处理流水线,实现了表达性强且模块化的流处理。
  • Muppet 的设计避免了对 GPU 或 RDMA 等专用硬件的依赖,可在配备标准以太网的通用集群上部署,同时仍实现低延迟性能。
  • 该系统在开发人员生产力方面优于传统流处理系统,通过抽象化底层状态管理,同时保持与专用系统相当的性能。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。