Apache Spark와 Hadoop의 사용 사례는 무엇입니까


30

Hadoop 2.0 및 YARN을 사용하면 Hadoop은 더 이상 맵 감소 솔루션에만 국한되지 않습니다. 이러한 발전과 함께 Apache Spark와 Hadoop의 사용 사례는 모두 HDFS 위에 있다고 생각합니까? Spark의 소개 문서를 읽었지만 Hadoop과 비교하여 Spark 로보 다 효율적이고 해결하기 쉬운 문제가있는 사람이 있는지 궁금합니다.

답변:


40

하둡은 HDFS, YARN, MapReduce 및 기타 여러 가지를 의미합니다. Spark vs MapReduce 입니까? Spark는 Hadoop에서 실행되거나 실행되기 때문에 이것이 핵심입니다.

Spark를 사용하는 주된 이유는 속도 때문이며, 이는 Map 또는 Reduce 후에 항상 실행이 HDFS로 다시 유지되는 것이 아니라 스테이지간에 데이터를 메모리에 유지할 수 있기 때문입니다. 이 장점은 반복 계산에서 매우 두드러지며 각 단계는 동일한 데이터에 닿는 수십 단계가 있습니다. 여기에서 "100x"속도가 더 빠릅니다. MapReduce가 설계된 간단한 단일 패스 ETL 유사 작업의 경우 일반적으로 더 빠르지 않습니다.

Spark를 사용해야하는 또 다른 이유는 MapReduce에 비해 고급 언어가 더 우수하기 때문입니다. 스칼라를 모방 한 기능적인 프로그래밍 방식의 뷰를 제공하는데, 이는 MapReduce 코드를 작성하는 것보다 훨씬 좋습니다. (Scala를 사용하거나 스파크에 약간 개발 된 Java 또는 Python API를 채택해야하지만). CrunchCascading 은 MapReduce를 기반으로 유사한 추상화를 이미 제공하지만 여전히 Spark가 좋은 영역입니다.

마지막으로 Spark는 아직 젊지 만 유망한 ML, 그래프 분석 및 스트리밍을위한 하위 프로젝트를 보유하고 있으며 이와 유사한 일관성있는 API를 제공합니다. MapReduce를 사용하면이를 위해 다른 여러 프로젝트 (Mahout, Giraph, Storm)로 전환해야합니다. 아직 '구워지지는 않았지만'하나의 패키지에 넣는 것이 좋습니다.

Spark를 사용하지 않는 이유는 무엇입니까? 나 자신을 역설 :

  • Spark는 주로 포팅 된 Java API가있는 스칼라입니다. MapReduce는 Java 기반 개발자에게 친숙하고 친숙 할 수 있습니다.
  • Spark보다 더 많은 MapReduce 전문 기술이 있습니다.
  • MapReduce가 설계 한 데이터 병렬, 단일 패스, ETL과 유사한 작업의 경우 MapReduce는 Spark와 비교하여 더 가볍습니다.
  • 스파크는 상당히 성숙하여 이제는 YARN도 있지만 Spark-on-YARN은 여전히 ​​새롭습니다. 둘은 아직 최적으로 통합되지 않았을 수 있습니다. 예를 들어 최근까지 스파크가 YARN에 코어 수를 기반으로 할당을 요청할 수 있다고 생각하지 않습니까? 즉 : MapReduce를 이해하고 관리하고 조정하기가 더 쉬울 수 있습니다.

설명 주셔서 감사합니다. 메모리에 데이터를 유지하는 것은 몇 가지 흥미로운 의미가 있습니다. Spark의 Resilient Distributed Dataset 개념을 좀 더 자세히 읽어 보겠습니다.
idclark

3
나처럼이 질문을 가진 많은 사람들에게 정말 명확하고 유용한 답변을 얻으려면 +1하십시오.
vefthym

3
Sean Owen은 Spark에 관한 새로운 O'Reilly 책의 공동 저자입니다. :-)
sheldonkreger

1

YARN에 대해서는 확실하지 않지만, 데이터가 계산 노드의 메모리에 잘 맞을 수 있다면 Spark는 Hadoop (100 배 더 빠르게 광고 됨)과 비교할 때 실질적인 차이가 있다고 생각합니다. 단순히 하드 디스크 액세스를 피하기 때문입니다. 데이터가 메모리에 맞지 않으면 버퍼링으로 인해 여전히 약간의 이득이 있습니다.


0

좋은 정보 @Sean Owen. 하나 더 추가하고 싶습니다. Spark는 공통 서빙 레이어에 쓸 수있는 기능으로 Batch 및 Streaming 레이어를 모두 처리하는 Lambda 아키텍처에서 통합 데이터 파이프 라인을 구축하는 데 도움이 될 수 있습니다. 배치와 스트리밍 사이의 논리를 재사용하는 것이 큰 이점입니다. 또한 Spark1.3의 스트리밍 K- 평균 알고리즘은 1.4의 뛰어난 작업 모니터링 및 프로세스 시각화와는 별도로 ML에 추가되었습니다.


0

Spark와 Hadoop의 처리 프레임 워크 인 MapReduce비교하는 것이 공정합니다 . 대부분의 경우 Spark는 MapReduce보다 성능이 우수 할 수 있습니다. 전자는 인 메모리 데이터 처리를 가능하게하여 데이터를 최대 100 배 빠르게 처리 할 수 ​​있습니다. 따라서 통찰력이 필요한 경우 (예 : 필요한 경우) Spark를 사용하는 것이 좋습니다.

  • 고객 분석을 실행합니다. 예를 들어 고객의 행동을 특정 고객 세그먼트의 행동 패턴과 비교하고 특정 행동을 유발합니다.
  • 위험을 관리하고 다양한 시나리오를 예측합니다.
  • 실시간으로 사기를 탐지합니다.
  • 산업 빅 데이터 분석을 실행하고 이상 및 기계 고장을 예측합니다.

그러나 MapReduce는 실제로 거대한 데이터 세트를 처리하는 데 능숙합니다 (처리에 필요한 시간이 충분하다면). 또한 MapReduce가 디스크에서 읽거나 디스크에 쓸 때보다 경제적 인 솔루션입니다. 디스크는 일반적으로 메모리보다 저렴합니다.


-1

기계 학습은 Spark-on-Yarn의 어린 나이에도 불구하고 mapreduce 기반 솔루션보다 Spark 기반 솔루션이 수년 앞서있는 문제 유형의 좋은 예입니다.


2
나는 이것이 사실이라고 생각하지 않지만, 나는 당신이 얻는 것을 알고 있다고 생각합니다. 인 메모리는 반복 계산을 위해 훨씬 빠르게 작동하고 많은 ML이 반복적입니다.
Sean Owen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.