marcin_j
marcin_j

Reputation: 444

connecting to cassandra using datastax' connector

When I'm trying to connect to the cassandra seed node using the datastax connector, I can't.

I have four spark nodes: one master and three workers. This works well on its own. The same machines have cassandra installed on them with the one being the spark master as a seed node. This works on its own as well (I successfully wrote and read from it).

Now, I'm trying to do

val info = spark_context.cassandraTable("files", "metainfo")
println( info.count )

Before, I specify the spark context as follows:

     val confStandalone = new SparkConf()
       .set("spark.cassandra.connection.host", "10.14.56.156")
       .setMaster("spark://10.14.56.156:7077")
       .setAppName("Test")
       .set("spark.executor.memory", "1g")
       .set("spark.eventLog.enabled", "true")
       .set("spark.driver.host", "10.14.56.156")
       .set("spark.broadcast.factory", "org.apache.spark.broadcast.HttpBroadcastFactory")

     val spark_context = new SparkContext( confStandalone )
     spark_context.addJar("SOME_PATH/spark-cassandra-connector_2.10-1.2.0-alpha1.jar")

In the cassandra.yaml file I set the rpc_address to 10.14.56.156 and used the standard ports (9160, 9042). Now when I do

sbt run

I get the following error:

15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 127.0.0.1 (datacenter1)
15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 10.14.56.156 (datacenter1)
15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 127.0.0.1 (datacenter1)
15/03/18 16:38:43 ERROR Session: Error creating pool to /127.0.0.1:9042 com.datastax.driver.core.TransportException: [/127.0.0.1:9042] Cannot connect
    at com.datastax.driver.core.Connection.<init>(Connection.java:106)
    at com.datastax.driver.core.PooledConnection.<init>(PooledConnection.java:35)
    at com.datastax.driver.core.Connection$Factory.open(Connection.java:528)
...
Caused by: java.net.ConnectException: Connection refused: /127.0.0.1:9042 at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
...

Now, when I change the rpc_address to 0.0.0.0 as id sometimes advised, I get the same error but with 10.14.56.156 instead of 127.0.0.1 and only the line:

15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 10.14.56.156 (datacenter1)

with the one above and the one below (referring to 127.0.0.1) removed.

I didn't set any firewall rules in the iptables, so I don't think that would be an issue. Help appreciated!

Upvotes: 2

Views: 1220

Answers (1)

Andy Tolbert
Andy Tolbert

Reputation: 11638

Have you looked at what broadcast_rpc_address is set to? The java-driver will derive the ip to connect to from the 'peer' column of system.peers. If rpc_address is set to 0.0.0.0, broadcast_rpc_address must be set.

My guess is that with your rpc_address set to 0.0.0.0, the driver is connecting from the broadcast_rpc_address even though it says [/10.14.56.156:9042] Cannot connect (you may see Connection refused: /127.0.0.1:9042 further in the stack trace).

Upvotes: 2

Related Questions