具有主服务发现功能的 Spark Standalone 模式
Spark Standalone mode with master service discovery
我们有一个独立的 spark,它有 2 个 master。我们正在使用 consul 来发现我们所有的服务。这样就不用写在工作配置中,例如:
spark://172.40.101.1:7077,172.40.102.2:7077
我们就写
spark://spark-master.service:7077
问题是,如果例如 172.40.101.1 处于待机状态,而 172.40.102.2 处于活动状态,并且在第一次工作人员将获得 101.1,那么它将不会再次尝试。好像它是静态的。
现在我可以使用挖掘和 linux 解析,但我的问题是:
- worker 配置是静态的吗?
- 这个问题有最佳实践吗?
这个问题有两个部分。首先是如何识别活动(或备用)火花?第二个问题是如何使用该信息连接到正确的信息?
如果您可以通过网络 url 获取或进程操作来判断哪些是活动的,哪些是备用的,您可以基于此创建服务/健康检查。谷歌搜索了一下,我看到了 spark consul 服务,它在这里进行健康检查:
{
"service": {
"name": "spark-master",
"port": 7077,
"checks": [
{
"script": "ps aux | grep -v grep | grep org.apache.spark.deploy.master.Master",
"interval": "10s"
}
]
}
}
此运行状况检查通过脚本找到 java 进程。如果找到该进程,则健康检查成功。这个特定的健康检查不关心它是活动的还是备用的,要么匹配。您需要在具有不同名称的服务下进行健康检查,以确定 spark 节点是否处于活动状态。我对 spark 一无所知,但在网上查找我发现了这个 spark-submit 命令。如果这个命令像我想象的那样工作,这可能会成功:
{
"service": {
"name":"spark-active"
,"port":7077
,"checks":[{"script": "curl --silent http://127.0.0.1:8080/ | grep '<li><strong>Status:</strong> ALIVE</li>'| wc -l | awk '{exit ($0 - 1) }'"
}
}
然后您将使用以下方式连接:
spark://spark-active.service:7077
您的健康检查也可以通过http连接。 Consul 服务检查记录在此处:https://www.consul.io/docs/agent/checks.html
-g
我们有一个独立的 spark,它有 2 个 master。我们正在使用 consul 来发现我们所有的服务。这样就不用写在工作配置中,例如:
spark://172.40.101.1:7077,172.40.102.2:7077
我们就写
spark://spark-master.service:7077
问题是,如果例如 172.40.101.1 处于待机状态,而 172.40.102.2 处于活动状态,并且在第一次工作人员将获得 101.1,那么它将不会再次尝试。好像它是静态的。
现在我可以使用挖掘和 linux 解析,但我的问题是:
- worker 配置是静态的吗?
- 这个问题有最佳实践吗?
这个问题有两个部分。首先是如何识别活动(或备用)火花?第二个问题是如何使用该信息连接到正确的信息?
如果您可以通过网络 url 获取或进程操作来判断哪些是活动的,哪些是备用的,您可以基于此创建服务/健康检查。谷歌搜索了一下,我看到了 spark consul 服务,它在这里进行健康检查:
{
"service": {
"name": "spark-master",
"port": 7077,
"checks": [
{
"script": "ps aux | grep -v grep | grep org.apache.spark.deploy.master.Master",
"interval": "10s"
}
]
}
}
此运行状况检查通过脚本找到 java 进程。如果找到该进程,则健康检查成功。这个特定的健康检查不关心它是活动的还是备用的,要么匹配。您需要在具有不同名称的服务下进行健康检查,以确定 spark 节点是否处于活动状态。我对 spark 一无所知,但在网上查找我发现了这个 spark-submit 命令。如果这个命令像我想象的那样工作,这可能会成功:
{
"service": {
"name":"spark-active"
,"port":7077
,"checks":[{"script": "curl --silent http://127.0.0.1:8080/ | grep '<li><strong>Status:</strong> ALIVE</li>'| wc -l | awk '{exit ($0 - 1) }'"
}
}
然后您将使用以下方式连接:
spark://spark-active.service:7077
您的健康检查也可以通过http连接。 Consul 服务检查记录在此处:https://www.consul.io/docs/agent/checks.html
-g