Jvm datastax:Spark作业失败:在最近没有心跳的情况下删除BlockManager

Jvm datastax:Spark作业失败:在最近没有心跳的情况下删除BlockManager,jvm,apache-spark,datastax-enterprise,Jvm,Apache Spark,Datastax Enterprise,我正在使用datastax-4.6。我创建了一个cassandra表并存储了2条错误记录。我正在尝试使用scala读取数据。该代码对少数记录运行良好,但当我尝试检索所有2crore记录时,它会显示以下错误 **WARN BlockManagerMasterActor: Removing BlockManager BlockManagerId(1, 172.20.98.17, 34224, 0) with no recent heart beats: 140948ms exceeds 45000

我正在使用datastax-4.6。我创建了一个cassandra表并存储了2条错误记录。我正在尝试使用scala读取数据。该代码对少数记录运行良好,但当我尝试检索所有2crore记录时,它会显示以下错误

 **WARN BlockManagerMasterActor: Removing BlockManager BlockManagerId(1, 172.20.98.17, 34224, 0) with no recent heart beats: 140948ms exceeds 45000ms

15/05/15 19:34:06 ERROR ConnectionManager: Corresponding SendingConnection to ConnectionManagerId(C15759,34224) not found**

有什么帮助吗?

这个问题通常与

调整您的超时 增加spark.storage.blockManagerHeartBeatMs,以便spark等待GC暂停结束

SPARK-734建议设置
-Dspark.worker.timeout=30000-Dspark.akka.timeout=30000-Dspark.storage.blockmanagerArtbeatms=30000-Dspark.akka.retry.wait=30000-Dspark.akka.frameSize=10000

为JVM调整作业 spark.cassandra.input.split.size将允许您更改cassandra读取的并行化级别。更大的分割大小意味着更多的数据必须同时驻留在内存中

spark.storage.memoryFraction和spark.shuffle.memoryFraction-RDD将占用的堆量(与随机内存和spark开销相对)。如果不进行任何洗牌,可以增加该值。databricks的人说要让它的大小和你的老根差不多

spark.executor.memory-显然这取决于您的硬件。每个DataBricks最多可以实现55gb。确保为C*和操作系统以及操作系统页面缓存留出足够的RAM。请记住,较长的GC暂停发生在较大的堆上


出于好奇,您是否经常使用Spark提取整个C*表?用例是什么?

谢谢。我正在尝试对存储在cassandra中的股票数据进行移动平均计算。我可以在sparsh-env.sh文件中设置这个JVM调优选项吗??或者,你能指导我如何通过命令行使用吗?是的,在spark env.sh中,请查看我参考的spark-734票据