Apache Spark 대 Hadoop Mapreduce – 알아야 할 사항
게시 됨: 2019-09-05빅 데이터는 현대 세계에서 편재하는 빅 브라더와 같습니다. 다양한 산업 분야에서 빅 데이터의 사용 사례가 계속 증가하면서 수많은 빅 데이터 기술이 탄생했으며 그 중 Hadoop MapReduce 및 Apache Spark가 가장 인기가 있습니다. MapReduce와 Spark는 모두 Apache Software Foundation에서 개발한 오픈 소스 주력 프로젝트이지만 서로 가장 강력한 경쟁자이기도 합니다.
이 포스트에서는 먼저 MapReduce와 Spark 프레임워크에 대해 이야기한 다음 이들 사이의 주요 차이점에 대해 논의할 것입니다.
스파크와 맵리듀스란?
Spark 는 빠른 계산을 가능하게 하기 위해 특별히 설계된 빅 데이터 프레임워크입니다. 배치, 대화형, 반복 및 스트리밍을 포함한 다양한 워크로드를 처리할 수 있는 범용 데이터 처리 엔진 역할을 합니다. Spark의 주요 기능은 속도입니다. 메모리 내 계산을 실행하여 데이터 처리 속도를 높입니다. 결과적으로 컴퓨터 노드 클러스터에서 잘 작동하고 대규모 데이터 세트를 더 빠르게 처리할 수 있습니다.
RDD(Resilient Distributed Dataset)는 Spark의 기본 데이터 구조입니다. RDD는 각 노드가 클러스터의 서로 다른 노드에서 계산할 수 있는 더 작은 청크로 나누어지는 개체의 불변 분산 컬렉션입니다. 이는 클러스터 내에서 독립적인 데이터 처리를 용이하게 합니다.
MapReduce 는 병렬 및 분산 환경에서 방대한 양의 데이터를 처리하도록 설계된 오픈 소스 프레임워크입니다. 배치 모드에서만 데이터를 처리할 수 있습니다. Hadoop MapReduce에는 HDFS와 YARN의 두 가지 기본 구성 요소가 있습니다.

MapReduce 프로그래밍은 Mapper와 Reducer의 두 부분으로 구성됩니다. Mapper가 데이터 정렬 작업을 처리하는 동안 Reducer는 정렬된 데이터를 결합하여 더 작은 조각으로 변환합니다.
이 두 프레임워크의 근본적인 차이점은 데이터 처리에 대한 타고난 접근 방식입니다. MapReduce가 디스크에서 읽고 쓰는 방식으로 데이터를 처리하는 동안 Spark는 메모리 내에서 수행할 수 있습니다. 따라서 Spark는 MapReduce보다 빠른 처리의 이점을 얻습니다.
그러나 이것이 Spark가 MapReduce보다 낫다는 것을 의미합니까? 불행히도 논쟁은 그렇게 간단하지 않습니다. 이 문제에 대해 더 자세히 설명하기 위해 차이점을 지점별로 분석합니다.
데이터 처리
Spark : 앞서 언급했듯이 Spark는 하이브리드 및 범용 처리 프레임워크에 가깝습니다. 인메모리 연산 및 처리 최적화를 통해 실시간으로 데이터 처리 속도를 높입니다. 스트리밍 워크로드, 대화형 쿼리 실행 및 ML 알고리즘에 탁월합니다. 그러나 RDD를 사용하면 Spark가 디스크에 중요한 데이터만 기록하여 임시로 데이터를 디스크에 저장할 수 있습니다. 따라서 메모리에 프로세스를 로드하고 캐시에 유지합니다. 이것은 Spark를 메모리 집약적으로 만듭니다.
MapReduce : MapReduce는 Hadoop의 기본 배치 처리 엔진입니다. 구성 요소(HDFS 및 YARN)를 통해 배치 데이터를 보다 원활하게 처리할 수 있습니다. 그러나 데이터 처리는 여러 후속 단계에서 이루어지기 때문에 프로세스가 상당히 느립니다. MapReduce의 장점은 영구 저장이 가능하다는 것입니다. 즉, 디스크에 데이터를 저장합니다. 따라서 대규모 데이터 세트를 처리하는 데 적합합니다. 작업이 완료되는 즉시 MapReduce는 프로세스를 종료하므로 다른 서비스와 동시에 실행할 수 있습니다.
사용의 용이성
Spark : 사용 편의성 면에서는 Spark가 최고입니다. Scala(네이티브 언어), Java, Python 및 Spark SQL을 위한 많은 사용자 친화적인 API와 함께 제공됩니다. Spark는 동일한 클러스터에서 스트리밍, 일괄 처리 및 기계 학습을 허용하므로 필요에 따라 데이터 처리 인프라를 쉽게 단순화할 수 있습니다. 또한 Spark에는 사용자에게 즉각적인 피드백을 제공하는 명령을 실행하기 위한 대화형 REPL(읽기-평가-인쇄 루프) 모드가 포함되어 있습니다.
MapReduce : Hadoop MapReduce는 Java로 작성되었기 때문에 구문을 익히는 데 시간이 걸립니다. 따라서 처음에는 많은 사람들이 프로그래밍하기가 상당히 어렵다고 생각할 수 있습니다. MapReduce에는 대화형 모드가 없지만 Pig 및 Hive와 같은 도구를 사용하면 작업이 조금 더 쉬워집니다. 프로그래밍 없이 MapReduce 작업을 실행할 수 있는 다른 도구(예: Xplenty)도 있습니다.

결함 허용
Spark : Spark는 네트워크 I/O를 줄임으로써 내결함성을 위해 RDD 및 다양한 데이터 저장 모델을 사용합니다. RDD의 파티션 손실이 있는 경우 RDD는 메모리에 저장된 정보에서 해당 파티션을 재구축합니다. 따라서 프로세스가 도중에 중단되면 Spark는 처음부터 처리를 시작해야 합니다.
MapReduce : Spark와 달리 MapReduce는 Node Manager 및 ResourceManager를 통해 내결함성을 위해 복제 개념을 사용합니다. 여기서 프로세스가 중간에 실행되지 않으면 MapReduce가 중단된 위치부터 계속 진행되어 시간을 절약할 수 있습니다.
보안
Spark : Spark는 아직 초기 단계이기 때문에 보안 요소가 많이 발달하지 않았습니다. 공유 비밀(비밀번호 인증) 시트를 통한 인증을 지원합니다. 웹 UI의 경우 javax 서블릿 필터를 통해 보호할 수 있습니다. Spark의 YARN 및 HDFS 기능은 Kerberos 인증, HDFS 파일 수준 권한 및 노드 간 암호화를 허용합니다.
MapReduce : MapReduce는 훨씬 더 개발되었으므로 Spark보다 더 나은 보안 기능을 가지고 있습니다. Hadoop의 모든 보안 혜택을 누리며 Knox Gateway 및 Sentry를 비롯한 Hadoop 보안 프로젝트와 통합할 수 있습니다. 유효한 타사 공급업체를 통해 조직은 인증을 위해 Active Directory Kerberos 및 LDAP를 사용할 수도 있습니다.
비용
Spark와 MapReduce는 모두 오픈 소스 프로젝트이지만 둘 모두에 대해 특정 비용을 지불해야 합니다. 예를 들어 Spark는 메모리 내 작업을 실행하기 위해 많은 양의 RAM이 필요했으며 RAM은 하드 디스크보다 비용이 많이 듭니다. 반대로 Hadoop은 디스크 지향적입니다. 값비싼 RAM을 구입할 필요는 없지만 디스크 I/O를 여러 시스템에 분산하려면 시스템에 더 많은 투자를 해야 합니다.
따라서 비용과 관련하여 조직의 요구 사항에 크게 좌우됩니다. 조직에서 대량의 빅 데이터를 처리해야 하는 경우 하드 디스크 공간을 구입하는 것이 방대한 메모리 공간을 구입하는 것보다 훨씬 저렴하기 때문에 Hadoop이 비용 효율적인 옵션이 될 것입니다. 또한 MapReduce에는 하드웨어 및 인력 요구 사항을 건너뛸 수 있는 다양한 Hadoop-as-a-service 오퍼링 및 Hadoop 기반 서비스가 함께 제공됩니다. 이에 비해 Spark-as-a-service 선택은 소수에 불과합니다.

호환성
호환성에 관한 한 Spark와 MapReduce는 서로 호환됩니다. Spark는 Hadoop에서 지원하는 모든 데이터 소스 및 파일 형식과 원활하게 통합될 수 있습니다. 또한 둘 다 확장 가능합니다. 따라서 Spark의 데이터 유형 및 데이터 소스와의 호환성은 Hadoop MapReduce의 호환성과 거의 동일합니다.
보시다시피 Spark와 MapReduce에는 서로를 구분하는 고유한 기능이 있습니다. 예를 들어 Spark는 MapReduce에 없는 실시간 분석을 제공하는 반면 MapReduce는 Spark에 없는 파일 시스템과 함께 제공됩니다. 두 프레임워크 모두 고유한 방식으로 탁월하며 고유한 장점과 단점이 있습니다. 궁극적으로 Spark와 MapReduce 간의 논쟁은 모두 특정 비즈니스 요구 사항과 달성하려는 작업의 종류에 따라 달라집니다.
빅 데이터에 대해 더 알고 싶다면 PG 디플로마 빅 데이터 소프트웨어 개발 전문화 프로그램을 확인하세요. 이 프로그램은 실무 전문가를 위해 설계되었으며 7개 이상의 사례 연구 및 프로젝트를 제공하고 14개 프로그래밍 언어 및 도구, 실용적인 실습을 다룹니다. 워크샵, 400시간 이상의 엄격한 학습 및 최고의 기업과의 취업 지원.
세계 최고의 대학에서 온라인으로 소프트웨어 개발 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
