在单个节点Cassandra安装中无法访问节点

时间:2014-03-25 18:14:14

标签: cassandra

我遇到单个节点Cassandra安装的问题。 我可以在日志中没有任何错误地启动它。 我可以创建一个键空间,创建表,插入和删除数据。 但截断不起作用

cqlsh> CREATE KEYSPACE mykeyspace WITH REPLICATION = {'class' : 'SimpleStrategy', 'replication_factor': 1};
cqlsh> use mykeyspace;
cqlsh:mykeyspace> create table test1 (num int, primary key (num));
cqlsh:mykeyspace> insert into test1 (num) values (12);
cqlsh:mykeyspace> select * from test1;

 num
-----
  12

(1 rows)
cqlsh:mykeyspace> truncate test1;
Unable to complete request: one or more nodes were unavailable.

此外,如果我尝试运行nodetool describecluster,它也不会返回完整的响应

[XXXX@XXXX dsc-cassandra-2.0.6]$ ./bin/nodetool describecluster
Cluster Information:
        Name: Test Cluster
        Snitch: org.apache.cassandra.locator.DynamicEndpointSnitch
        Partitioner: org.apache.cassandra.dht.Murmur3Partitioner
        Schema versions:
                UNREACHABLE: [127.0.0.1]

我正在使用

  • Cassandra DSC 2.0.6。
  • Red Hat 5.8。
  • java版“1.7.0_51”
    Java(TM)SE运行时环境(版本1.7.0_51-b13)
    Java HotSpot(TM)64位服务器VM(内置24.51-b03,混合模式)

我得到ping 127.0.0.1和ping localhost的响应 我使用telnet检查了所有我知道cassandra可能需要的端口(7000,9160,7199,9042) - 例如
telnet 127.0.0.1 7199
telnet localhost 7199
我可以连接到这些端口。

我正在使用默认的cassandra.yaml。这些是显示IP或主机名的行

listen_address: localhost
rpc_address: localhost
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
  parameters:
      - seeds: "127.0.0.1"

我也查看了源代码。我相信问题可以接近方法org.apache.cassandra.service.StorageProxyMBean.describeSchemaVersions()。很可能我没有得到对SCHEMA_CHECK消息的回复 我尝试在log4中启用TRACE登录nodetool(conf / log4j-tools.properties)以获取有关该问题的更多信息,但不知何故log4j没有开始记录(它确实创建了我在appender中设置的文件,但是文件是空的。)

必须有特定于此环境的内容,因为我无法在任何其他环境中重复此问题。所以我无法弄清楚是什么导致了它。

1 个答案:

答案 0 :(得分:1)

问题在于Cassandra无法加载snappy。

org.xerial.snappy.SnappyError: [FAILED_TO_LOAD_NATIVE_LIBRARY] null
    at org.xerial.snappy.SnappyLoader.load(SnappyLoader.java:239)
    at org.xerial.snappy.Snappy.<clinit>(Snappy.java:48)
    at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:79)
    at org.xerial.snappy.SnappyOutputStream.<init>(SnappyOutputStream.java:66)
    at org.apache.cassandra.net.OutboundTcpConnection.connect(OutboundTcpConnection.java:359)
    at org.apache.cassandra.net.OutboundTcpConnection.run(OutboundTcpConnection.java:150)

我在cassanda.yaml

中关闭了压缩
internode_compression: none

现在nodetool都描述了集群,我截断了工作。

我也在这里找到了类似的帖子Cassandra Startup Error 1.2.6 on Linux x86_64

因为为了测试我无法在这台机器上安装另一个glibc我下载了snappy-java-1.0.4.1.jar并在我的snappy-java-1.0.5.jar中替换了libsnappyjava.so

使用这个罐子我可以用

运行cassandra
internode_compression: all

(我安装了glibc 2.5)