这边所说的zeppelin高可用不是传统意义上的HA模式,而是利用统一的配置文件,在一个zeppelin server挂掉之后,在另一个zeppelin server从统一配置文件再恢复到原有作业模式。在集群中,同时仅存在一个zeppelin server服务。
下面描述如何配置。
环境准备
服务器以及组件安装位置:
服务器名称 | hadoop | hadoop1 |
---|---|---|
组件名称 | hdfs 3.2.1 | hdfs 3.2.1 |
组件名称 | zeppelin 0.10.0 | zeppelin 0.10.0 |
说明:
-
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>
修改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>
基本测试
接下来以一个Flink SQL任务为例进行测试。
首先在hadoop主机上启动zeppelin server
提交任务
查看flink作业
停止hadoop主机上的zeppelin server
在hadoop1主机上启动zeppelin server
在hadoop1主机上查看任务情况
我们可以发现,hadoop1已经接管了hadoop之前运行的任务。
总结
基于上述方式,可以达到一台zeppelin server主机宕机,利用另一台zeppelin server主机接管原有任务,达到高可用的目的。
参考链接: