Nice programing

Apache Spark 대 Akka

nicepro 2021. 1. 5. 21:11
반응형

Apache Spark 대 Akka


Apache Spark와 AKKA의 차이점을 말씀해 주시겠습니까? 두 프레임 워크가 모두 분산 및 병렬 계산을 프로그래밍하는 것을 의미했지만 그 사이의 링크 나 차이점은 보이지 않습니다.

또한 각각에 적합한 사용 사례를 얻고 싶습니다.


Apache Spark는 실제로 Akka를 기반으로 구축되었습니다.

Akka는 Scala 또는 Java에서 반응 형, 분산 형, 병렬 및 탄력적 인 동시 애플리케이션을 생성하기위한 범용 프레임 워크입니다. Akka는 Actor 모델을 사용하여 모든 스레드 관련 코드를 숨기고 확장 가능하고 내결함성이있는 시스템을 쉽게 구현할 수있는 정말 간단하고 유용한 인터페이스를 제공합니다. Akka의 좋은 예는 휴대폰에서 들어오는 데이터를 소비하고 처리하여 일종의 저장소로 보내는 실시간 애플리케이션입니다.

Apache Spark (Spark Streaming 아님)는 맵 축소 알고리즘의 일반화 된 버전을 사용하여 배치 데이터를 처리하는 프레임 워크입니다. Apache Spark의 좋은 예는 데이터에 대한 더 나은 통찰력을 얻기 위해 저장된 데이터의 일부 메트릭을 계산하는 것입니다. 데이터는 요청시로드되고 처리됩니다.

Apache Spark Streaming은 데이터가 이미 저장되어있는 경우와 동일한 방식으로 거의 실시간에 가까운 소량의 데이터 배치에 대해 유사한 작업과 기능을 수행 할 수 있습니다.

2016 년 4 월 업데이트

Apache Spark 1.6.0부터 Apache Spark는 더 이상 노드 간 통신을 위해 Akka에 의존하지 않습니다. 의견을 주신 @EugeneMi에게 감사드립니다.


Spark는 Akka가 응용 프로그램에서 데이터 및 명령 흐름을 관리하는 데이터 처리를위한 것입니다.

TL; DR

Spark와 Akka는 용도와 사용 사례가 다른 두 가지 프레임 워크입니다.

분산 또는 기타 방식으로 응용 프로그램을 구축 할 때 스레드 사용과 같은 병렬 접근 방식을 통해 작업을 예약하고 관리해야 할 수 있습니다. 많은 스레드가있는 거대한 애플리케이션을 상상해보십시오. 얼마나 복잡할까요?

TypeSafe (현재 Lightbend라고 함) Akka 툴킷을 사용하면 스레드에 대한 추상화 계층을 제공하는 Actor 시스템 (원래 Erlang에서 파생 됨)을 사용할 수 있습니다. 이러한 행위자는 메시지로 모든 것을 전달하여 서로 통신 할 수 있으며 다른 코드를 차단하지 않고 병렬로 작업을 수행 할 수 있습니다.

Akka는 분산 된 환경에서 액터를 실행하는 방법을 제공하여 최고 수준의 체리를 제공합니다.

반면에 Apache Spark는 수동으로 처리 할 수없는 대규모 데이터 세트를위한 데이터 처리 프레임 워크입니다. Spark는 기존 데이터 구조에 대한 추상화 계층과 같은 분산 목록 인 RDD (또는 탄력적 인 분산 데이터 세트)를 사용하여 작업이 서로 병렬로 다른 노드에서 수행 될 수 있도록합니다.

Spark는 Akka 툴킷을 사용하여 서로 다른 노드 간의 작업을 예약합니다.


Apache Spark :

Apache Spark ™ 는 대규모 데이터 처리를위한 빠르고 일반적인 엔진입니다.

Spark 는 메모리에서 Hadoop MapReduce보다 최대 100 배, 디스크에서 10 배 빠르게 프로그램을 실행합니다.

Spark 는 본질적으로 다양한 데이터 세트 (텍스트 데이터, 그래프 데이터 등)와 데이터 소스 (배치 대 실시간 스트리밍 데이터)로 빅 데이터 처리 요구 사항을 관리 할 수있는 포괄적이고 통합 된 프레임 워크를 제공합니다. .

  1. Hadoop 에코 시스템 및 데이터 소스 ( HDFS, Amazon S3, Hive, HBase, Cassandra 등) 와 잘 통합됩니다 .

  2. Hadoop YARN 또는 Apache Mesos 에서 관리하는 클러스터 에서 실행할 수 있으며 독립형 모드 에서도 실행할 수 있습니다.

  3. Scala, JavaPython으로 API를 제공 하며 다른 언어 (예 : R)를 지원합니다.

  4. 매핑 및 축소 작업 외에도 SQL 쿼리, 스트리밍 데이터, 기계 학습 및 그래프 데이터 처리를 지원합니다.

Spark는 Hadoop을 대체하는 것이 아니라 Hadoop MapReduce의 대안으로보아야합니다.

더 나은 이해를 위해 infoQ주요 기사를 살펴보십시오 .

Spark의 주요 사용 사례 :

  1. 기계 학습 알고리즘
  2. 대화 형 분석
  3. 스트리밍 데이터

Akka : 에서 Letitcrash

Akka는 Java 및 Scala에서 고성능의 안정적인 분산 애플리케이션을 구축하기위한 이벤트 기반 미들웨어 프레임 워크입니다. Akka는 스레드, 잠금 및 비 차단 IO와 같은 저수준 메커니즘에서 비즈니스 로직을 분리합니다. Akka를 사용하면 액터를 생성, 삭제, 예약하고 실패시 다시 시작하는 방법을 쉽게 구성 할 수 있습니다.

Actor 프레임 워크에 대한 이해를 높이려면typesafe 문서를 참조하십시오.

Akka는 감독자 계층을 기반으로 내결함성을 제공합니다. 모든 액터는 다른 액터를 생성 할 수 있으며,이를 감독하여 재개, 재시작, 폐기 또는 문제 에스컬레이션 여부를 결정합니다.

Akka 기사 및 SO 질문 살펴보기

주요 사용 사례 :

  1. 거래 처리
  2. 동시성 / 병렬성
  3. 시뮬레이션
  4. 일괄 처리
  5. 게임 및 베팅
  6. 복잡한 이벤트 스트림 처리

Apache Spark, Akka 또는 Kafka 사이의 선택은 배포되는 사용 사례 (특히 설계 할 서비스의 컨텍스트 및 배경)에 크게 맞춰져 있습니다. 일부 요인에는 지연 시간, 볼륨, 타사 통합 및 필요한 처리 특성 (예 : 배치 또는 스트리밍 등)이 포함됩니다. 이 리소스가 특히 도움이되는 것으로 나타났습니다-https: //conferences.oreilly.com/strata/strata-ca-2016/public/schedule/detail/47251

참조 URL : https://stackoverflow.com/questions/29088754/apache-spark-vs-akka

반응형