[Spark] Spark, Zeppelin 도커 컴포즈로 구성 (Apple Silicon Mac)

2024. 3. 11. 20:33· Data Engineering/Spark
반응형

*이 글은 '스파크 완벽 가이드' 책을 기반으로 작성되었습니다.*


책에서 도커로 시작하는 방법이 나오지만, M1 맥북을 사용 중이라 amd 기반으로 작성된 도커파일과 호환이 되지 않아 arm 아키텍처용으로 다시 만들었다. dockerfile의 내용은 다음과 같다.

ubuntu: 22.04
spark: 2.3.2
zeppelin: 0.8.0
FROM ubuntu:22.04
# 환경 변수 설정
ENV Z_VERSION=0.8.0 \
LOG_TAG="[ZEPPELIN_0.8.0]" \
Z_HOME="/zeppelin" \
LANG="en_US.UTF-8" \
LC_ALL="en_US.UTF-8" \
JAVA_HOME="/usr/lib/jvm/java-8-openjdk-arm64" \
SPARK_VERSION="2.3.2" \
PATH="/opt/conda/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
# 시스템 설정 및 패키지 설치
RUN set -xe && \
echo '#!/bin/sh' > /usr/sbin/policy-rc.d && \
echo 'exit 101' >> /usr/sbin/policy-rc.d && \
chmod +x /usr/sbin/policy-rc.d && \
dpkg-divert --local --rename --add /sbin/initctl && \
cp -a /usr/sbin/policy-rc.d /sbin/initctl && \
sed -i 's/^exit.*/exit 0/' /sbin/initctl && \
echo 'force-unsafe-io' > /etc/dpkg/dpkg.cfg.d/docker-apt-speedup && \
echo 'DPkg::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' > /etc/apt/apt.conf.d/docker-clean && \
echo 'APT::Update::Post-Invoke { "rm -f /var/cache/apt/archives/*.deb /var/cache/apt/archives/partial/*.deb /var/cache/apt/*.bin || true"; };' >> /etc/apt/apt.conf.d/docker-clean && \
echo 'Dir::Cache::pkgcache ""; Dir::Cache::srcpkgcache "";' >> /etc/apt/apt.conf.d/docker-clean && \
echo 'Acquire::Languages "none";' > /etc/apt/apt.conf.d/docker-no-languages && \
echo 'Acquire::GzipIndexes "true"; Acquire::CompressionTypes::Order:: "gz";' > /etc/apt/apt.conf.d/docker-gzip-indexes && \
echo 'Apt::AutoRemove::SuggestsImportant "false";' > /etc/apt/apt.conf.d/docker-autoremove-suggests && \
apt-get update && \
apt-get install -y locales software-properties-common build-essential wget curl grep sed dpkg && \
locale-gen $LANG && \
apt-get install -y openjdk-8-jdk-headless && \
apt-get install -y git && \
apt-get install -y tini && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
RUN wget -O /tmp/zeppelin-${Z_VERSION}-bin-all.tgz https://archive.apache.org/dist/zeppelin/zeppelin-${Z_VERSION}/zeppelin-${Z_VERSION}-bin-all.tgz && \
tar -zxvf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
rm -rf /tmp/zeppelin-${Z_VERSION}-bin-all.tgz && \
mv /zeppelin-${Z_VERSION}-bin-all ${Z_HOME} && \
wget https://archive.apache.org/dist/spark/spark-${SPARK_VERSION}/spark-${SPARK_VERSION}-bin-hadoop2.7.tgz && \
tar -xvzf spark-${SPARK_VERSION}-bin-hadoop2.7.tgz && \
rm -f spark-${SPARK_VERSION}-bin-hadoop2.7.tgz && \
mv /zeppelin/conf/zeppelin-env.sh.template /zeppelin/conf/zeppelin-env.sh && \
echo "SPARK_HOME=/spark-${SPARK_VERSION}-bin-hadoop2.7" >> /zeppelin/conf/zeppelin-env.sh
# 추가 설정 및 패키지 설치
# 여기에 필요한 추가 설정을 포함시키세요.
# 포트 노출
EXPOSE 8080
# Git 리포지토리 클론 및 설정
RUN git clone https://github.com/FVBros/Spark-The-Definitive-Guide.git && \
mv Spark-The-Definitive-Guide/data /
# 작업 디렉토리 설정
WORKDIR /zeppelin
# 시작 명령어 설정
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["/zeppelin/bin/zeppelin.sh"]

 

볼륨을 편하게 사용하기 위해 학습은 도커 컴포즈로 진행할 예정이다. docker-compose.yml 파일의 내용은 다음과 같다.

version: "3"
services:
spark-practice:
image: gudev/spark_zeppelin_arm64:1.0.0
container_name: spark_zeppelin_arm64
ports:
- "8080:8080" # Zeppelin 포트를 호스트와 매핑
- "4040:4040" # Spark 웹 UI 포트를 호스트와 매핑
volumes:
- "./data:/data"
- "./notebooks:/zeppelin/notebook"
- "./logs:/zeppelin/logs"
- "./spark-warehouse:/spark-2.3.2-bin-hadoop2.7/spark-warehouse"
environment:
- ZEPPELIN_ADDR=0.0.0.0
restart: unless-stopped

data 디렉토리와 zeppelin의 노트북, zeppelin log, spark warehouse 디렉토리를 볼륨으로 동기화하였다.


https://github.com/g-hyeong/Spark-Definitive-Guide

 

반응형

'Data Engineering > Spark' 카테고리의 다른 글

[Spark] 조인  (0) 2024.03.21
'Data Engineering/Spark' 카테고리의 다른 글
  • [Spark] 조인
_GU_
_GU_
_GU_
GU Techlog
_GU_
글쓰기 관리자
전체
오늘
어제

블로그 메뉴

  • 홈
  • 방명록
  • 전체보기 (14)
    • Data Engineering (2)
      • Spark (2)
    • BackEnd (3)
      • Spring Boot (3)
    • FrontEnd (1)
      • Design Pattern (1)
      • Flutter (0)
    • AI (1)
      • Mathematics (1)
    • Algorithm (1)
      • BOJ (0)
    • DevOps (4)
      • Jenkins (2)
      • Docker (1)
      • Kubernetes (1)
    • Git (1)
    • Computer Science (0)
    • etc (1)

인기 글

최근 글

반응형
hELLO · Designed By 정상우.v4.2.2
_GU_
[Spark] Spark, Zeppelin 도커 컴포즈로 구성 (Apple Silicon Mac)
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.