Apache Spark

0. Spring boot에서 SPARK 사용

bysnow 2024. 4. 3. 09:21
728x90
반응형
SMALL

개발 중인 프로그램에선 주로 csv, txt 형식과 같은 정형 데이터 파일을 다룬다. 사용자가 정형 데이터 파일을 서버에 업로드하면 해당 파일에 포함된 데이터들에 대한 다양한 통계를 제공하는 기능을 제공해야 한다.

사용자가 파일을 서버에 업로드 하면 해당 파일의 데이터를 데이터베이스 테이블에 저장한 후, 일련의 전처리 및 통계 도출은 각 테이블의 값을 프로시저나 자바에서 처리하는 기본적인 방식을 사용하고 있었다. 대부분의 사용 사례에서 성능에 큰 문제가 없었지만 간혹 수십 억 건의 데이터를 처리해야 하는 경우엔 대용량의 파일을 읽어 DB에 삽입하고 연산이 필요할 때마다 값들을 읽어와 처리한 후 결과를 업데이트 하는 과정이 너무 오래 걸려 해결 방안이 필요했다. 따라서 대용량 데이터 처리에 유용하다는 Apache Spark를 사용해보기로 했다. 앞으로 포스팅에서 Spring boot로 구현한 애플리케이션에서 Apache spark를 사용하기 위한 과정들을 정리하고자 한다.

 

프로젝트 환경 : Java8, Gradle, Rocky Linux 8.9, MariaDB

 

Apache Spark란?

 

AWS 홈페이지의 설명

https://aws.amazon.com/ko/what-is/apache-spark/

 

Apache Spark 대용량 데이터 처리를 위한 오픈소스 클러스터 컴퓨팅 프레임워크이다. Hadoop MapReduce와 같은 기존의 클러스터 컴퓨팅 시스템보다 더 빠른 속도를 제공하며, 인메모리 컴퓨팅을 지원하여 데이터 처리 속도를 크게 향상시켰다.

 

Spark Java, Scala, Python 등 다양한 프로그래밍 언어를 지원하며, 머신러닝, 그래프 처리, 스트림 처리 등 다양한 분야에서 활용되며 SQL 쿼리 처리, 스트리밍 데이터 처리, 머신러닝 등을 위한 라이브러리를 포함하고 있어, 다양한 데이터 분석 작업을 수행할 수 있다. 특히 Spark는 분산 환경에서 동작하기 때문에, 대규모 데이터셋에 대한 연산을 여러 노드에 분산시켜 처리할 수 있다.

 

Spark를 검색하면 나오는 키워드 중 제일 중요한 단어가 아마 클러스터 컴퓨팅 프레임워크일 것이다. 여러 대의 컴퓨터를 마치 하나의 시스템처럼 사용하는 컴퓨터 클러스터 환경을 효율적으로 관리하고 동작하게 하는 프레임워크라고 한다. 따라서 처음엔 단일 서버에서 동작하는 작은 애플리케이션에 사용하기 부적절한 것은 아닐까 하는 생각이 들었다. 그러나 Spark의 동작 방식과 Spark가 제공하는 여러 효과적인 라이브러리들이 데이터의 처리 속도 향상에 도움이 될 것이라는 생각으로 테스트를 진행했다.

 

 

 

 

728x90
반응형
LIST