아마존 SageMaker Studio에서 Scala 개발 환경 구성 가이드: Almond 커널을 활용한 통합 방법
도입
데이터 분석과 머신러닝 플랫폼으로 널리 활용되는 Amazon SageMaker Studio는 기본적으로 Python 중심의 환경을 제공합니다. 하지만 Apache Spark를 비롯한 대규모 데이터 처리 작업에 강점을 가진 Scala 언어를 사용하는 개발자와 데이터 엔지니어 입장에서는 이러한 Python 중심 환경이 제약으로 작용할 수 있습니다. 이러한 문제를 해결하기 위해 본 글에서는 Almond 커널을 통합하여 SageMaker Studio에서도 Scala 개발을 가능하게 만드는 방법을 소개합니다.
이 글은 실제 AWS 기술 문서 기반으로 작성된 것으로, Scala 환경을 어떻게 활용할 수 있는지, 단계별로 어떤 설정이 필요한지, 그리고 구성 후 고려해야 할 기술적인 요소들까지 자세히 다룹니다. 특히, Spark 기반 데이터 워크플로우를 운영하는 팀이라면 알고리즘과 데이터 전처리를 Scala로 처리하면서 SageMaker의 머신러닝 기능까지 자연스럽게 연결할 수 있는 통합 환경을 구현할 수 있습니다.
본문
- 왜 Scala와 Almond 커널인가?
Scala는 객체지향과 함수형 프로그래밍을 결합한 대규모 데이터 처리에 특화된 언어입니다. Spark 프레임워크의 기반 언어인 Scala는 JVM과의 호환성을 통해 다양한 라이브러리를 간결하고 효율적으로 사용할 수 있습니다. 하지만 SageMaker Studio는 기본적으로 Scala를 지원하지 않으며, Python 중심의 환경만 제공합니다.
이 때문에 Scala 기반 Spark 워크플로우를 사용하는 팀들은 SageMaker에서 별도의 환경을 유지하거나 다른 플랫폼을 고민해야 했습니다. Almond 커널은 이러한 문제를 해결해주는 오픈소스 솔루션으로, Jupyter Notebook에서 Scala를 실행할 수 있도록 도와줍니다.
- 환경 사전 준비사항
효율적인 자동화를 위해 단계별 설정이 필요합니다. 사전 요구 사항은 다음과 같습니다:
- SageMaker Studio 도메인 구성 및 사용자 프로필 생성
- JupyterLab 버전 2.4.1 이상 환경 확보
- 인터넷 접속이 가능한 VPC 네트워크 설정
- IAM 권한 설정: 초기 구성엔 관리자 권한, 이후 운영 시 최소 권한 원칙 적용
- SageMaker Studio에 JupyterLab 환경 생성
- SageMaker 콘솔에서 ‘스페이스(Space)’를 생성하고 원하는 JupyterLab 환경을 선택합니다.
- 생성 후 런칭하여 JupyterLab 환경에 접속합니다.
- Conda 기반 커스텀 개발 환경 구축
터미널에서 다음 명령어를 실행하여 Scala 전용 개발 환경을 구성합니다:
conda create -n myenv python=3.10 -y
conda init bash
source ~/.bashrc
conda activate myenv
- OpenJDK 설치
Scala는 JVM 상에서 실행되므로 Java 설치가 필요합니다. 다음 명령어를 통해 설치합니다:
conda install -c conda-forge openjdk=11 -y
java –version
설치 후 JAVA_HOME 환경 변수를 설정합니다:
which java
export JAVA_HOME=/home/sagemaker-user/.conda/envs/myenv
- Coursier 설치 및 Almond 커널 구성
Coursier는 Scala 의존성을 관리하고 자동 설치해주는 강력한 도구입니다:
curl -Lo coursier https://git.io/coursier-cli
chmod +x coursier
./coursier launch almond — –install
- JAVA 경로 재설정
Scala 커널은 Java 경로를 정확히 인지하지 못할 수 있습니다. 따라서 커널 설정 파일을 수정하여 정확한 경로를 명시합니다:
vi ~/.local/share/jupyter/kernels/scala/kernel.json
"argv" 항목의 Java 경로를 환경에 맞게 수정합니다:
{
"argv": [
"/home/sagemaker-user/.conda/envs/myenv/bin/java",
"-jar",
"/home/sagemaker-user/.local/share/jupyter/kernels/scala/launcher.jar",
"–connection-file",
"{connection_file}"
],
"display_name": "Scala",
"language": "scala"
}
- Scala 커널 실행 및 검증
SageMaker Studio 내 JupyterLab 런처에서 새 Scala 노트북을 생성합니다.
다음 코드를 사용하여 설치 확인을 수행합니다:
println(s"Scala: ${scala.util.Properties.versionNumberString}")
println(s"Java : ${System.getProperty("java.version")}")
예상 출력 예:
Scala: 2.13.x
Java : 11.0.x
- 배포 후 주의 사항 및 자동화 팁
- JVM 버전은 Spark의 버전에 따라 호환성이 다르므로 주의가 필요합니다.
- 커스텀 환경은 Conda로 격리된 상태를 유지해야 하며, 기본 SageMaker 환경에 영향을 주지 않도록 설계합니다.
- 보안 및 유지보수를 위해 정기적 라이브러리 업데이트 및 취약점 점검이 필요합니다.
- 모든 설정은 SageMaker Studio 재시작 이후에도 유지되므로 지속 가능한 운영 환경 구축이 가능합니다.
- 비용 고려 사항
Almond 커널, Coursier는 모두 오픈소스 도구로, 추가 비용이 발생하지 않습니다. 비용은 SageMaker Studio 환경 사용에 따른 AWS 사용 요금만 발생합니다. 자세한 요금은 SageMaker 요금 페이지를 참고하세요.
- 정리 및 환경 정리
- 사용 완료 후 커널을 종료하고, Conda 환경이 더 이상 필요 없는 경우 다음 명령어로 삭제합니다:
conda deactivate
conda remove -n myenv –all -y
- SageMaker 환경과 도메인은 필요에 따라 콘솔에서 정리합니다.
결론
Almond 커널을 통해 SageMaker Studio에서도 Scala 기반 Spark 워크플로우를 자동화하고 통합하는 것이 가능합니다. 이는 기존 Python 중심의 머신러닝 인프라에 Scala 기반 분산 처리를 손쉽게 접목할 수 있는 유용한 구성입니다. 데이터 사이언티스트와 엔지니어는 이제 별도의 플랫폼 전환 없이, 익숙한 언어 환경에서 복합적인 데이터 파이프라인을 구현할 수 있습니다.
추가적으로 아래 리소스를 참고하여 Scala 개발 환경을 더욱 확장해보시길 바랍니다:
- Almond 커널 GitHub: https://github.com/almond-sh/almond
- Coursier 공식 문서: https://get-coursier.io/docs/cli-overview
- Apache Spark 호환 가이드: https://spark.apache.org/docs/latest/
- Scala 언어 투어: https://docs.scala-lang.org/tour/tour-of-scala.html
AI, Cloud 관련한 문의는 아래 연락처로 연락주세요!
(주)에이클라우드
이메일 : acloud@a-cloud.co.kr
회사 번호 : 02-538-3988
회사 홈페이지 : https://www.a-cloud.co.kr/
문의하기