【问题标题】:Cassandra dead but pid file existsCassandra 死机但 pid 文件存在
【发布时间】:2015-05-05 00:01:02
【问题描述】:

我是 cassandra 的新手,并尝试在 centos 7.0 上安装 cassandra-2.1.2。 完成安装后执行 cqlsh 命令并创建几个键空间和列族。 乍一看,这在我看来效果很好。

但后来我意识到以下问题:

1-当我执行“service cassandra status”命令时,出现以下错误:

输出:Cassandra 已死,但 pid 文件存在。

我搜索了上述问题并找到了一些链接

http://www.datastax.com/support-forums/topic/dse-dead-but-pid-file-exists

https://baioradba.wordpress.com/2014/06/13/how-to-install-cassandra-on-centos-6-5/

发现我有上面链接中提到的相同配置,但同样的错误仍然存​​在。

请告诉我根本原因以及如何解决它。

2- 第二个问题在 cassandra.log 文件中。

当我分析 cassandra.log 文件时,有一个期望:

Expecting URI in variable: [cassandra.config]. Please prefix the file with file:/// for local files or file://<server>/ for remote files. Aborting.

以下是完整的日志:

12:01:40.816 [main] ERROR o.a.c.config.DatabaseDescriptor - Fatal configuration error
org.apache.cassandra.exceptions.ConfigurationException: Expecting URI in variable: [cassandra.config].  Please prefix the file with file:/// for local files or file://<server>/ for remote files.  Aborting.
    at org.apache.cassandra.config.YamlConfigurationLoader.getStorageConfigURL(YamlConfigurationLoader.java:73) ~[apache-cassandra-2.1.3.jar:2.1.3]
    at org.apache.cassandra.config.YamlConfigurationLoader.loadConfig(YamlConfigurationLoader.java:84) ~[apache-cassandra-2.1.3.jar:2.1.3]
    at org.apache.cassandra.config.DatabaseDescriptor.loadConfig(DatabaseDescriptor.java:158) ~[apache-cassandra-2.1.3.jar:2.1.3]
    at org.apache.cassandra.config.DatabaseDescriptor.<clinit>(DatabaseDescriptor.java:133) ~[apache-cassandra-2.1.3.jar:2.1.3]
    at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:110) [apache-cassandra-2.1.3.jar:2.1.3]
    at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:465) [apache-cassandra-2.1.3.jar:2.1.3]
    at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:554) [apache-cassandra-2.1.3.jar:2.1.3]
Expecting URI in variable: [cassandra.config].  Please prefix the file with file:/// for local files or file://<server>/ for remote files.  Aborting.

致命的配置错误;无法启动。查看堆栈跟踪日志。

我再次在 google 中搜索了相同的问题,但链接并没有那么有用,因为它们包含 cassandra.config 的 java 类代码。

再次请说出根本原因以及如何解决?

提前致谢。

【问题讨论】:

  • 第一个问题:检查cassandra没有运行ps -aux,然后删除/var/run/cassandra中的锁文件
  • cassandra 正在运行,当我执行时: service cassandra status ,然后问题是 Cassandra 死了但 pid 存在

标签: cassandra


【解决方案1】:
rm /var/run/cassandra.pid

Run ps -ef | grep cassandra

杀死cassandra进程的pid

开始cassandra

【讨论】:

    【解决方案2】:

    修复此问题,编辑 cassandra-env.sh:

    sudo vi /etc/cassandra/conf/cassandra-env.sh

    增加 cassandra 的堆大小 .. 这应该可以解决您的问题

    【讨论】:

      【解决方案3】:

      用这个命令检查你是否有足够的内存来启动 cassandra 服务:

      cat /proc/meminfo
      

      我使用 Virtualbox 运行 Hortonworks VM,我启动了很多 Hadoop 组件,需要大量内存,所以对我来说,解决方案是停止不必要的 Hadoop 组件并为虚拟机添加一些额外的内存。

      【讨论】:

        【解决方案4】:

        来自https://github.com/apache/cassandra/blob/cassandra-2.1/examples/client_only/README.txt#L43-L49

        cassandra.yaml 可以像这里所做的那样在类路径上,可以是 在类路径中的某个位置指定(通过修改脚本) 像这样:java -Xmx1G -Dcassandra.config=/path/in/classpath/to/cassandra.yaml ...或者可以从类路径之外的位置检索,如下所示:... -Dcassandra.config=file:///path/to/cassandra.yaml ... 或 ... -Dcassandra.config=http://awesomesauce.com/cassandra.yaml ...

        所以你可能有一个错误配置的启动选项。

        【讨论】:

          【解决方案5】:

          删除 pid 文件。试试

          rm /var/run/cassandra.pid
          

          【讨论】:

            猜你喜欢
            • 2013-08-27
            • 1970-01-01
            • 2016-05-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多