코알못

[Zeppelin] 노트 저장 경로 local > S3 로 변경 본문

ETC

[Zeppelin] 노트 저장 경로 local > S3 로 변경

코린이s 2023. 3. 31. 16:15
728x90

EMR zeppelin에서 노트 실행시 기본으로 저장되는 경로는 아래와 같다.

- '/etc/zeppelin/conf/zeppelin-env.sh' 파일의 'ZEPPELIN_NOTEBOOK_DIR' 설정값

설정값이 '/var/lib/zeppelin/notebook'이며 마스터 노드의 로컬 해당 경로에 저장 된다.
EMR 의 경우 일시정지가 없어 재기동시 모든 데이터가 날라가 아래 AWS 공식 문서와 같이 S3로 직접 백업해야 했다.

# AWS 가이드
https://docs.aws.amazon.com/whitepapers/latest/teaching-big-data-skills-with-amazon-emr/back-up-zeppelin-notebook-notes.html

불편하므로 zeppelin 설정을 통해 저장소를 local > S3 로 변경 하도록 하자!

우선 저장할 디렉토리를 미리 생성한다.
저자의 경우 'A' 버킷의 'B' 디렉토리에 저장하도록 하며 아래와 같이 미리 만들어둔다.

- 생성할 경로 : S3://A/B/notebook

그리고 '/etc/zeppelin/conf/zeppelin-site.xml' 파일의 설정을 추가/변경한다.

<property>
  <name>zeppelin.notebook.storage</name>
  <value>org.apache.zeppelin.notebook.repo.S3NotebookRepo</value>
  <description>notebook persistence layer implementation</description>
</property>

<property>
  <name>zeppelin.notebook.s3.bucket</name>
  <value>A</value>
  <description>bucket name for notebook storage</description>
</property>

<property>
  <name>zeppelin.notebook.s3.user</name>
  <value>B</value>
  <description>user name for s3 folder structure</description>
</property>

<property>
  <name>zeppelin.notebook.s3.endpoint</name>
  <value>s3.ap-northeast-2.amazonaws.com</value>
  <description>endpoint for s3 bucket</description>
</property>

<property>
  <name>zeppelin.notebook.s3.timeout</name>
  <value>120000</value>
  <description>s3 bucket endpoint request timeout in msec.</description>
</property>

 

zeppelin 재기동을 진행하면 

$ sudo systemctl restart zeppelin

정상적으로 S3 에 저장 된 것을 볼 수 있다.

디렉토리 경로의 경우 하위에 여러 디렉토리가 있어도 되며 예를 들어 'A'  버킷의 'B/C' 디렉토리 안에 저장하기를 원한다면 아래와 같이 경로를 미리 생성하며

- 생성할 경로 : S3://A/B/C/notebook

아래와 같이 설정하면 된다.

<property>
  <name>zeppelin.notebook.storage</name>
  <value>org.apache.zeppelin.notebook.repo.S3NotebookRepo</value>
  <description>notebook persistence layer implementation</description>
</property>

<property>
  <name>zeppelin.notebook.s3.bucket</name>
  <value>A</value>
  <description>bucket name for notebook storage</description>
</property>

<property>
  <name>zeppelin.notebook.s3.user</name>
  <value>B/C</value>
  <description>user name for s3 folder structure</description>
</property>

<property>
  <name>zeppelin.notebook.s3.endpoint</name>
  <value>s3.ap-northeast-2.amazonaws.com</value>
  <description>endpoint for s3 bucket</description>
</property>

<property>
  <name>zeppelin.notebook.s3.timeout</name>
  <value>120000</value>
  <description>s3 bucket endpoint request timeout in msec.</description>
</property>

위 옵션은 아래와 같이 JsonConfig 를 주어 EMR 기동시점에 적용 되도록 할 수 있다.

{
      "Classification": "zeppelin-site",
      "Properties": {
        "zeppelin.notebook.storage":"org.apache.zeppelin.notebook.repo.S3NotebookRepo",
        "zeppelin.notebook.s3.bucket": "A",
        "zeppelin.notebook.s3.user": "B/C",
        "zeppelin.notebook.s3.endpoint": "s3.ap-northeast-2.amazonaws.com",
        "zeppelin.notebook.s3.timeout": "120000"
      }
  }


# zeppelin 가이드
https://zeppelin.apache.org/docs/0.5.5-incubating/storage/storage.html

 

Storage

<!-- 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

끝!!

728x90
Comments