当我尝试使用datastax连接器连接到cassandra种子节点时,我不能。
我有四个火花节点:一个主人和三个工人。这本身很好用。相同的机器上安装了cassandra,其中一个是作为种子节点的spark master。这也是独立工作的(我成功地编写并从中读取)。
现在,我正在尝试
val info = spark_context.cassandraTable("files", "metainfo")
println( info.count )
之前,我按如下方式指定了火花上下文:
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")
在cassandra.yaml文件中,我将rpc_address设置为10.14.56.156并使用标准端口(9160,9042)。现在我做的时候
sbt run
我收到以下错误:
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)
...
现在,当我将rpc_address更改为0.0.0.0,因为有时建议使用id,我得到相同的错误,但是使用10.14.56.156而不是127.0.0.1并且只有行:
15/03/18 16:38:43 INFO LocalNodeFirstLoadBalancingPolicy: Adding host 10.14.56.156 (datacenter1)
删除上面的那个和下面的那个(指127.0.0.1)。
我没有在iptables中设置任何防火墙规则,所以我认为这不是问题。帮助赞赏!
答案 0 :(得分:2)
你看过broadcast_rpc_address设置的内容吗? java驱动程序将从system.peers的'peer'列派生ip连接到。如果rpc_address设置为0.0.0.0,则必须设置broadcast_rpc_address。
我的猜测是,当你的rpc_address设置为0.0.0.0时,驱动程序正在从broadcast_rpc_address连接,即使它显示[/10.14.56.156:9042] Cannot connect
(你可能会看到Connection refused: /127.0.0.1:9042 further in the stack trace
)。