java - Spark 端口可用性

标签 java apache-spark

由于某些限制,我的 Spark 代码需要在客户端模式下运行,并且该集群被其他几个应用程序使用。我经常遇到以下问题:

ARN util.Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.

这种情况发生 16 次,这是 maxRetries 的默认值。由于某些业务限制,我无法更改此设置或将其与spark.ui.port + maxRetries 一起使用。

现在,主要问题:

发生这种情况后,应用程序不会正常退出,它只是退出,因此用户很难排除故障,因为标准输出日志中没有异常,它们只是停止。用户不检查 Spark 日志。

有没有办法检查 Spark 是否已成功绑定(bind)到某个部件,如果没有,则抛出异常?我到处寻找但找不到解决方案。

谢谢!

最佳答案

例如,您可以编写一个 shell 脚本来执行此操作

seq=16
count=0
for i in $(seq 4040 $END); 
do
if lsof -Pi :$i -sTCP:LISTEN -t >/dev/null ; then
    count=`expr $count + 1`
else
    echo "not running"
fi;
done
if count == 0 <spark-submit>

关于java - Spark 端口可用性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59051880/

相关文章:

Java流,如何GROUP BY并查找流的乘积

java - 在依赖于 Android 插件的自定义 Gradle 插件的单元测试中模拟应用程序变体

java - 我怎样做才能加快这段代码的速度?

apache-spark - 在 PySpark DataFrame 中转换为 JSON 时不要丢弃具有空值的键

spring-boot - 如何连接到不同dc中的多个Cassandra

apache-spark - 从 Spark RDD 读取 Kryo 文件

python - 如何在 HDFS 中解压多个 zip 文件

apache-spark - Spark MLlib : Difference between implicitTrain and explicitTrain

java - 使用 json-lib 转换为 java 会抛出 ClassCastException

java - 在上升图表上设置文本