spark cassandra连接器能否在k8s环境中从无头服务解析主机名称?

siotufzp  于 2021-06-09  发布在  Cassandra
关注(0)|答案(2)|浏览(312)

datastax spark cassandra连接器采用“spark.cassandra.connection.host”连接到cassandra集群。
我们能否提供k8s环境下c集群的无头服务作为该参数的主机(“spark.cassandra.connection.host”)。
它能解决联络点吗?
在使用spark cassandra连接器的k8s环境中,与c
群集连接的首选方式是什么?

ars1skjm

ars1skjm1#

是的,为什么不呢。Kubernetes官方文件中有一个很好的例子。使用选择器创建无头服务:

apiVersion: v1
kind: Service
metadata:
  labels:
    app: cassandra
  name: cassandra
spec:
  clusterIP: None
  ports:
  - port: 9042
  selector:
    app: cassandra

基本上当你指定 spark.cassandra.connection.host=cassandra (在相同的k8s命名空间中,否则,必须提供cassandra..svc.cluster.local`它将解析为cassandra联系点(cassandra运行的pod ip地址)
✌️

oyt4ldly

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部署。

相关问题