You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark Scala中TransportRequestHandler异常:Cassandra集群作业提交失败

解决DataStax Cassandra集群上Spark作业提交的ClosedChannelException问题

这个问题我之前在提交Spark作业到DataStax Cassandra集群时也碰到过,从你给出的日志来看,是在把大jar包传输到worker节点(10.73.115.11)时连接意外关闭了,ClosedChannelException通常和网络、资源超时或者节点状态有关,给你几个具体的排查和解决方向:

  • 检查节点间网络连通性
    首先确认提交作业的driver节点和目标worker节点之间没有网络障碍:

    • 用telnet 10.73.115.11 35656或者nc -zv 10.73.115.11 35656测试端口是否能正常连通
    • 排查防火墙、安全组规则,确保Spark节点间的通信端口(包括随机端口)没有被拦截,DataStax Spark集群通常需要开放Spark默认的端口范围以及节点间的双向通信权限
  • 调整Spark网络超时参数
    你的jar包有100MB+,传输过程中很容易因为默认超时时间太短导致连接断开。提交作业时可以添加这些参数来延长超时时间:

    spark-submit \
      --class your.main.class \
      --master spark://<master-node>:7077 \
      --conf spark.network.timeout=300s \
      --conf spark.executor.heartbeatInterval=60s \
      --conf spark.driver.maxResultSize=2g \
      OLVOracleDataExtraction-0.0.1-jar-with-dependencies.jar
    
    • spark.network.timeout:全局网络超时时间,覆盖所有节点间通信的超时
    • spark.executor.heartbeatInterval:executor向driver发送心跳的间隔,避免被误判为失联
    • spark.driver.maxResultSize:driver能接收的最大数据量,确保大jar包传输不会触发限制
  • 检查worker节点磁盘空间
    Worker节点需要把接收的jar包写入本地磁盘,如果/home/cassandra/deploy/olv_extraction/所在的磁盘空间不足,会直接导致传输中断。登录到10.73.115.11节点,执行df -h查看磁盘使用情况,清理日志、冗余文件等释放空间后再重试。

  • 优化jar包传输方式
    单个大jar包传输失败概率更高,可以尝试:

    • 拆分jar包:把项目代码和依赖jar分开,提交时用--jars参数指定依赖的位置(比如放在集群共享存储上)
    • 使用分布式存储:把jar包上传到HDFS或者DataStax的分布式文件系统,提交作业时引用分布式路径,避免节点间直接传输大文件
  • 确认worker节点状态
    登录Spark Master的Web UI(默认端口8080),检查10.73.115.11这个worker节点是否处于Alive状态。如果节点曾经重启或者内存不足被kill,也会导致传输过程中连接关闭,需要确保worker节点稳定运行。

内容的提问来源于stack exchange,提问作者Chandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 07:59:22