답변:
하둡은 HDFS, YARN, MapReduce 및 기타 여러 가지를 의미합니다. Spark vs MapReduce 입니까? Spark는 Hadoop에서 실행되거나 실행되기 때문에 이것이 핵심입니다.
Spark를 사용하는 주된 이유는 속도 때문이며, 이는 Map 또는 Reduce 후에 항상 실행이 HDFS로 다시 유지되는 것이 아니라 스테이지간에 데이터를 메모리에 유지할 수 있기 때문입니다. 이 장점은 반복 계산에서 매우 두드러지며 각 단계는 동일한 데이터에 닿는 수십 단계가 있습니다. 여기에서 "100x"속도가 더 빠릅니다. MapReduce가 설계된 간단한 단일 패스 ETL 유사 작업의 경우 일반적으로 더 빠르지 않습니다.
Spark를 사용해야하는 또 다른 이유는 MapReduce에 비해 고급 언어가 더 우수하기 때문입니다. 스칼라를 모방 한 기능적인 프로그래밍 방식의 뷰를 제공하는데, 이는 MapReduce 코드를 작성하는 것보다 훨씬 좋습니다. (Scala를 사용하거나 스파크에 약간 개발 된 Java 또는 Python API를 채택해야하지만). Crunch 와 Cascading 은 MapReduce를 기반으로 유사한 추상화를 이미 제공하지만 여전히 Spark가 좋은 영역입니다.
마지막으로 Spark는 아직 젊지 만 유망한 ML, 그래프 분석 및 스트리밍을위한 하위 프로젝트를 보유하고 있으며 이와 유사한 일관성있는 API를 제공합니다. MapReduce를 사용하면이를 위해 다른 여러 프로젝트 (Mahout, Giraph, Storm)로 전환해야합니다. 아직 '구워지지는 않았지만'하나의 패키지에 넣는 것이 좋습니다.
Spark를 사용하지 않는 이유는 무엇입니까? 나 자신을 역설 :
Spark와 Hadoop의 처리 프레임 워크 인 MapReduce 를 비교하는 것이 공정합니다 . 대부분의 경우 Spark는 MapReduce보다 성능이 우수 할 수 있습니다. 전자는 인 메모리 데이터 처리를 가능하게하여 데이터를 최대 100 배 빠르게 처리 할 수 있습니다. 따라서 통찰력이 필요한 경우 (예 : 필요한 경우) Spark를 사용하는 것이 좋습니다.
그러나 MapReduce는 실제로 거대한 데이터 세트를 처리하는 데 능숙합니다 (처리에 필요한 시간이 충분하다면). 또한 MapReduce가 디스크에서 읽거나 디스크에 쓸 때보다 경제적 인 솔루션입니다. 디스크는 일반적으로 메모리보다 저렴합니다.
기계 학습은 Spark-on-Yarn의 어린 나이에도 불구하고 mapreduce 기반 솔루션보다 Spark 기반 솔루션이 수년 앞서있는 문제 유형의 좋은 예입니다.