這邊所說的zeppelin高可用不是傳統意義上的HA模式,而是利用統一的配置文件,在一個zeppelin server掛掉之後,在另一個zeppelin server從統一配置文件再恢復到原有作業模式。在集羣中,同時僅存在一個zeppelin server服務。
下面描述如何配置。
環境準備
服務器以及組件安裝位置:
服務器名稱 |
hadoop |
hadoop1 |
---|---|---|
組件名稱 |
hdfs |
hdfs |
組件名稱 |
zeppelin |
zeppelin |
說明:
- hadoop和hadoop1組成hdfs集羣。
- zeppelin位於hadoop和hadoop1上,其配置完全相同。
zeppelin配置
爲了配置兩臺機器中,一臺zeppelin server掛掉之後另一臺機器能夠接管上面運行的任務,需要做如下配置。
注意,兩臺zeppelin server配置完全相同。
修改zeppelin-site.xml,設置zeppelin.notebook.storage和zeppelin.notebook.dir爲如下所示,該配置表示將notebook存儲於hdfs上:
<property>
<name>zeppelin.notebook.storage</name>
<value>org.apache.zeppelin.notebook.repo.FileSystemNotebookRepo</value>
<description>Hadoop compatible file system notebook persistence layer implementation, such as local file system, hdfs, azure wasb, s3 and etc.</description>
</property>
<property>
<name>zeppelin.notebook.dir</name>
<value>hdfs://hadoop:9000/zeppelin-notebook</value>
<description>path or URI for notebook persist</description>
</property>Copy
複製
修改zeppelin-site.xml,設置zeppelin.recovery.storage.class和zeppelin.recovery.dir爲如下所示,該配置表示啓用zeppelin的恢復功能,並將回覆信息放在hdfs上:
<property>
<name>zeppelin.recovery.storage.class</name>
<value>org.apache.zeppelin.interpreter.recovery.FileSystemRecoveryStorage</value>
<description>ReoveryStorage implementation based on hadoop FileSystem</description>
</property>
<property>
<name>zeppelin.recovery.dir</name>
<value>hdfs://hadoop:9000/zeppelin-recovery</value>
<description>Location where recovery metadata is stored</description>
</property>Copy
複製
基本測試
接下來以一個Flink SQL任務爲例進行測試。
首先在hadoop主機上啓動zeppelin server
提交任務
查看flink作業
停止hadoop主機上的zeppelin server
在hadoop1主機上啓動zeppelin server
在hadoop1主機上查看任務情況
我們可以發現,hadoop1已經接管了hadoop之前運行的任務。
總結
基於上述方式,可以達到一臺zeppelin server主機宕機,利用另一臺zeppelin server主機接管原有任務,達到高可用的目的。