Spark는 보다 빠른 데이터 분석을 목표로 하는 메모리 컴퓨팅 기반의 오픈 소스 클러스터 컴퓨팅 시스템입니다. Spark는 매우 작고 정교하며 버클리 캘리포니아 대학교 AMP 연구소의 Matei가 이끄는 소규모 팀에 의해 개발되었습니다. 사용된 언어는 Scala이고, 프로젝트의 핵심 부분에 대한 코드는 Scala 파일이 63개뿐이어서 매우 짧고 간결합니다.
Spark는 Hadoop과 유사한 오픈 소스 클러스터 컴퓨팅 환경이지만 둘 사이에는 몇 가지 차이점이 있습니다. 이러한 유용한 차이점으로 인해 Spark는 특정 워크로드에서 더 나은 성능을 발휘합니다. 대화형 쿼리를 제공할 수 있을 뿐만 아니라 반복적인 작업 부하도 최적화할 수 있는 메모리 분산 데이터 세트입니다.
Spark는 Scala 언어로 구현되었으며 Scala를 애플리케이션 프레임워크로 사용합니다. Hadoop과 달리 Spark와 Scala는 긴밀하게 통합되어 있으며 Scala를 사용하면 분산 데이터 세트를 로컬 컬렉션 개체만큼 쉽게 조작할 수 있습니다.
Spark는 분산 데이터 세트에서 반복 작업을 지원하기 위해 만들어졌지만 실제로는 Hadoop을 보완하며 Hadoop 파일 시스템에서 병렬로 실행될 수 있습니다. 이 동작은 Mesos라는 타사 클러스터 프레임워크를 통해 지원됩니다. UC Berkeley AMP Lab(Algorithms, Machines, and People Lab)에서 개발한 Spark는 대기 시간이 짧은 대규모 데이터 분석 애플리케이션을 구축하는 데 사용할 수 있습니다.
Spark 클러스터 컴퓨팅 아키텍처
Spark는 Hadoop과 유사하지만 유용한 차이점이 있는 새로운 클러스터 컴퓨팅 프레임워크를 제공합니다. 첫째, Spark는 클러스터 컴퓨팅의 특정 유형의 워크로드, 즉 병렬 작업 간에 작업 데이터 세트(예: 기계 학습 알고리즘)를 재사용하는 워크로드를 위해 설계되었습니다. 이러한 유형의 워크로드를 최적화하기 위해 Spark는 데이터 세트가 메모리에 캐시되어 액세스 대기 시간을 줄이는 인메모리 클러스터 컴퓨팅 개념을 도입합니다.
Spark에서는 RDD(Resilient Distributed Dataset)라는 추상화도 도입했습니다. RDD는 노드 집합에 분산된 읽기 전용 개체 모음입니다. 이러한 컬렉션은 탄력적이며 데이터 세트의 일부가 손실된 경우 재구성될 수 있습니다. 부분 데이터 세트를 재구성하는 프로세스는 "계보"(즉, 데이터 파생 프로세스를 기반으로 데이터 세트의 부분 재구성을 허용하는 정보)를 유지하는 내결함성 메커니즘에 의존합니다. RDD는 파일에서 생성될 수 있는 Scala 객체, 병렬화된 슬라이스(노드 전체에 분산), RDD의 또 다른 변환 형태, 그리고 궁극적으로 캐시된 요청과 같은 기존 RDD의 지속성에 대한 완전한 변경으로 표시됩니다. 기억 속에.
Spark의 애플리케이션을 드라이버라고 하며, 이러한 드라이버는 단일 노드에서 또는 노드 집합에서 병렬로 수행되는 작업을 구현합니다. Hadoop과 마찬가지로 Spark는 단일 노드 클러스터 또는 다중 노드 클러스터를 지원합니다. 다중 노드 작업의 경우 Spark는 Mesos 클러스터 관리자를 사용합니다. Mesos는 분산 애플리케이션의 리소스 공유 및 격리를 위한 효율적인 플랫폼을 제공합니다. 이 설정을 사용하면 Spark와 Hadoop이 공유 노드 풀에서 공존할 수 있습니다.
Apache와 관련된 더 많은 기술 기사를 보려면 Apache Tutorial 컬럼을 방문하여 알아보세요!
위 내용은 아파치 스파크가 뭐야?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!