168、Spark运维管理进阶之基于文件系统实现HA高可用性以及

2019-02-02  本文已影响0人  ZFH__ZJ

概述

zookeeper是实现生产级别的高可用性的最佳方式,但是如果你就是想要在master进程挂掉的时候,手动去重启它,而不是依靠zookeeper实现自动主备切换,那么可以使用FILESYSTEM模式。当应用程序和worker都注册到master之后,master就会将它们的信息写入指定的文件系统目录中,以便于当master重启的时候可以从文件系统中恢复注册的应用程序和worker状态。

配置

要启用这种恢复模式,需要在spark-env.sh中设置SPARK_DAEMON_JAVA_OPTS
spark.deploy.recoveryMode 设置为FILESYSTEM来启用单点恢复(默认值为NONE)
spark.deploy.recoveryDirectory spark在哪个文件系统目录内存储状态信息,必须是master可以访问的目录

细节

  1. 这个解决方案可以与进程监控或管理器(比如monit)结合使用,或者就仅仅是启用手动重启恢复机制即可。
  2. 文件系统恢复比不做任何恢复机制肯定是要好的,这个模式更加适合于开发和测试环境,而不是生产环境。
    此外,通过stop-master.sh脚本杀掉一个master进程是不会清理它的恢复状态的,所以当你重启一个新的master进程时,它会进入恢复模式。
    这会增加你的恢复时间至少1分钟,因为它需要等待之前所有已经注册的worker等节点先timeout。
  3. 这种方式没有得到官方的支持,也可以使用一个NFS目录作为恢复目录。如果原先的master节点完全死掉了,你可以在其他节点上启动一个master进程,它会正确地恢复之前所有注册的worker和应用程序。之后的应用程序可以找到新的master,然后注册。

实验

  1. 关闭两台机器上的master和worker
  2. 修改192.168.114.200机器上的spark-env.sh
    export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/usr/local/spark_recovery"
  3. 在192.168.114.200上启动spark集群
  4. 启动一个任务,到一半,有一个running application
  5. 杀掉master进程
  6. 重启master进程
  7. 观察web ui上,是否恢复了worker以及原先正在运行的application
上一篇下一篇

猜你喜欢

热点阅读