datastax spark cassandra连接器采用“spark.cassandra.connection.host”连接到cassandra集群。
我们能否提供k8s环境下c集群的无头服务作为该参数的主机(“spark.cassandra.connection.host”)。
它能解决联络点吗?
在使用spark cassandra连接器的k8s环境中,与c群集连接的首选方式是什么?
datastax spark cassandra连接器采用“spark.cassandra.connection.host”连接到cassandra集群。
我们能否提供k8s环境下c集群的无头服务作为该参数的主机(“spark.cassandra.connection.host”)。
它能解决联络点吗?
在使用spark cassandra连接器的k8s环境中,与c群集连接的首选方式是什么?
2条答案
按热度按时间ars1skjm1#
是的,为什么不呢。Kubernetes官方文件中有一个很好的例子。使用选择器创建无头服务:
基本上当你指定
spark.cassandra.connection.host=cassandra
(在相同的k8s命名空间中,否则,必须提供cassandra..svc.cluster.local`它将解析为cassandra联系点(cassandra运行的pod ip地址)✌️
oyt4ldly2#
默认情况下,scc在第一次连接时将所有提供的接触点解析为ip地址,然后仅使用这些ip地址进行重新连接。在初始连接发生后,它会发现集群的其余部分。通常这不是一个问题,因为scc应该接收关于上下节点的通知,并跟踪节点的ip地址。但在实践中,可能会发生节点重新启动过快,并且未收到通知的情况,因此使用scc的spark作业可能会在尝试连接到不再有效的ip地址时受阻—我在dc/os上多次遇到这种情况。
SCC2.5.0的发布解决了这个问题,其中包括对sparkc-571的修复。它引入了一个新的配置参数-
spark.cassandra.connection.resolveContactPoints
当它被设定为false
(true
默认情况下)将始终使用接触点的主机名进行初始连接和重新连接,避免了更改ip地址的问题。所以在k8s上,我会尝试使用这个配置参数来进行正常的cassandra部署。