[논문 리뷰] Muppet: MapReduce-Style Processing of Fast Data
이 논문은 소셜 미디어 피드와 같은 빠른 데이터 스트림을 저지연, 확장 가능한 방식으로 처리하기 위한 MapReduce 스타일 프레임워크인 Muppet을 제안한다. '슬레이트'(slates)라 불리는 일급(first-class), 분산, 영속 저장 상태 구조를 사용하여 상태 기반 연산 동안 지속적인 요약 정보를 유지함으로써, 일반 클러스터에서 효율적이고 장애에 강한 실시간 분석을 가능하게 하는 스트림 처리 모델인 MapUpdate를 도입한다.
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가 고속도, 실시간 데이터 스트림 처리에 한계를 보이는 문제를 해결하기 위해.
- 개발자가 간단한 절차적 워크플로우인 map 및 update 함수를 사용하여 빠른 데이터 애플리케이션을 작성할 수 있도록 프레임워크를 설계하기 위해.
- 일반 하드웨어 클러스터에서 지속적인 데이터 스트림을 저지연, 고확장성으로 처리하기 위해.
- 개발자가 수동으로 상태 영속성이나 분산을 다룰 필요 없이, '슬레이트'—분산, 영속, 지속적으로 업데이트되는 데이터 구조—를 통해 애플리케이션 상태를 명시적이고 투명하게 관리하기 위해.
제안 방법
- 맵퍼와 업데이터가 데이터 스트림에서 작동하는 스트림 처리 모델인 MapUpdate를 도입한다. 이는 데이터를 변환, 분할, 또는 병합한다.
- 데이터 스트림을 요약하는 데 사용되는 '슬레이트'—일급, 분산, 영속 상태 구조—를 사용한다. 이는 업데이터의 메모리 역할을 한다.
- 여러 개의 map 및 update 함수를 복합적인 상태 기반 데이터 처리 파이프라인으로 조합할 수 있는 워크플로우 기반 실행 모델을 설계한다.
- 이벤트 처리를 클러스터의 여러 머신에 분산하며, 상태(슬레이트)는 노드 간에 샤딩되고 키-밸류 스토어에 영속 저장되어 장애 내성성을 확보한다.
- 장애 발생 시, 슬레이트 상태를 영속 저장소에서 재초기화하고 체크포인트에서 이벤트를 재처리함으로써 장애 복구를 관리한다.
- 슬레이트를 읽는 데 풀 기반 메커니즘을 사용하여 처리 중 최신 상태 값을 효율적으로 접근할 수 있도록 한다.
실험 결과
연구 질문
- RQ1저지연성과 고확장성을 확보하면서도, 빠른 데이터 스트림을 처리하기 위해 MapReduce 스타일 프로그래밍 모델을 효과적으로 적응시킬 수 있는가?
- RQ2개발자가 수동으로 영속성과 분산을 다룰 필요 없이, 분산 스트림 처리 시스템에서 응용 프로그램 상태를 효율적이고 투명하게 관리할 수 있는 방법은 무엇인가?
- RQ3MapReduce와 실시간 데이터를 위한 스트림 처리 프레임워크 간의 핵심 아키텍처적 차이는 무엇인가?
- RQ4분산 환경에서 상태 기반 연산을 어떻게 효율적으로 복합적인 확장 가능한 데이터 처리 워크플로우로 조합할 수 있는가?
- RQ5스트리밍 시스템에서 일급 영속 상태(슬레이트)를 사용할 경우 성능와 신뢰성 간의 상충 관계는 어떻게 나타나는가?
주요 결과
- Muppet는 트위터, 퍼스퀘어 피드와 같은 빠른 데이터 스트림을 저지연, 고처리량으로 처리할 수 있으며, 생산 환경 워크로드에서 종단 간 지연 시간이 1초 이내로 구현되었다.
- '슬레이트'를 일급, 분산, 영속 상태 구조로 사용함으로써 효율적이고 장애에 강한 상태 관리가 가능해져 개발자의 부담을 줄이고 시스템의 신뢰성을 향상시켰다.
- 이 프레임워크는 Kosmix와 WalmartLabs에서 널리 사용되어 소셜 미디어 및 전자상거래 분야의 다양한 실시간 애플리케이션을 구동하며 실용적 확장성과 개발 생산성을 입증했다.
- MapUpdate의 워크플로우 모델은 단순한 map 및 update 함수를 조합하여 복잡한 상태 기반 데이터 처리 파이프라인을 구성할 수 있게 해, 표현력 있고 모듈화된 스트림 처리를 가능하게 했다.
- Muppet의 설계는 GPU나 RDMA와 같은 전용 하드웨어에 의존하지 않아 표준 이더넷을 사용하는 일반 클러스터에서도 배치할 수 있으며, 여전히 저지연 성능을 달성한다.
- 저수준 상태 관리를 추상화함으로써 전통적인 스트림 처리 시스템보다 개발 생산성을 높였으며, 전용 시스템과 비교해도 성능는 유사하게 유지한다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.