Abh*_*ute 4 cassandra socket-timeout-exception datastax-enterprise datastax-java-driver
在使用spark工作执行Cassandra操作(两个表上的批处理执行 - 插入和更新操作)时,我得到了"所有主机都尝试查询失败 - com.datastax.driver.core.OperationTimedOutException "错误.
集群信息:
Cassandra 2.1.8.621 | DSE 4.7.1
spark-cassandra-connector-java_2.10 version - 1.2.0-rc1 | cassandra-driver-core版本 - 2.1.7
Spark 1.2.1 | Hadoop 2.7.1 => 3个节点
Cassandra 2.1.8 => 5个节点
每个节点有28 gb内存和24个内核
在寻找它的解决方案时,我遇到了一些讨论,其中说你不应该使用BATCHES.虽然我想找到这个错误的根本原因.另外,如何以及从哪里设置/获取"SocketOptions.setReadTimeout",因为此超时限制必须大于Cassandra请求超时(根据标准准则)并避免可能的错误.
是request_timeout_in_ms和SocketOptions.setReadTimeout一样吗?任何人都可以帮我这个吗?
在使用spark作业执行Cassandra操作(两个表上的批处理执行 - 插入和更新操作)时,我得到"所有主机都尝试查询失败 - com.datastax.driver.core.OperationTimedOutException"错误.
直接来自文档:
最常见的原因是Spark能够比Cassandra处理它们更快地发出写请求.这可能导致GC问题并建立提示.如果您的应用程序属于这种情况,请尝试使用以下选项降低并发写入次数和当前批次大小.
spark.cassandra.output.batch.size.rows spark.cassandra.output.concurrent.writes
或者在大于或等于1.2.0集的Spark Cassandra Connector版本中
spark.cassandra.output.throughput_mb_per_sec
这将允许您控制每秒每个Spark核心写入C*的数据量.
你不应该使用BATCHES
这并非总是如此,连接器使用本地令牌感知批处理来实现更快的读取和写入,但在自定义应用程序中使用这一点很棘手.在许多情况下,异步查询更好或更好.
setReadTimeout
这是一个DataStax java驱动程序方法.连接器为您完成此操作,无需更改.
| 归档时间: |
|
| 查看次数: |
4983 次 |
| 最近记录: |