리눅스에서의 스칼라 기반 스파크 프로그램을 패키징하여 단독 애플리케이션으로 동작하는 jar파일을
만드는 방법이 아직 온라인 상에서 찾기 힘든 것 같다. 그래서 내가 직접 써본다
우선 리눅스에서 SBT를 설치해야 한다.
SBT는 Simple Build Tool의 약자로, scala 프로젝트의 빌드를 간단하게 수행할 수 있도록 도와주는 툴이다.
만약 아직 설치가 안되있다면 아래 리눅스 명령어로 설치하면 된다. 설치 관련된 방법은 여러가지지만..
echo "deb https://dl.bintray.com/sbt/debian /" | sudo tee -a /etc/apt/sources.list.d/sbt.list
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 642AC823
sudo apt-get update
sudo apt-get install sbt
SBT에 대한 준비가 완료되었다면,
스파크 어플리케이션을 만들기 위한 패키지를 디렉터리 형식으로 만든다
그래서 프로젝트의 최상위 디렉터리에서 find .을 수행했을 때 다음과 같은 예제의 형태로 나와야한다.
ubuntu@ip-172-31-17-38:~/spark/bigdata$ find .
.
./simple.sbt
./src
./src/main
./src/main/scala
./src/main/scala/SimpleApp.scala
위 출력문 중에 중요한 것이 simple.sbt라는 파일이다.
이 파일을 통해 빌드 시 옵션 등을 지정해 줄 수 있다.
simple.sbt의 내용을 살펴보면 다음과 같다.
name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.7"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.5.2"
대강 버전에 대한 명시만 자신의 개발환경에 맞추어 수정해 주면 된다.
그리고 빌드를 수행한다.
sbt package
위 명령어를 통해 빌드가 시작된다.
성공적으로 빌드가 완료되었다면, 생성된 jar 패키지 파일의 경로가 출력된다.
이 jar 패키지 파일을 만듦으로써 하나의 스파크 단독 애플리케이션이 완성된 것이다.
이제 spark-submit을 이용하여 이 애플리케이션을 실행시킬 수 있다!
ubuntu@localhost:~/spark/bigdata$ /home/ubuntu/spark/bin/spark-submit --class "SimpleApp" --master local[4] /home/ubuntu/spark-1.2.0-bin-hadoop2.4/bigdata/target/scala-2.11/simple-project_2.11-1.0.jar
가끔은 윈도우에서의 빌드 환경을 구축하는 것이 너무나도 까다로울 때가 있다. (뭘 개발하든, 개발환경을 차리면 반은 했다는 생각이 들정도)
간단한 프로젝트라면 이렇게 리눅스 환경에서 간단하게 프로그램을 짜고 빌드하는 것도 좋은 방법인 것 같다.