::: 데이터 분석 :::

Zeppelin 0.10.1 버전 Docker로 사용하기

곰탱이푸우 2022. 8. 29. 08:20
기존 포스팅에서 Zeppelin 0.8.1 버전을 사용하기 위한 방법을 소개했다.
 
HDP Sandbox를 이용한 방법과 Zeppelin Docker를 이용한 방법을 다뤘다.
그러나 0.10.1 버전의 경우 기존 방법으로 사용할 수 없어서 새롭게 정리한다.
 
 

오류 증상

Zeppelin Docker를 이용한 방법으로 0.8.1 버전 대신 0.10.1 버전을 사용하면 아래와 같은 오류가 발생한다.

 

Zeppelin 0.8.1 버전을 Docker로 사용하는 방법은 다음 포스팅을 참고한다.
위와 같은 오류가 발생하는 원인은 Zeppelin 구성에 차이가 발생했기 때문이다.
기존 버전의 경우 Zeppelin에서 자체적으로 Spark 엔진을 내장하고 있었다.
 
그러나 최신 버전은 더 이상 포함하지 않기 때문에 위와 같이 Spark과 Scala 정보를 찾지 못하는 것이다.
따라서 Spark 실행 환경을 별도로 설정해야 한다.
 
 

해결 방법

다행히 Spark은 Stand-alone 모드로 설정해도 되기 때문에 생각보다 복잡하지 않다.
 
자세한 설정 방법은 아래 문서를 참고한다.
직접 Spark 빌드 파일을 다운로드해서 공유 볼륨으로 설정해야 한다.
Spark 3.1.3 버전의 다운로드는 아래 URL을 참고한다.
다운로드 한 파일을 압축 해제한다.
압축 해제 된 폴더를 Zeppelin 경로로 사용할 폴더의 하위 경로로 복사한다.
 
그리고 아래와 같이 공유 볼륨으로 걸어주고, SPARK_HOME 환경 변수로 /opt/spark 경로를 적용한다.
docker run -d -p 9997:8080 -p 9998:4040 --rm \
    -v /mnt/d/docker/zeppelin/zeppelin_logs:/logs \
    -v /mnt/d/docker/zeppelin/zeppelin_notebook:/zeppelin/notebook \
    -v /mnt/d/docker/zeppelin/zeppelin_data:/data \
    -v /mnt/d/docker/zeppelin/spark-3.1.3-bin-hadoop3.2:/opt/spark \
    -e SPARK_HOME=/opt/spark \
    -e ZEPPELIN_LOG_DIR=/logs \
    --name zeppelin 사설저장소주소:포트/apache/zeppelin:0.10.1
 
docker-compose를 사용하려는 경우 docker-compose.yml 파일을 다음과 같이 작성한다.
version: '3'
services:
  zeppelin:
    # 저장소:주소 생략하면 dockerhub 사용
    # 버전 생략하면 lastest 사용
    image: 사설저장소주소:포트/apache/zeppelin:0.10.1
    container_name: zeppelin # 필요한 경우 수정
    environment:
      SPARK_HOME: /opt/spark 
      ZEPPELIN_LOG_DIR: /logs
    restart: always
    shm_size: '1gb'  # default는 64MB
    ports:
      - "9997:8080"    # Zeppelin 웹 포트
      - "9998:4040"    # Spark Job History Server 포트 (확인 필요)
    volumes:
      - /mnt/d/docker/zeppelin/zeppelin_logs:/logs \
      - /mnt/d/docker/zeppelin/zeppelin_notebook:/zeppelin/notebook \
      - /mnt/d/docker/zeppelin/zeppelin_data:/data \
      - /mnt/d/docker/zeppelin/spark-3.1.3-bin-hadoop3.2:/opt/spark
 
 

동작 확인

Zeppelin에 접속해서 Spark 인터프리터 설정에 보면 /opt/spark 경로로 지정된 것을 확인할 수 있다.
 
실제로 Spark 관련 코드를 실행해보면 인터프리터가 정상 동작하는 것을 확인할 수 있다.
 

Zeppelin에서 데이터를 탐색하는 방법은 아래 포스팅을 참고한다.

 

Zeppelin에서 데이터 탐색하기

## 참고사항 ## 빅데이터나 하둡 관련 전문가가 아니기 때문에 일부 부족한 내용이 있을 수 있습니다. 셋팅과 기본적인 사용 외에, 하둡과 관련 생태계 운영의 트러블 슈팅은 잘 모릅니다. 오픈소

www.bearpooh.com