4.4. Cassandra 的安装 for Linux¶
在此,对于在Linux环境下的 Cassandra 安装方法进行说明。
4.4.1. 展开文件¶
将通过 Apache Cassandra 的取得 下载的<apache-cassandra-1.1.12 -bin.tar.gz>文件展开到任意路径。注解
本书中,作为例子指定了下述目录。
“/usr/local/cassandra”
注解
建立从展开到/usr/local/apache-cassandra-1.1.12 的内容/usr/local/cassandra的符号连接,版本升级时会易于访问。# ln -s /usr/local/apache-cassandra-1.1.12 /usr/local/cassandra
4.4.2. 各种设定¶
- 启动 Cassandra 前需要以下设定。
4.4.2.1. Cassandra 的设定¶
- 在编辑器中打开记述着 Cassandra 设定的</usr/local/cassandra/conf/cassandra.yaml>文件,进行编辑。
- 关于cassandra.yaml文件相关详细情况,请参照“Cassandra 参考信息”的“cassandra.yaml主要项目一览”。
集群名的指定
在“cluster_name” 属性中指定任意集群名称。cluster_name: 'IMBox Cluster'警告
存在多个Cassandra服务器时,有可能根据集群名判断是否为同一集群的Cassandra,并组建成集群。新构筑 intra-mart Accel Platform 时,建议变更初始值。数据保存场所的指定
在“data_file_directories”属性中指定任意路径。指定的目录不存在时,会在启动时自动生成。data_file_directories: - /var/lib/cassandra/data提交日志保存场所的指定
在“commitlog_directory”属性中指定任意路径。指定的目录不存在时,会在启动时自动生成。# commit log commitlog_directory: /var/lib/cassandra/commit_log/1.1.12缓存数据保存场所的指定
在“saved_caches_directory”属性中指定任意路径。指定的目录不存在时,会在启动时自动生成。# saved caches saved_caches_directory: /var/lib/cassandra/saved_caches/1.1.12指定与其他 Cassandra 通信用的地址
Cassandra中虽然也接受用Java的InetAddress.getLocalHost()取得的IP地址与其他Cassandra进行通信,但有多个地址时,需要明确地指定通信中使用的IP地址。listen_address: 192.168.xxx.xxx(任意IP地址) rpc_address: 192.168.xxx.xxx(任意IP地址)指定系统日志
在编辑器中打开</usr/local/cassandra/conf/log4j-server.properties>文件,在“log4j.appender.R.File”属性中指定任意路径log4j.appender.R.File=/var/log/cassandra/1.1.12/system.log
警告
设定上的注意事项
根据OS和JDK版本的不同组合,有可能出现JVM参数的Xss不足,Cassandra启动失败的情况。以确认会在以下组合发生。
- OS: Linux系OS
- JDK: Oracle JDK 1.7u40 , Oracle JDK 1.7u45
回避方法
可通过变更在${cassandra}/conf/cassandra-env.sh中设定的Xss的值来回避上述现象。
Cassandra的版本是1.1.4时
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. if startswith "$JVM_VERSION" '1.7.' then # JVM_OPTS="$JVM_OPTS -Xss160k" JVM_OPTS="$JVM_OPTS -Xss228k" else JVM_OPTS="$JVM_OPTS -Xss128k" fi fiCassandra的版本是1.1.12时
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" JVM_OPTS="$JVM_OPTS -Xss228k" fi
4.4.2.2. 文件描述符数的变更¶
根据OS设定情况,在运行中有可能发生IOException, FileNotFoundException等, 而且 Cassandra 有可能无法正常动作。这是由于 Cassandra 进程可使用(Open)的文件数上限超过了OS限制的上限数而造成的。就是说,可通过在/etc/system/limits.conf 或/etc/security/limits.conf中添加下述与环境相符的OS文件描述符设定数以下数目可以回避此问题,请变更成适当值。* soft nofile 32768 * hard nofile 32768 root soft nofile 32768 root hard nofile 32768※ 用户以及值只是示例,请设定与环境相符的适当值。
注解
文件描述符的当前设定值可通过
ulimit -n来确认。
4.4.2.3. 内存设定¶
Linux环境时,在通过</usr/local/cassandra/conf/cassandra-env.sh>启动时,最大heap size(Xmx)会被自动设定为以下的值。
- 搭载内存量是2048MB以下时,搭载内存的一半
- 搭载内存量是2049MB以上、4099MB以下时,1024MB
- 搭载内存量是4100MB以上、32768MB以下时,搭载内存量的1/4
- 搭载内存量是32769MB以上时,搭载内存量的8196MB
若要将其设定为任意值,请将</usr/local/cassandra/conf/cassandra-env.sh>中以下项目的屏蔽去除,设定为任意值。#MAX_HEAP_SIZE="4G" #HEAP_NEWSIZE="800M"警告
请在MAX_HEAP_SIZE中设定“512M”以上的值。设定了比“512M”小的值时,有可能不会正常运行。建议为Cassandra设定1GB以上的值。请根据MAX_HEAP_SIZE的设定值,为HEAP_NEWSIZE设定适当的值。
4.4.2.4. 设定环境变量¶
在环境变量中添加安装了JDK的主目录。在执行 Cassandra 的用户环境变量中,进行下述设定。
变量 JAVA_HOME 值 安装了JDK的主目录