Cassandra 2.0-即使在30+;会议记录

Cassandra 2.0-即使在30+;会议记录,cassandra,cql3,datastax,Cassandra,Cql3,Datastax,几个月前,我在CQL3.0/Cassandra 1.2中创建了一个表,它具有一个非常简单的表结构,其中包含两列CQL3集合 今天,我在我们的开发C*集群上对该表的模式进行了更新,该集群已经升级到运行CQL 3.1的Cassandra 2.0 今天,我通过cqlsh在环中的4个节点之一上运行了以下命令: 更改表现有表DROP OldColumn1; ALTER TABLE ExistingTable DROP OLDCLUMN1--用于DSE搜索solr索引;不再需要 ALTER TABLE E

几个月前,我在CQL3.0/Cassandra 1.2中创建了一个表,它具有一个非常简单的表结构,其中包含两列CQL3集合

今天,我在我们的开发C*集群上对该表的模式进行了更新,该集群已经升级到运行CQL 3.1的Cassandra 2.0

今天,我通过
cqlsh
在环中的4个节点之一上运行了以下命令:

更改表现有表DROP OldColumn1;
ALTER TABLE ExistingTable DROP OLDCLUMN1--用于DSE搜索solr索引;不再需要
ALTER TABLE ExistingTable ADD NewColumn集合;

然而,30分钟后,我看到应用程序中的一些测试失败,并且非常惊讶地看到,虽然我运行这些更改的节点具有正确的模式,但这些更改都没有传播到环中的对等节点。我已经使用卡桑德拉一年半了,以前从未见过

我如何解决此问题以及问题的原因

编辑 这可能有助于解释发生了什么。尝试启动
节点工具修复时出现以下错误:

线程“main”java.lang.UnsupportedClassVersionError:org/apache/cassandra/tools/NodeCmd中出现异常:不支持的主版本51.0 位于java.lang.ClassLoader.defineClass1(本机方法) 位于java.lang.ClassLoader.defineClassCond(ClassLoader.java:631) 位于java.lang.ClassLoader.defineClass(ClassLoader.java:615) 位于java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141) 位于java.net.URLClassLoader.defineClass(URLClassLoader.java:283) 在java.net.URLClassLoader.access$000(URLClassLoader.java:58) 在java.net.URLClassLoader$1.run(URLClassLoader.java:197) 位于java.security.AccessController.doPrivileged(本机方法) 位于java.net.URLClassLoader.findClass(URLClassLoader.java:190) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:306) 位于sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 位于java.lang.ClassLoader.loadClass(ClassLoader.java:247)
找不到主类:org.apache.cassandra.tools.NodeCmd。程序将退出。

您的代码是为JDK 7编译的,您正在运行JDK 6。

您的代码是为JDK 7编译的,您正在运行JDK 6。

您的代码是为JDK 7编译的,您正在运行JDK 6。

您的代码是为JDK 7编译的,您正在JDK 6上运行。

我遵循了Christopher的建议,并使用nodetool/dse工具修复了JDK问题。Cassandra之所以能够工作,是因为它寻找指向“java”命令的符号链接,该命令在升级到OracleJDK7的过程中被正确设置为JRE7,并使用它来运行JAR。但是,除
cqlsh
之外的所有命令行工具都依赖于JAVA_HOME环境变量,该变量被错误地设置为JAVA 6。这就是为什么Cassandra 2.0可以运行,而nodetool不能


在解决了这个问题之后,一旦我将模式更改重新应用到另一个节点,我的模式会立即复制到其他节点。

我遵循了Christopher的建议,并使用nodetool/dse工具修复了我的JDK问题。Cassandra之所以能够工作,是因为它寻找指向“java”命令的符号链接,该命令在升级到OracleJDK7的过程中被正确设置为JRE7,并使用它来运行JAR。但是,除
cqlsh
之外的所有命令行工具都依赖于JAVA_HOME环境变量,该变量被错误地设置为JAVA 6。这就是为什么Cassandra 2.0可以运行,而nodetool不能


在解决了这个问题之后,一旦我将模式更改重新应用到另一个节点,我的模式会立即复制到其他节点。

我遵循了Christopher的建议,并使用nodetool/dse工具修复了我的JDK问题。Cassandra之所以能够工作,是因为它寻找指向“java”命令的符号链接,该命令在升级到OracleJDK7的过程中被正确设置为JRE7,并使用它来运行JAR。但是,除
cqlsh
之外的所有命令行工具都依赖于JAVA_HOME环境变量,该变量被错误地设置为JAVA 6。这就是为什么Cassandra 2.0可以运行,而nodetool不能


在解决了这个问题之后,一旦我将模式更改重新应用到另一个节点,我的模式会立即复制到其他节点。

我遵循了Christopher的建议,并使用nodetool/dse工具修复了我的JDK问题。Cassandra之所以能够工作,是因为它寻找指向“java”命令的符号链接,该命令在升级到OracleJDK7的过程中被正确设置为JRE7,并使用它来运行JAR。但是,除
cqlsh
之外的所有命令行工具都依赖于JAVA_HOME环境变量,该变量被错误地设置为JAVA 6。这就是为什么Cassandra 2.0可以运行,而nodetool不能


解决该问题后,一旦我将模式更改重新应用到其他节点,我的模式将立即复制到其他节点。

如果有人要求,Cassandra服务器本身运行正常。直到现在我才和他们有任何问题。这也不是一个明显的JDK7问题-至少对于Cassandra本身来说不是,因为DSE运行正常。是的,但是您的节点工具定义有一个JDK7问题。如果有人问,Cassandra服务器本身运行正常。直到现在我才和他们有任何问题。这也不是一个明显的JDK7问题-至少对于Cassandra本身来说不是,因为DSE运行正常。是的,但是您的节点工具定义有一个JDK7问题。如果有人问,Cassandra服务器本身运行正常。直到现在我才和他们有任何问题。这也不是一个明显的JDK7问题-至少对于Cassandra本身来说不是,因为DSE运行正常。是的,但是您的节点工具定义有一个JDK7问题。如果有人问,Cassandra服务器本身运行正常。