在我们的40个节点集群(33个火花 Actuator / 5个节点cassandra)上,我们在cassandra表(带有 .saveToCassandra
)中插入了大约20 000个每分钟(以及其他东西)的火花流 . 我们得到的结果是:
如果我理解正确的话,执行者 S3
, S14
和 S19
会在75%的时间内闲置并阻止阶段结束......这样的资源浪费!而且性能下降 .
以下是我的SparkContext的conf选项:
.set("spark.cassandra.output.batch.size.rows", "5120")
.set("spark.cassandra.output.concurrent.writes", "100")
.set("spark.cassandra.output.batch.size.bytes", "100000")
.set("spark.cassandra.connection.keep_alive_ms","60000")
这种行为是否正常?如果不是,我应该调整上述设置以避免它?问题来自spark-cassandra-connector写入还是其他什么?
1 回答
乍一看,我怀疑这是一个cassandra连接器问题 . 我们目前正在做.saveToCassandra,每分钟有300,000条记录和更小的集群 .
如果是.saveToCassandra花了很长时间,你往往会看到很长的任务 . 您所看到的是任务之间无法解释(?)的差距 .
这将需要更多的信息来追踪这一点 . 从“工作”选项卡开始 - 您是否看到任何工作需要很长时间?深入了解,你看到了什么?