서론.

안녕하세요, 저는 슬기로운 문화생활 SMS 데이터 엔지니어링 부서의 팀원 Yoda.jedi 입니다.

전에 Hadoop Eco System의 프레임워크 없이 Apache Spark 클러스터를 구성하는 방법에 대해 포스팅 한 적이 있습니다. 해당글 보기!

해당 포스팅을 기반으로 구축되어진 Apache Spark를 통해, HDFS가 아닌, 외부 S3의 파일 시스템을 활용하여, HDFS 처럼 사용하는 방법에 대해 많은 분들과 공유하고자 이 글을 포스팅 하게 되었습니다. HDFS가 아닌 외부 파일 객체 스토리지를 사용해야하는 많은 분들과, 오로지 파일 시스템만 필요로 하는 분들 또한, 아래와 같은 방식으로 Hadoop에 지원하는 jar 를 통해 Spark Cluster에서 정상적으로 연동하는 방법에 집중하였습니다.


본론.

Apache Spark는 Hadoop FileSystem API를 통해 데이터를 읽고, 저희가 사용하고자 하는 File System 은 AWS에서 서비스 하고 있는 S3라는 객체 스토리지 서비스입니다. 이는 S3A FileSystem API와 EMR FileSystemAPI를 제공하고 있는 점을 활용하여, 연결하기로 하였습니다. (+ 추가 AWS의 EMR 환경이 아니라면 모든 작업은 S3A FileSystem API 사용)

저희 슬.문.생 팀은 Hadoop 없이 Spark 단독 구성 서버를 구축하고 있으며, AWS S3 와의 연결을 위해 S3A connector 구성을 하기로 하였습니다.

먼저, Spark S3A Connector를 구성하는데 앞서, 기존 Spark Cluster에 사용하는 Spark 버전을 먼저 알아야합니다.

현재 저희 슬.문.생 서비스에 사용되는 Spark 버전은 3.2.4이며, 이는 Hadoop 3.2 버전과 호환됩니다.

아래의 링크에 Jar 파일을 각 Spark 버전에 맞게 다운로드를 합니다.