这边所说的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上:
代码语言:javascript复制<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上:
代码语言:javascript复制<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主机接管原有任务,达到高可用的目的。
本文为从大数据到人工智能博主「xiaozhch5」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://cloud.tencent.com/developer/article/1936355