2015-08-08 52 views
2

我已经安装了spark和cassandra集群,并且在我的火花作业中使用了cassandra连接器。现在运行我的工作,我使用spark.cassandra.connection.host并在一个数据中心中传递种子节点的一个IP地址。我正在浏览连接器网站,其状态如火花cassandra连接器中的多个接触点

"The initial contact node given in spark.cassandra.connection.host can be any node of the cluster. The driver will fetch the cluster topology from the contact node and will always try to connect to the closest node in the same data center. If possible, connections are established to the same node the task is running on." 

我的查询是如果联系节点关闭会发生什么情况。 Spark将无法获得集群拓扑,因此无法工作。 我还用cassandra的nodejs连接器,在那里我们提供了一个接触点阵列。是否有可能在火花卡桑德拉连接器

回答

0

不,你不能传递一个主机数组到'spark.cassandra.connection.host'(虽然,如果你想,你可以编写一个服务来检查所有的连接主机,然后有条件地使用一个作为你的SparkConfig)。

然而,从documentation,这听起来像我们可以假设spark-cassandra会选择任何工作节点(即只要你在主机上有一个节点,它会工作)。

spark.cassandra.connection.host中给出的初始联系节点可以是集群中的任何节点。

而且,这听起来像如果一个节点是向下,则该请求将重试在本地节点(未不同的主机)

如果在本地数据中心一些节点是向下和读或写操作失败,操作将不会在不同数据中心的节点上重试。

希望这会有所帮助。

+0

是的,但我的问题仍未得到解答。那么如果Spark所连接的节点关闭并且尚未发现拓扑,我认为它将无法连接和检索数据,如果发生什么情况 – Nipun

+0

从我理解的情况来看...... spark没有连接到特定的节点,它连接到主机,然后选择一个节点。如果您的主机停机,那么您的应用将失败。如果主机上的所有节点都关闭,则应用程序将失败。所以是的,如果你的主机关闭了,那么它将无法检索数据。 – dannypaz

+0

主机和节点有什么区别?按照文档“spark.cassandra.connection.host中给出的初始接触节点可以是任何节点” – Nipun

1

那么,根据connector documentation

多个主机可以使用分隔的列表 逗号( “127.0.0.1,127.0.0.2”)通过。这些仅是初始接触点, 本地DC中的所有节点都将在连接时使用。

因此,随意添加尽可能多的接触点,让您感觉舒适。只要至少有一个可以连接到我们的客户,您就可以走了。

+0

哦,这很早就没有。可能是新的火花cassandra连接器。 – Nipun

+0

@Nipun卡桑德拉怎么样?我现在正在研究它,主要是因为我对其复制功能感兴趣(跨数据中心,主要是为了低延迟访问)。 –

+0

那么我们有一个2个数据中心的小设置。到现在为止没有投诉。由于我们有很多分析数据,因此我们主要对高写入感兴趣。只有cassandra指出它不是灵活查询的数据库。它主要是一个用于分析的数据库 – Nipun