Spark-소개
업계에서는 데이터 세트를 분석하기 위해 Hadoop을 광범위하게 사용하고 있습니다. 그 이유는 Hadoop 프레임 워크가 단순 프로그래밍 모델 (MapReduce)을 기반으로하며 확장 가능하고 유연하며 내결함성이 있으며 비용 효율적인 컴퓨팅 솔루션을 가능하게하기 때문입니다. 여기서 주요 관심사는 쿼리 간 대기 시간과 프로그램 실행 대기 시간 측면에서 대용량 데이터 세트 처리 속도를 유지하는 것입니다.
Spark는 Hadoop 컴퓨팅 컴퓨팅 소프트웨어 프로세스의 속도를 높이기 위해 Apache Software Foundation에서 도입했습니다.
일반적인 믿음과는 반대로 Spark is not a modified version of Hadoop자체 클러스터 관리 기능이 있기 때문에 실제로 Hadoop에 의존하지 않습니다. Hadoop은 Spark를 구현하는 방법 중 하나 일뿐입니다.
Spark는 두 가지 방식으로 Hadoop을 사용합니다. storage 두 번째는 processing. Spark에는 자체 클러스터 관리 계산이 있으므로 저장 용도로만 Hadoop을 사용합니다.
Apache Spark
Apache Spark는 빠른 계산을 위해 설계된 초고속 클러스터 컴퓨팅 기술입니다. Hadoop MapReduce를 기반으로하며 MapReduce 모델을 확장하여 대화 형 쿼리 및 스트림 처리를 포함하는 더 많은 유형의 계산에 효율적으로 사용합니다. Spark의 주요 기능은in-memory cluster computing 이는 애플리케이션의 처리 속도를 증가시킵니다.
Spark는 배치 애플리케이션, 반복 알고리즘, 대화 형 쿼리 및 스트리밍과 같은 광범위한 워크로드를 처리하도록 설계되었습니다. 각 시스템에서 이러한 모든 워크로드를 지원하는 것 외에도 별도의 도구를 유지 관리하는 관리 부담이 줄어 듭니다.
Apache Spark의 진화
Spark는 Matei Zaharia가 UC Berkeley의 AMPLab에서 2009 년에 개발 한 Hadoop의 하위 프로젝트 중 하나입니다. BSD 라이선스에 따라 2010 년에 오픈 소스되었습니다. 2013 년 Apache 소프트웨어 재단에 기부되었으며 이제 Apache Spark는 2014 년 2 월부터 최상위 수준의 Apache 프로젝트가되었습니다.
Apache Spark의 기능
Apache Spark에는 다음과 같은 기능이 있습니다.
Speed− Spark는 Hadoop 클러스터에서 애플리케이션을 실행하는 데 도움이됩니다. 메모리에서 최대 100 배, 디스크에서 실행할 때 10 배 더 빠릅니다. 이는 디스크에 대한 읽기 / 쓰기 작업 수를 줄임으로써 가능합니다. 중간 처리 데이터를 메모리에 저장합니다.
Supports multiple languages− Spark는 Java, Scala 또는 Python으로 내장 된 API를 제공합니다. 따라서 다른 언어로 응용 프로그램을 작성할 수 있습니다. Spark는 대화 형 쿼리를위한 80 개의 고급 연산자를 제공합니다.
Advanced Analytics− Spark는 'Map'및 'reduce'만 지원하지 않습니다. 또한 SQL 쿼리, 스트리밍 데이터, ML (기계 학습) 및 그래프 알고리즘을 지원합니다.
Hadoop에 구축 된 Spark
다음 다이어그램은 Hadoop 구성 요소로 Spark를 빌드 할 수있는 세 가지 방법을 보여줍니다.
아래 설명과 같이 Spark 배포에는 세 가지 방법이 있습니다.
Standalone− Spark Standalone 배포는 Spark가 HDFS (Hadoop Distributed File System) 위에 자리를 차지하고 HDFS를위한 공간이 명시 적으로 할당됨을 의미합니다. 여기서 Spark와 MapReduce는 클러스터의 모든 Spark 작업을 처리하기 위해 나란히 실행됩니다.
Hadoop Yarn− Hadoop Yarn 배포는 간단히 말해 사전 설치 또는 루트 액세스없이 Yarn에서 스파크가 실행됨을 의미합니다. Spark를 Hadoop 에코 시스템 또는 Hadoop 스택에 통합하는 데 도움이됩니다. 다른 구성 요소가 스택 위에서 실행될 수 있습니다.
Spark in MapReduce (SIMR)− MapReduce의 Spark는 독립 실행 형 배포 외에 Spark 작업을 시작하는 데 사용됩니다. SIMR을 통해 사용자는 Spark를 시작하고 관리 액세스없이 셸을 사용할 수 있습니다.
Spark의 구성 요소
다음 그림은 Spark의 다양한 구성 요소를 보여줍니다.
Apache Spark 코어
Spark Core는 다른 모든 기능을 기반으로하는 Spark 플랫폼의 기본 일반 실행 엔진입니다. 메모리 내 컴퓨팅을 제공하고 외부 스토리지 시스템의 데이터 세트를 참조합니다.
Spark SQL
Spark SQL은 정형 및 반 정형 데이터를 지원하는 SchemaRDD라는 새로운 데이터 추상화를 도입하는 Spark Core의 상위 구성 요소입니다.
스파크 스트리밍
Spark Streaming은 Spark Core의 빠른 스케줄링 기능을 활용하여 스트리밍 분석을 수행합니다. 미니 배치로 데이터를 수집하고 해당 미니 배치 데이터에 대해 RDD (Resilient Distributed Datasets) 변환을 수행합니다.
MLlib (머신 러닝 라이브러리)
MLlib는 분산 메모리 기반 Spark 아키텍처로 인해 Spark 위의 분산 기계 학습 프레임 워크입니다. 벤치 마크에 따르면 MLlib 개발자가 ALS (Alternating Least Squares) 구현에 대해 수행했습니다. Spark MLlib는 Hadoop 디스크 기반 버전보다 9 배 빠릅니다.Apache Mahout (Mahout이 Spark 인터페이스를 얻기 전).
GraphX
GraphX는 Spark 기반의 분산 그래프 처리 프레임 워크입니다. Pregel abstraction API를 이용하여 사용자 정의 그래프를 모델링 할 수있는 그래프 연산 표현을위한 API를 제공합니다. 또한이 추상화를 위해 최적화 된 런타임을 제공합니다.