spark 2.4부터 kubernetes에 연동할 수 있다.
스트리밍 애플리케이션을 개발해서 배포한 내용은 다음과 같다.
kubernetes에 spark streaming job을 실행하려면 다음과 같은 형태로 submit을 해야 한다.
$ bin/spark-submit \
--master k8s://https://: \
--deploy-mode cluster \
--name spark-streaming-job \
--class main.MainClass \
--conf spark.executor.instances=1 \
--conf spark.kubernetes.container.image= \
local:///path/to/examples.jar
먼저 spark이 깔린 환경으로 dockernize한다. (-m을 사용하면 minikube라서 쓰지 않는다)
$ ./bin/docker-image-tool.sh -t spark-docker build
Sending build context to Docker daemon 259MB
Step 1/15 : FROM openjdk:8-alpine
8-alpine: Pulling from library/openjdk
8e402f1a9c57: Pull complete
4866c822999c: Pull complete
ec484ea07ed1: Pull complete
Digest: sha256:066ad5ab75cfdfbeaff8481f988b4e35a04fef5d24309da2bdd5af59b983b68f
Status: Downloaded newer image for openjdk:8-alpine
실행이 완료되면 다음과 같은 docker image를 생성된 것을 볼 수 있다.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
spark-r spark-docker 47533c66d1d8 13 hours ago 740MB
spark-py spark-docker b6fec2b48ea6 13 hours ago 446MB
spark spark-docker b91978355818 13 hours ago 355MB
도커 허브에 로그인한다.
$ docker login -u samuel.c 사설_저장소
사용한 spark 2.4.0 환경 도커로 태깅한다.
$ docker tag spark:spark-docker 사설_저장소/samuel_c/spark_docker
spark 2.4.0 환경 도커를 도커 허브에 푸시한다.
$ docker push 사설_저장소/samuel_c/spark_docker
spark streaming job 애플리케이션 디렉토리에서 jar를 얻는다.
$ sbt assembly
[info] Assembly up to date: /dev/spark-streaming-job/build/kafka-spark-streaming.jar
장비를 http 서버로 보낸다.
$ scp -o GSSAPIAuthentication=yes /dev/commerce/spark-demos/build/kafka-spark-streaming.jar ftp장비_디렉토리
잡을 k8s에 submit 한다.
$ bin/spark-submit \
--master k8s://https://master_주소:6443 \
--deploy-mode cluster \
--name spark-streaming \
--class streaming.KafkaAvroDemo \
--conf spark.kubernetes.container.image=사설_저장소/samuel_c/spark_docker \
http://ftp장비/kafka-spark-streaming.jar
제대로 실행 중인지 확인한다. Error와 Running을 확인할 수 있다.
$ kubectl get pods
spark-streaming-1555032194366-driver 0/1 Error 0 4h
spark-streaming-1555047069996-driver 1/1 Running 0 35m
http 대신 docker에 기본 spark 도커를 기반으로 할 수 있다.
Dockerfile
FROM 사설_저장소/samuel_c/spark_docker
MAINTAINER datalake
ENV http_proxy 프록시
ENV https_proxy 프록시
ENV APP_HOME /app
RUN mkdir -p $APP_HOME
WORKDIR $APP_HOME
# Upload & build source
COPY . $APP_HOME
RUN ./sbt assembly
테스트를 이렇게 할 순 있지만..
docker run -i -t 사설_저장소/samuel_c/spark-demos /bin/bash
http로 jar를 다운받는 게 가장 빠른 것 같다.
'scala' 카테고리의 다른 글
[sbt] 1.3.0 (0) | 2019.09.06 |
---|---|
scala cats 공부 자료. (1) | 2019.06.18 |
[sbt] spark 앱에서 Failed to find data source: kafka 해결하기 (0) | 2019.04.12 |
sbt 병렬 다운로드 (0) | 2019.04.08 |
sbt assembly 에러 (0) | 2019.04.08 |