Spark
Apache Spark는 Hadoop의 MapReduce 보다 더 효율적인 데이터 처리를 하기 위해 개발이 진행되고 있는 독립된 프로젝트입니다.
기존의 MapReduce와의 차이로는 대량의 메모리를 활용하여 데이터 처리를 빠르게 진행한다는 점입니다.
MapReduce가 개발되는 시절에는 처리해야 할 데이터의 크기에 비하여 훨씬 적은 메모리를 사용할 수 밖에 없었고 데이터 처리를 대부분 디스크 I/O에 사용하였습니다. Tez의 경우 또한 MapReduce의 불필요한 단계를 감소하였지만 기본적으로 디스크를 사용합니다.

Spark에서는 중간 데이터를 디스크에 쓰지 않고 메모리에 보존합니다.
현재는 메모리의 발전으로 메모리가 취급할 수 있는 데이터의 양이 증가하여 가능한 많은 데이터를 메모리에 올려 작업할 수 있습니다. 하지만 컴퓨터가 비정상적으로 종료가 되면 중간까지 처리했던 데이터가 사라진다는 단점이 존재하지만 처리를 다시 시도하여 잃어버린 데이터를 다시 만들면 된다는 것이 Spark의 특징이자 개념입니다.
MapReduce 대체하기
중요한 점은 Spark는 MapReduce를 대체하기 위함이지 Hadoop을 대체하기 위함은 아닙니다.
Spark에서도 Hadoop의 HDFS나 YARN을 사용할 수 있습니다. Hadoop을 사용하지 않고 분산스토리지로 Amozon S3, 분산데이터베이스로 카산드라(cassandra)를 사용할 수 있습니다. 이렇듯 Spark또한 여러 소프토웨어와 조합하여 사용할 수 있습니다.
또한 Spark는 Java 런타임이 필요하지만 PySpark처럼 Python과 같은 스크립트 언어를 사용하여 작성할 수 있다는 장점 또한 가지고 있고 SQL 쿼리를 실행하기 위한 Spark SQL, 스트림 처리를 위한 Spark Streaming 기능 또한 가지고 있기 때문에 실시간 스트림 처리와 대규모 배치 처리도 함께 사용할 수 있습니다.
'데이터 엔지니어링' 카테고리의 다른 글
[빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 5 (0) | 2023.05.24 |
---|---|
[빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 4 (0) | 2023.05.23 |
[빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 2 (0) | 2023.05.19 |
[빅데이터를 지탱하는 기술] 대규모 분산 처리의 프레임워크 # 1 (0) | 2023.05.18 |
[빅데이터를 지탱하는 기술] 빅데이터의 탐색 # 3 (0) | 2023.05.17 |