Spark写入Elasticsearch任务在Kubernetes中挂起问题求助
Spark on Kubernetes 任务挂起问题:S3到Elasticsearch数据写入异常
问题现象
- Spark任务从S3加载数据后,前期Spark操作均正常执行,但进入Elasticsearch读写阶段后挂起,无法正常结束。
- 已确认与Elasticsearch通信链路正常(能收到HTTP 200响应),但Java进程后续无法继续推进,导致任务停滞。
- 成功任务的调试日志:
DEBUG RestClient: request [HEAD https://xxx:443/my-index] returned [HTTP/1.1 200 OK] DEBUG JavaClient: Http Response Response{requestLine=HEAD / my-index HTTP/1.1, host=https://xxx:443, response=HTTP/1.1 200 OK} res1: Boolean = true - 失败任务卡在
DEBUG RestClient: request [HEAD https://xxx:443/my-index] returned [HTTP/1.1 200 OK],无后续日志输出。 - 资源使用差异:健康任务CPU持续正常运行,挂起任务CPU使用率骤降并保持停滞状态。
已尝试的排查与调整
- 在挂起的Executor中启动spark-shell,添加配置
--conf "spark.driver.extraJavaOptions=-Dscala.concurrent.context.maxThreads=16"后,部分HEAD请求(200/404响应)可正常完成,但稳定性差;将该配置添加到spark-submit中无效。 - PUT请求(如
PUT /my-index?master_timeout=10000ms&timeout=10000ms)创建索引后始终挂起,无后续反馈。 - 调整资源配置:增减Executor的CPU/内存配额、修改Executor数量(从2改为1)。
- 调整Spark参数:
spark.executor.heartbeatInterval=10s spark.network.timeout=100s spark.dynamicAllocation.executorIdleTimeout: 10s - 重启Kubernetes集群,问题未解决。
环境背景
- 版本信息:Spark 3.3.1、Elasticsearch 8.15.0、Kubernetes 1.24.17
- 此前相同环境下任务运行稳定,问题自8月13日起突发出现。
内容的提问来源于stack exchange,提问作者Eline
相关产品推荐
相关产品推荐

