## Requirement - Window 10 또는 그 이상 버전 ## WSL 2 - Ubuntu 20 LTS 설치 Apache Zeppelin은 Mac OS와 Ubuntu를 지원한다. 평소에는 이런 경우 그냥 AWS로 인스턴스를 생성하지만, 지금 일하는 회사에서는 DB 방화벽이 IP 차단을 하기 때문에 이 방법은 쓸 수 없다. 팀에서 정식 툴로 도입한다면 인프라 관리하는 부서에 요청해서 화이트리스트에 등록하면 되지만, 일단은 PoC 느낌으로 나 혼자 사용할 것이니 그냥 WSL 2로 Ubuntu를 깔아서 사용하기로 하였다. ### WSL 2 설치 ```powershell dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart wsl --set-default-version 2 ``` - Powershell을 관리자 권한으로 실행한 다음 위의 코드를 입력 ### Window Store에서 Ubuntu 20 LTS 설치 ![[Pasted image 20240620155530.png]] ## WSL 2 Ubuntu에 Docker & Docker-compose 설치 ```shell sudo apt update sudo apt-get install -y ca-certificates curl software-properties-common apt-transport-https gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update sudo apt-get install -y docker-ce docker-ce-cli containerd.io sudo usermod -aG docker $USER docker --version sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose docker-compose --version # 출처 : https://iseunghan.tistory.com/408 ``` - 위 코드를 복사-붙여넣기 - 붙여넣기는 마우스 오른쪽 클릭으로 가능하다 ## Docker로 Apache Zeppelin 설치 ```bash docker run -d -u $(id -u) -p 8000:8080 -v /mnt/disk1/notebook:/notebook \ -v /usr/lib/spark-current:/opt/spark -v /mnt/disk1/flink-1.12.2:/opt/flink -e FLINK_HOME=/opt/flink \ -e SPARK_HOME=/opt/spark -e ZEPPELIN_NOTEBOOK_DIR='/notebook' --name zeppelin apache/zeppelin:0.11.1 ``` - 위 코드는 [공식 홈페이지 설치 페이지](https://zeppelin.apache.org/docs/latest/quickstart/install.html#using-the-official-docker-image)의 코드와 거의 비슷하다. 다만, 우리는 클라우드 환경에서 zeppelin을 실행하는 게 아니므로 몇 가지 옵션을 추가 했다. - `-d` : 백그라운드로 실행 - `--rm (삭제)` : 컨테이너 정지시 자동 삭제 => 전원 끌 때마다 설정이 초기화 - `8000:8080` : 포트를 8000로 변경한다. 8080은 너무 많이 쓰이는 포트다. ![[Pasted image 20240620161749.png]] - 정상적으로 실행됐는지 확인하기 위해 http://localhost:8000/ 를 접속해보자. 위와 같은 화면이 나오면 정상적으로 실행된 것이다. ## Apache Zeppelin 환경 설정 ### Spark 버전 체크 설정 끄기 ![[Pasted image 20240620165457.png]] ![[Pasted image 20240620165601.png]] ![[Pasted image 20240620165627.png]] - 디폴트로 Spark 버전 체크 설정이 되어 있는데, 정작 공식 홈페이지의 코드로 설치를 하면 버전이 안 맞아서 에러가 뜬다. 그러니 버전 체크 설정을 끄자. ### 리소스 포크 파일 삭제 ![[Pasted image 20240620173432.png]] ```shell docker exec -it -u root zeppelin /bin/bash cd /opt/zeppelin/interpreter/spark/ ls -a ``` - 위 코드를 실행해서 컨테이너 안을 확인해보면 위와 같이 `._`로 시작하는 파일이 존재한다. 메타 정보를 저장한 파일로 추정된다. 나 같은 경우, 원래 읽어야 하는 파일 대신에 해당 파일을 읽어서 에러가 계속 떴다. 그러니 아래의 코드로 삭제하자 ```shell rm /opt/zeppelin/interpreter/spark/._spark-interpreter-0.11.1.jar rm /opt/zeppelin/interpreter/spark/scala-2.12/._spark-scala-2.12-0.11.1.jar ``` ### 실행 결과 확인 ![[Pasted image 20240620165357.png]] ``` %spark sc.version; ``` - 노트북을 생성한 다음, 위 코드를 실행한 다음 제대로 실행되는지 확인한다.