为了安装Cassandra,我做了以下事情: 1.下载TAR文件。 2.提取文件。 3.在yaml文件中设置数据和commitlog目录的路径。
现在当我运行Cassandra时,我收到以下错误: “Java HotSpot(TM)64位服务器VM警告:由于没有这样的文件或目录,无法打开文件./..logs/gc.log”
造成这个问题的原因是什么?在运行之前我是否需要做其他事情。
操作系统:RHEL 6.5 Cassandra版本:3.11.1
答案 0 :(得分:4)
Cassandra将所有gcs记录在名为gc.log的日志文件中。该文件的路径在cassandra-env.sh中定义:
#GC log path has to be defined here because it needs to access CASSANDRA_HOME
JVM_OPTS="$JVM_OPTS -Xloggc:${CASSANDRA_HOME}/logs/gc.log"
确保cassandra文件夹中有一个名为logs的文件夹,并且无论你运行cassandra的用户是否都对此文件夹写了permisssions。
答案 1 :(得分:0)
这对我有用: $ {CASSANDRA_HOME}是在/home/richard/.bashrc中设置的,但是对于Cassandra,您有一个Cassandra用户,因此$ {CASSANDRA_HOME}也必须放在Cassandra用户/home/cassandra/.bashrc中。我的Cassandra在
/usr/local/cassandra/apache-cassandra-3.11.3
为了添加日志,我做了一个sudo mkdir logs
。然后-ls -la显示root root,所以我做了一个
sudo chwon cassandra:cassandra logs
执行cd ..进入一个目录并发出ls -la。我在上面的每个级别上都做了一个chown。我将它恢复到了/ usr / local,这可能是一个遥远的问题,以后会引起问题,但看起来风险很小。然后按照V9和更高版本的Java的要求,将home的.bashrc和Cassandra的-Xloggc更改为-Xlog:gc
From JVM_OPTS="$JVM_OPTS -Xloggc:${CASSANDRA_HOME}/logs/gc.log"
To JVM_OPTS="$JVM_OPTS -Xlog:gc:${CASSANDRA_HOME}/logs/gc.log"
我切换到Cassandra用户并成功启动Cassandra
sudo - cassandra
我有
export cassandra=/usr/local/cassandra/apache-cassandra-3.11.3/bin/cassandra
在.bashrc中,所以当我输入$ cassandra时,我的第一行回显:
in /usr/local/cassandra/apache-cassandra-3.11.3/conf/casandra-env.sh
我的最后一行是
StorageService.java:2289 - Node localhost/127.0.0.1 state jump to NORMAL
如果仍然有问题,请坚持下去。
richard@sony:~$ sudo updatedb
richard@sony:~$ locate .bashrc
/home/richard/.bashrc
/home/cassandra/.bashrc
richard@sony:/usr/local/cassandra/apache-cassandra-3.11.3/logs$ ls -la
total 1636
drwxr-xr-x 2 cassandra cassandra 4096 Sep 30 10:30 .
drwxrwxr-x 12 cassandra cassandra 4096 Sep 30 10:17 ..
-rw-rw-r-- 1 cassandra cassandra 1569961 Sep 30 11:31 debug.log
-rw-rw-r-- 1 cassandra cassandra 1116 Sep 30 11:46 gc.log
-rw-rw-r-- 1 cassandra cassandra 945 Sep 30 10:18 gc.log.0
-rw-rw-r-- 1 cassandra cassandra 85584 Sep 30 11:31 system.log
答案 2 :(得分:0)
我是Windows用户,遇到了类似的问题。我试图通过尝试不同的方法来解决它。尽管我忘记了一个简单的步骤,但是以管理员身份运行命令提示符。以管理员身份运行后,问题就解决了。