Manual upgrade procedure for Zeppelin

Basically, newer version of Zeppelin works with previous version notebook directory and configurations. So, copying notebook and conf directory should be enough.


  1. Stop Zeppelin: bin/ stop
  2. Copy your notebook and conf directory into a backup directory
  3. Download newer version of Zeppelin and Install. See Install Guide.
  4. Copy backup notebook and conf directory into newer version of Zeppelin notebook and conf directory
  5. Start Zeppelin: bin/ start

Migration Guide

Upgrading from Zeppelin 0.9, 0.10 to 0.11

  • From 0.11, The type of Pegdown for parsing markdown was deprecated (ZEPPELIN-5529). It will use Flexmark instead.

Upgrading from Zeppelin 0.8 to 0.9

  • From 0.9, we changed the notes file name structure (ZEPPELIN-2619). So when you upgrading zeppelin to 0.9, you need to upgrade note files. Here's steps you need to follow:
    1. Backup your notes file, in case the upgrade fails
    2. Call bin/ -d to upgrade notes, -d option means to delete the old note file, missing this option will keep the old file.
  • From 0.9, the Zeppelin server binds to by default, instead of Configure zeppelin.server.addr property or ZEPPELIN_ADDR env variable to change it to if you want to access it remotely.
  • From 0.9, we have removed zeppelin.anonymous.allowed (ZEPPELIN-4489). So, when you upgrade Zeppelin to 0.9 and if shiro.ini file does not exist in conf path then all the Zeppelin-Users runs as anonymous.
  • From 0.9, we use {crendential_entry.user} and {crendential_entry.password} for credential injection, while before 0.9 we use {user.crendential_entry} and {password.crendential_entry}

Upgrading from Zeppelin 0.8.1 (and before) to 0.8.2 (and later)

  • From 0.8.2, the Zeppelin server binds to by default, instead of Configure the zeppelin.server.addr property or ZEPPELIN_ADDR env variable to change this.

Upgrading from Zeppelin 0.7 to 0.8

  • From 0.8, we recommend using PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON instead of zeppelin.pyspark.python as zeppelin.pyspark.python only affects driver. You can use PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON as using them in spark.
  • From 0.8, depending on your device, the keyboard shortcut Ctrl-L or Command-L which goes to the line somewhere user wants is not supported.

Upgrading from Zeppelin 0.6 to 0.7

  • From 0.7, we don't use ZEPPELIN_JAVA_OPTS as default value of ZEPPELIN_INTP_JAVA_OPTS and also the same for ZEPPELIN_MEM/ZEPPELIN_INTP_MEM. If user want to configure the jvm opts of interpreter process, please set ZEPPELIN_INTP_JAVA_OPTS and ZEPPELIN_INTP_MEM explicitly. If you don't set ZEPPELIN_INTP_MEM, Zeppelin will set it to -Xms1024m -Xmx1024m -XX:MaxMetaspaceSize=512m by default.
  • Mapping from %jdbc(prefix) to %prefix is no longer available. Instead, you can use %[interpreter alias] with multiple interpreter setttings on GUI.
  • Usage of ZEPPELIN_PORT is not supported in ssl mode. Instead use ZEPPELIN_SSL_PORT to configure the ssl port. Value from ZEPPELIN_PORT is used only when ZEPPELIN_SSL is set to false.
  • The support on Spark 1.1.x to 1.3.x is deprecated.
  • From 0.7, we uses pegdown as the markdown.parser.type option for the %md interpreter. Rendered markdown might be different from what you expected
  • From 0.7 note.json format has been changed to support multiple outputs in a paragraph. Zeppelin will automatically convert old format to new format. 0.6 or lower version can read new note.json format but output will not be displayed. For the detail, see ZEPPELIN-212 and pull request.
  • From 0.7 note storage layer will utilize GitNotebookRepo by default instead of VFSNotebookRepo storage layer, which is an extension of latter one with versioning capabilities on top of it.