2
var cluster: Cluster = null
var session: Session = null
cluster = Cluster.builder().addContactPoints("192.168.1.3","192.168.1.2").build()
val metadata = cluster.getMetadata()
printf("Connected to cluster: %s\n",
metadata.getClusterName())
metadata.getAllHosts() map {
case host =>
  printf("Datatacenter: %s; Host: %s; Rack: %s\n",
    host.getDatacenter(), host.getAddress(), host.getRack())

}

我无法使用此代码连接到 cassandra 集群。这给了我错误-

[NoHostAvailableException: All host(s) tried for query failed (tried: /192.168.1.3 ([/192.168.1.3] Cannot connect), /192.168.1.2 ([/192.168.1.2] Cannot connect))]

我在上面的代码中有什么错误。

4

3 回答 3

3

您的代码乍一看还不错。该错误表明 Cassandra 实际上并未在 IP“192.168.1.3”、“192.168.1.2”的端口 9042(默认)上运行

如果 Cassandra 在这些 IP 上运行,但它是您需要使用的另一个端口

int port = 19042; // Put the correct port here
cluster = Cluster.builder().addContactPoints("192.168.1.3","192.168.1.2").withPort(port).build()
于 2013-10-17T09:04:03.393 回答
0

对 Cassandra 的远程访问是通过其节俭端口(尽管请注意 JMX 端口可用于执行一些有限的操作)。

节俭端口在 cassandra.yaml 中由 rpc_port 参数定义,默认为 9160。您的 cassandra 节点应该绑定到服务器网卡的 IP 地址 - 它不应该是 127.0.0.1 或 localhost,这是环回接口的IP,绑定到此将阻止直接远程访问。您可以在 cassandra.yaml 中使用 rpc_address 参数配置绑定地址。将此设置为 0.0.0.0 表示“侦听所有网络接口”,这可能适合您,也可能不适合您。

要建立连接,您可以使用:

The cassandra-cli in the cassandra distribution's bin directory provides simple get / set / list operations and depends on Java
The cqlsh shell which provides CQL access to cassandra, this depends on Python
A higher level interface such as Apollo
于 2015-03-12T06:00:41.493 回答
0

您可以使用端口 9042 并尝试连接 ip 本地主机或其他机器,如下所示:

public String serverIP = "127.0.0.1"; //change ip with yours
//public String serverIP = "52.10.160.197"; //for prod
public String keyspace = "database name";  //for prod
//public String keyspace = "dbname_test";  //for staging
Cluster cluster = Cluster.builder().addContactPoint(serverIP).build();
Session session = cluster.connect(keyspace);
于 2015-05-07T05:38:49.727 回答