Zeppelin H/A 구성하기
안정성을 위해 H/A 구성을 하려고 하는데.. 보통 싱글 노드로 많이 사용하는 것 같다.
도큐먼트에도 멀티노드 구성에 대한 이야긴 없다.
어떻게 하지. .ChatGPT한테 물어봤다.
열심히 말하는데 믿음이 안간다.
구글에 찾아보니 Zeppelin distributed architecture design 문서를 발견! 이것이 좀 도움이 될 것 같다.
우선 H/A 구성을 위해서 아래의 작업을 진행했다.
시작해보자~!
1. 클러스터 구성
${ZEPPELIN_HOME}/conf/zeppelin.site.xml 에 클러스터 정보 추가
<property>
<name>zeppelin.cluster.addr</name>
<value>zeppelin-server1-ip:6000,zeppelin-server2-ip:6000,zeppelin-server3-ip:6000</value>
<description>Server cluster address, eg. 127.0.0.1:6000,127.0.0.2:6000,127.0.0.3:6000</description>
</property>
2. 공통 저장소
기본적으로 로컬에 노트북을 생성하기 때문에 공통 저장소를 구성하지 않으면 각기 다른 노트북 정보를 가지고 있을 것이다.
나는 HDFS에 저장하기로 했다.
근데.. 0.11 버전부터 Notebook Storage의 문서를 볼 수가 없다. 404 Not Found;;
심지어 HDFS는 없다.
Git으로 가본다. branch-0.11의 zeppelin/docs/setup/storage/notebook_storage.md 에서 방법을 찾을 수 있었다.
default는 GitNoteBookRepo를 사용한다. 이것은 로컬 파일 시스템에 기록한다.
나는 FileSystemNotebookRepo로 변경하였다.
1) 'zeppelin.notebook.storage' 설정
${ZEPPELIN_HOME}/conf/zeppelin.site.xml 에 'zeppelin.notebook.storage' 프로퍼티를 추가한다.
물론 기존에 등록된 (활성화된) 값이 있다면 주석 처리하거나 삭제해준다.
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.FileSystemNotebookRepo</value>
<description>hadoop compatible file system notebook persistence layer implementation</description>
</property>
2) 'zeppelin.notebook.dir '수정
default는 notebook으로 설정되어 있다. {ZEPPELIN_HOME}/notebook 를 말한다. 해당 경로에 가보면 여태 생성산 notebook들이 있을 것이다.
이것은 hdfs로 변경해본다. 아래와 같이 입력하면 된다.
namespace가 헷갈리면 {HADOOP_HOME}/etc/hadoop/core-site.xml을 참고해서 확인하면 된다.
<property>
<name>zeppelin.notebook.dir</name>
<value>hdfs://namespace:port/hdfs_path/zeppelin/notebook</value>
<description>path or URI for notebook persist</description>
</property>
ex) hdfs://test:9000/user/zeppelin/notebook
3) 'zeppelin.config.storage.class '수정
<property>
<name>zeppelin.config.storage.class</name>
<value>org.apache.zeppelin.storage.FileSystemConfigStorage</value>
<description>configuration persistence layer implementation</description>
</property>
<property>
<name>zeppelin.config.fs.dir</name>
<value>hdfs://namespace:port/hdfs_path/zeppelin/configuration</value>
<description>path on the hadoop compatible file system</description>
</property>
3. 로드 밸런싱
NginX를 통한 접근 및 로드 밸런싱(기본 라운드 로빈)
sudo vi /etc/nginx/sites-available/default
upstream zeppelin_servers {
ip_hash;
server zeppelin-server1-ip:8080;
server zeppelin-server2-ip:8080;
server zeppelin-server3-ip:8080;
keepalive 100;
}
server {
listen 18080;
location / {
proxy_pass http://zeppelin_cluster;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_http_version 1.1;
proxy_set_header Connection "";
}
location /ws {
proxy_pass http://zeppelin_cluster;
proxy_set_header Host $host;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
NginX 재시작 또는 설정 reload
sudo systemctl restart nginx
4. Interpreter 설정
나는 Spark Interpreter를 사용할거니까~ spark interpreter section에서 설정해준다.
SPARK_HOME 잘 잡아주고~
spark.master=yarn, spark.submit.deployMode=client로 설정
인터프리터가 제대로 실행되지 않는 경우는, ${ZEPPELIN_HOME}/logs 하위에 zeppelin 서버 로그와 zeppelin interpreter 로그가 남으니까 참고!
그리고 save, restart !
참고
Zeppelin Git : https://github.com/apache/zeppelin/blob/branch-0.11/docs/setup/storage/notebook_storage.md
Zeppelin distributed architecture design : https://docs.google.com/document/d/1a8QLSyR3M5AhlG1GIYuDTj6bwazeuVDKCRRBm-Qa3Bw/edit
Zeppelin Configuration : https://zeppelin.apache.org/docs/latest/setup/operation/configuration.html#zeppelin-properties
'IT 잡동사니' 카테고리의 다른 글
[Docker] Ubuntu 도커 설치 / 도커 삭제 / 버전 업그레이드 / 도커 명령어까지 쉽다쉬워 (2) | 2024.11.05 |
---|---|
MongoDB - 명령어 모음집 (0) | 2024.07.02 |
Ubuntu OpenLDAP 설치 (0) | 2024.07.01 |
Zeppelin 설치(Windows) - UI 안나오는 이슈 해결, 원격 접속 허용 (0) | 2024.07.01 |
Zeppelin spark interpreter 연동 (0) | 2024.07.01 |