【问题标题】:Spark High Availability火花高可用性
【发布时间】:2016-03-15 21:28:31
【问题描述】:

我在三个节点上使用 spark 1.2.1,这些节点运行三个具有从属配置的工作人员,并通过以下方式运行 每日 作业:

./spark-1.2.1/sbin/start-all.sh

//crontab configuration:
./spark-1.2.1/bin/spark-submit --master spark://11.11.11.11:7077 --driver-class-path home/ubuntu/spark-cassandra-connector-java-assembly-1.2.1-FAT.jar --class "$class" "$jar"

我想让 spark master 和 slave worker 始终可用,即使失败,我也需要像 service 一样重新启动它(就像 cassandra 一样) .

有什么办法吗?

编辑:

我查看了 start-all.sh 脚本,它只包含 start-master.sh 脚本和 start-slaves.sh 脚本的设置。 我试图为它创建一个 supervisor 配置文件,但只得到以下错误:

11.11.11.11: ssh: connect to host 11.11.11.12 port 22: No route to host
11.11.11.13: org.apache.spark.deploy.worker.Worker running as process 14627. Stop it first.
11.11.11.11: ssh: connect to host 11.11.11.12 port 22: No route to host
11.11.11.12: ssh: connect to host 11.11.11.13 port 22: No route to host
11.11.11.11: org.apache.spark.deploy.worker.Worker running as process 14627. Stop it first.
11.11.11.12: ssh: connect to host 11.11.11.12 port 22: No route to host
11.11.11.13: ssh: connect to host 11.11.11.13 port 22: No route to host
11.11.11.11: org.apache.spark.deploy.worker.Worker running as process 14627. Stop it first.

【问题讨论】:

  • 你需要一个 mesos 或 chronos 集群,或者类似的东西

标签: apache-spark


【解决方案1】:

有像 monit 和 supervisor(甚至 systemd)这样的工具可以监控和重启失败的进程。

【讨论】:

  • 但是 spark start-all.sh 是一个运行从属的 bash 脚本,如果我使用主管来保持它 - 它不会知道它已经打开的从属进程以及它是否失败并且主管尝试再次设置它-我将使从线程仍在运行...
  • Don't use start-all.sh then)) 我可能会做的是独立管理每个节点上 spark 守护进程的启动/停止。 Spark 有一个 spark-daemon.sh 脚本,用于在特定节点上启动特定进程(主进程或工作进程)。因此,您需要在每个节点上安装 supervisord,它只会在该特定节点上管理 spark 守护进程。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多