Spark由于端口号无限增长报错和任务跑完就关闭的解决方案

Spark UI与端口配置
本文介绍了Spark UI的默认端口配置及如何调整spark.port.maxRetries参数来避免端口冲突,确保多个Spark任务可以同时运行,并介绍了如何通过配置使Spark UI在任务结束后仍可访问。

Spark任务都会绑定一个端口来显示WebUI,默认端口为4040,如果被占用则依次递增+1端口重试,重试次数由参数spark.port.maxRetries=16控制,默认重试16次后就放弃执行

当有17个app进来会报错,最多能运行16个作业

我们工作中,一定要把这个参数调大,一般都好几千

spark.eventLog.enabled=true 即使spark任务运行结束,也可以访问sparkUI,来保证任务跑完了也可以实时监控

./sbin/start-history-server.sh

并把日志存到文件系统里面去

spark.port.maxRetries16Maximum number of retries when binding to a port before giving up. When a port is given a specific value (non 0), each subsequent retry will increment the port used in the previous attempt by 1 before retrying. This essentially allows it to try a range of ports from the start port specified to port + maxRetries.
spark.ui的默认端口 配置在spark-default.conf中,或者在spark-shell的时候指定./spark-shell --conf PROP=16


初始化参数方式
1. 程序代码中初始化SparkConf时,设置conf.set(“spark.port.maxRetries”,“128”)
2. 使用spark-submit提交任务时,--conf spark.port.maxRetries=128
3. 在全局的spark-defaults.conf中添加spark.port.maxRetries 128 , 对所有的application起作用
### Spark-submit 运行 Python 脚本报错解决方案 在使用 `spark-submit` 提交 Python 应用程序时,可能会遇到多种错误。以下是一些常见的报错及其解决方法: #### 1. **缺少依赖项** 如果 Python 脚本依赖于外部库(如 `.zip` 或 `.egg` 文件),但未通过 `--py-files` 参数正确传递这些依赖项,则可能导致运行时错误。 - 确保所有依赖项已正确打包并传递给 `spark-submit` 命令。 - 使用 `--py-files` 参数将 `.zip`、`.egg` 或 `.py` 文件添加到搜索路径中[^1]。 示例命令: ```bash ./bin/spark-submit \ --master spark://207.184.161.138:7077 \ --py-files /path/to/dependencies.zip \ examples/src/main/python/pi.py \ 1000 ``` #### 2. **Python 版本不匹配** Spark 集群中的 Python 版本可能与本地开发环境中的版本不一致。这可能导致兼容性问题或模块加载失败。 - 检查集群节点上的 Python 版本是否与脚本所需的版本一致。 - 使用 `PYSPARK_PYTHON` `PYSPARK_DRIVER_PYTHON` 环境变量指定 Python 解释器路径。 设置环境变量示例: ```bash export PYSPARK_PYTHON=/usr/bin/python3 export PYSPARK_DRIVER_PYTHON=/usr/bin/python3 ``` #### 3. **文件路径问题** 如果提交的 Python 脚本路径不正确或无法访问,`spark-submit` 将无法找到目标文件。 - 确保提供的脚本路径是绝对路径或可解析的相对路径。 - 如果脚本位于 HDFS 中,请使用 HDFS 路径。 示例命令: ```bash ./bin/spark-submit \ --master spark://207.184.161.138:7077 \ hdfs://namenode:8020/user/examples/pi.py \ 1000 ``` #### 4. **权限问题** 如果脚本或其依赖项的文件权限不足,可能导致读取失败。 - 确保脚本依赖项具有适当的权限。 - 使用 `chmod` 修改文件权限。 示例命令: ```bash chmod +x /path/to/pi.py ``` #### 5. **日志分析** 若以上方法均未解决问题,建议检查 Spark 日志以获取更多详细信息。 - 日志通常位于 `$SPARK_HOME/logs` 目录下。 - 使用 `--verbose` 参数启动 `spark-submit`,以获取更详细的输出信息。 示例命令: ```bash ./bin/spark-submit \ --master spark://207.184.161.138:7077 \ --verbose \ examples/src/main/python/pi.py \ 1000 ``` ### 示例代码 以下是一个完整的 `spark-submit` 命令示例,包含常见参数配置: ```bash ./bin/spark-submit \ --master spark://207.184.161.138:7077 \ --deploy-mode cluster \ --py-files /path/to/dependencies.zip \ --conf "spark.executor.memory=2g" \ examples/src/main/python/pi.py \ 1000 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值