IT 잡동사니

Zeppelin multi instance (H/A) 구성

케키키케 2024. 11. 5. 20:53

 

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/docs/setup/storage/notebook_storage.md at branch-0.11 · apache/zeppelin

Web-based notebook that enables data-driven, interactive data analytics and collaborative documents with SQL, Scala and more. - apache/zeppelin

github.com

 

Zeppelin distributed architecture design : https://docs.google.com/document/d/1a8QLSyR3M5AhlG1GIYuDTj6bwazeuVDKCRRBm-Qa3Bw/edit

 

Zeppelin distributed architecture design

Zeppelin distributed architecture design (This is an ongoing design doc, please feel free to add your suggestions) Zeppelin distributed architecture design 1 Document update history 2 Introduction to the Zeppelin System 2 Service single point problem 3 dem

docs.google.com

Zeppelin Configuration : https://zeppelin.apache.org/docs/latest/setup/operation/configuration.html#zeppelin-properties

 

Apache Zeppelin 0.11.1 Documentation: Apache Zeppelin Configuration

<!-- Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or ag

zeppelin.apache.org