Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用bin/Cassandra启动Cassandra数据库_Cassandra - Fatal编程技术网

无法使用bin/Cassandra启动Cassandra数据库

无法使用bin/Cassandra启动Cassandra数据库,cassandra,Cassandra,我有Ubuntu12.04和cassandra 1.1.3(tarball安装),当我尝试启动cassandra时,我得到以下信息: user@ubuntu:~/apache-cassandra-1.1.3/bin$ sudo ./cassandra -f xss = -ea -javaagent:./../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms4G -Xmx4G -Xmn800M

我有Ubuntu12.04和cassandra 1.1.3(tarball安装),当我尝试启动cassandra时,我得到以下信息:

user@ubuntu:~/apache-cassandra-1.1.3/bin$ sudo ./cassandra -f
xss =  -ea -javaagent:./../lib/jamm-0.2.5.jar -XX:+UseThreadPriorities -XX:ThreadPriorityPolicy=42 -Xms4G -Xmx4G -Xmn800M -XX:    +HeapDumpOnOutOfMemoryError -Xss128k
user@ubuntu:~/apache-cassandra-1.1.3/bin$ 
根据cassandra文档,输出结果与预期不符:

The service should start in the foreground and log gratuitously to 
standard-out. Assuming you don't see messages with scary words like  
"error", or "fatal", or anything that looks like a Java stack trace,  
then chances are you've succeeded.

那么,问题出在哪里呢?

这很可能是由于试图在OpenJDK 1.6下运行导致的,这会导致Ubuntu/Debian下出现分段错误。seg错误是隐藏的,因为shell脚本执行进程的方式不同。您可以通过修改$CASSANDRA_HOME/bin/CASSANDRA来测试此问题,如下所示:

更改此行:

exec $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class"
为此:

echo $NUMACTL "$JAVA" $JVM_OPTS $cassandra_parms -cp "$CLASSPATH" $props "$class"

然后运行
bin/cassandra-f
并复制生成的java命令。直接运行此命令,查看是否产生分段错误。如果这是您的问题,您需要切换到Sun或IBM JDK,或者您可以升级到OpenJDK 1.7。

问题可能是由使用OpenJDK引起的,如Cassandra错误报告中所述,但是,有关Sun/Oracle和其他JVM上出现的此问题,请参阅此处的注释:

如果无法安装Oracle JVM,请尝试更改
conf/cassandra env.sh
配置脚本中的堆栈大小。在第185行附近查找以下部分,并将
-Xss180k
更改为更高的值

if [ "`uname`" = "Linux" ] ; then
  # reduce the per-thread stack size to minimize the impact of Thrift
  # thread-per-client.  (Best practice is for client connections to
  # be pooled anyway.) Only do so on Linux where it is known to be
  # supported.
  # u34 and greater need 180k
  JVM_OPTS="$JVM_OPTS -Xss180k"
fi
echo "xss = $JVM_OPTS"
在Rackspace和Amazon的Ubuntu服务器上测试安装时,我成功地使用了280k


根据下面评论中的报告,我建议以20k的增量增加堆栈大小,从
-Xss200k
开始,直到Cassandra正确启动。请注意,也可以删除此选项并使用每个线程的默认堆栈大小,但请注意这将对内存消耗产生的影响。

如果您确定正确设置了环境变量,请尝试使用命令-/cassandra-f start。流动的脚步帮助了我

移除卡桑德拉
$apt get remove cassandra

更新apt回购协议
$sudo添加apt存储库ppa:webupd8team/java

重新安装java
$sudo-apt-get-install-oracle-java8-set-default

再次安装cassandra
$apt get install cassandra


我使用的是来自该数据库的信息

您的数据库是否包含任何数据?或者这是一个新的安装?这是一个新的安装,以前,我使用apt get安装了ubuntu打包的cassandra 1.0,并且它在启动时没有任何问题。无论如何,2天后,我通过手动删除文件夹卸载了cassandra 1.0,并安装了cassandra 1.1的tarball(按照官方网站中的说明)。更正:我按照自述文件中的说明,而不是网站中的说明。您的cassandra.yaml是否保持不变?它是否引用了正确的数据文件目录?如果是这样,试着将它指向一个新的(空)目录,看看它是否出现。我检查了cassandra.yaml,它引用的是一个不再存在的旧目录(可能与以前的安装有关)。我设置了以下内容:data\u file\u目录:/db/cassandra/data,还有:commitlog\u目录:/db/cassandra/commitlog,以及保存的\u缓存\u目录:/db/cassandra/commitlog。我尝试了agian,但cassandra没有出现,终端返回了相同的错误。在Red Hat上,我得到了类似的结果,但O/S也报告“
分段错误(内核转储)
”。这不仅限于OpenJDK 1.6—增加堆栈大小可以解决问题。在Red Hat 6上使用256k堆栈大小可以解决此问题。我在Sun 1.7.0_15 JDK上也遇到了此问题,设置
-Xss280k
可以解决此问题。所以这个问题并不局限于OpenJDK。我在Amazon Linux 64位AMI(OpenJDK 1.6)上用210k解决了这个问题。280k在java版本“1.6.0_27”OpenJDK运行时环境(IcedTea6 1.12.5)(6b27-1.12.5-0ubuntu0.12.04.1)上为我解决了这个问题。感谢您的帮助。我将其设置为280k和300k,但仍然是相同的错误。我应该尝试多高的值?我正在使用OracleJDK