我使用Cassandra相当新,我遇到了以下问题:
在cassandra.yaml文件中,有data_file_directories,commitlog_directory和saved_caches_directory参数。我想在其上使用我的$ HOME环境变量,因此我的项目将不依赖于此。
有人对如何做到这一点有任何建议吗?
我正在使用ubuntu,仅供参考。
答案 0 :(得分:0)
Java正在读取配置文件,而不是shell。传递非多平台环境变量很棘手,因此使用完整路径。
我不清楚“所以我的项目不会依赖于此”实际上指的是 - 同一台机器上的多个Cassandra实例?请参阅CCM:https://github.com/pcmanus/ccm
既然你提到你正在使用Ubuntu,我认为你安装了deb包。 deb包被设置为由'cassandra'用户运行,其中/ var / lib / cassandra和/ var / log / cassandra作为默认数据和日志位置,由正确的用户拥有。通过deb软件包进行的这种“系统”安装最好按原样使用,坚持完整路径。您当然可以在配置文件上使用类似sed
的内容来更改所需内容,使用shell中的$ HOME设置所需的完整路径,但是您还需要在init脚本中更改用户,并找出你在路上发现的其他错误。
你能做的最简单的事情是什么?在$ HOME中通过tarball运行Cassandra 2.1。版本2.1已更新为默认为将数据和日志写入$ CASSANDRA_HOME(提取的tarball目录),而不是/ var / {lib,log} / cassandra。
tar xzf apache-cassandra-2.1.*-bin.tar.gz
cd apache-cassandra-2.1.*/
./bin/cassandra
pkill -f CassandraDaemon
停止Cassandra