2013-05-22 6 views
10

저는 Spark (Berkeley) 클러스터 컴퓨팅 시스템을 연구하고 있습니다. 내 연구에서 Redis, Memcachedb 등의 메모리 내 시스템에 대해 배웠습니다. 누군가가 SPARK와 REDIS (및 MEMCACHEDB)를 비교할 수 있다면 좋을 것입니다. Spark는 이러한 다른 인 메모리 시스템보다 어떤 시나리오에서 이점이 있습니까?메모리 내 클러스터 컴퓨팅 시스템 비교

답변

30

그들은 완전히 다른 짐승입니다.

Redis 및 memcachedb는 분산 된 상점입니다. Redis는 다양한 데이터 구조를 특징으로하는 선택적 지속성이있는 순수한 메모리 내장 시스템입니다. Memcachedb는 Berkeley-DB 위에 memcached API를 제공합니다. 두 경우 모두 OLTP 응용 프로그램에 의해 사용되거나, 실시간 데이터 분석 (즉석 데이터 집계)을 위해 사용됩니다.

Redis와 memcachedb는 모두 저장된 데이터를 효율적으로 반복적으로 처리하는 메커니즘이 없습니다. 저장된 데이터를 쉽게 스캔하여 적용 할 수 없습니다. 그들은 이것을 위해 설계되지 않았습니다. 또한 클라이언트 측 수동 샤딩을 사용하는 경우를 제외하고는 클러스터에서 스케일 아웃 할 수 없습니다 (Redis 클러스터 구현은 계속 진행 중입니다).

스파크는 메모리 내 분산 데이터 세트를 제공하여 대규모 분석 작업 (특히 반복 작업)을 신속하게 처리 할 수있는 시스템입니다. Spark을 사용하면 클러스터 클러스터에서 효율적인 반복 맵/축소 작업을 구현할 수 있습니다.

Redis와 Spark는 모두 메모리 내 데이터 관리에 의존합니다. 그러나 Redis (및 memcached)는 다른 OLTP NoSQL 상점과 동일한 야구장에서 플레이하며 Spark는 Hadoop지도/축소 시스템과 유사합니다.

Redis는 하위 밀리 초 대기 시간으로 높은 처리량으로 수많은 빠른 저장/검색 작업을 실행하는 데 적합합니다. Spark은 상당한 양의 데이터에 대해 기계 학습, 그래프 분석, 대화 형 데이터 마이닝 등을위한 대규모 반복 알고리즘을 구현하는 데 빛을 발합니다.

업데이트 : 스톰

질문에 대한 추가 질문 (아래 설명 참조) 스톰에 스파크를 비교하는 것입니다.

스파크 (Spark)는 기존 데이터 볼륨이 크면 데이터를 프로세스로 옮기는 대신 프로세스를 데이터로 옮기는 것이 더 저렴하다는 아이디어를 기반으로합니다. 각 노드는 데이터 세트를 저장 (또는 캐시)하고 작업은 노드에 제출됩니다. 따라서 프로세스가 데이터로 이동합니다. I/O를 피하기 위해 적극적으로 사용되는 메모리 저장소를 제외하고는 (이전 단계의 결과가 다음 단계의 입력 일 때) 반복 알고리즘에 효율적으로 작용한다는 점만 제외하면 Hadoop map/reduce와 매우 유사합니다. Shark는 스파크 (Ad-hoc 분석 쿼리 지원) 위에 구축 된 쿼리 엔진입니다.

스톰은 스파크의 완전한 건축 적 반대점으로 볼 수 있습니다. 스톰은 분산 형 스트리밍 엔진입니다. 각 노드는 기본 프로세스를 구현하고 데이터 항목은 상호 연결된 노드의 네트워크로/외부로 흐릅니다 (Spark와는 반대). Storm을 사용하면 데이터가 프로세스로 이동합니다.

두 프레임 워크는 방대한 양의 데이터 계산을 병렬 처리하는 데 사용됩니다.

그러나 Storm은 생성/수집 된 작은 데이터 항목 (예 : Twitter 스트림에서 일부 집계 함수 또는 분석을 실시간으로 계산하는 것)을 동적으로 처리하는 것이 좋습니다.

Spark는 Spark 클러스터로 가져온 기존 데이터 모음 (Hadoop과 같은)에 적용되며 메모리 관리로 인한 빠른 검색 기능을 제공하며 반복 알고리즘에 대한 전체 I/O 수를 최소화합니다.

+2

폭풍은 어떨까요? 스파크 (또는 상어)와 어떻게 비교할 수 있습니까? – void

+0

내 업데이트보기 ... –

+0

업데이트 해 주셔서 감사합니다. 괜찮 으면 한 가지 더 질문이 있습니다. 스파크에는 실시간 분석을위한 '스파크 스트리밍'도구가 있습니다. Storm (다른 실시간 분석 도구)과 비교할 수 있습니까? 거기에 어떤 이점이 있습니까? – void