Cassandra的安装
前提
本文使用的Cassandra版本为3.9。
- Cassandra3.9版本的运行需要jdk1.8的版本: Oracle Java Standard Edition 8 或者 OpenJDK 8都可以。可以通过命令
java -version
验证Java版本。 - 如果想要使用cqlsh,需要Python2.7及其以上的版本。可以通过命令
python --version
验证python的版本。
使用二进制tarball文件安装
- 从 Apache Cassandra downloads website 下载最新稳定发行版
- 解压tarball文件到某个目录下, 比如通过如下命令:
tar -xvf apache-cassandra-3.9-bin.tar.gz cassandra
具体示例:
wget http://mirrors.cnnic.cn/apache/cassandra/3.9/apache-cassandra-3.9-bin.tar.gz wget http://www.apache.org/dist/cassandra/3.9/apache-cassandra-3.9-bin.tar.gz.md5 wget https://www.apache.org/dist/cassandra/KEYS wget http://www.apache.org/dist/cassandra/3.9/apache-cassandra-3.9-bin.tar.gz.asc md5 apache-cassandra-3.9-bin.tar.gz | awk '{printf $4}' > mycomputation.md5 diff mycomputation.md5 apache-cassandra-3.9-bin.tar.gz.md5 gpg --import KEYS gpg --verify apache-cassandra-3.9-bin.tar.gz.asc apache-cassandra-3.9-bin.tar.gz tar -xvf apache-cassandra-3.9-bin.tar.gz cassandra
Cassandra的运行
- 可选地,可把 apache-cassandra-3.6\bin 添加到path变量中。
- 前台启动Cassandra,则直接在命令行窗口执行命令
bin/cassandra -f
,按“Control-C” 停止Cassandra.。如果是通过命令行bin/cassandra
后台启动Cassandra,那么必须调用kill pid
orpkill -f CassandraDaemon
来停止Cassandra, 其中pid是Cassandra的进程id, 此pid能够通过执行pgrep -f CassandraDaemon
得到。 - 通过从命令行执行
bin/nodetool status
得到Cassandra的运行情况。 - 配置文件在con子目录下。
- 从Cassandra 2.1开始, 日志和数据分别在logs 和data子目录下。更老的版本缺省在/var/log/cassandra 和 /var/lib/cassandra 下。
配置Cassandra
如果是单节点允许,则无需配置。如果是要配置集群或者客户端和node不在一个机器上,则需要做一些配置。
主运行配置
大部分的配置可以通过cassandra.yaml文件中的属性来设置。
- cluster_name: 集群名
- seeds: 集群种子,由逗号","分开的一列ip地址。
- storage_port: 无需改变,只需保证端口没有被防火墙阻止。
- listen_address: 节点的ip地址, 这个地址允许其他节点跟这个节点通信,所以要设置好。可选地,可以设置listen_interface 来告诉Cassandra 使用哪个interface。 listen_address和listen_interface只允许设置一个,而不是两个都设置。
- native_transport_port: 连接storage_port, 保证这个端口没有被防火墙阻止,因为客户端要通过这个端口和Cassandra通信。
改变目录位置
- data_file_directories: 数据文件所在的目录,可以是一个目录或多个目录。
- commitlog_directory: commitlog文件所在的目录。
- saved_caches_directory: 保存的缓存内容所在目录。
- hints_directory: hints所在目录。
考虑性能原因,如果使用多个磁盘,最好把commitlog 和 data 文件放在不同的磁盘。
环境变量
JVM-level的参数设置,比如 heap size 可以在cassandra-env.sh中设置。可以添加额外的JVM命令行参数到JVM_OPTS环境变量; 当Cassandra启动,这些参数将会传递给JVM。
Logging
使用的logger是logbook,可以通过编辑logback.xml,改变日志设置。缺省情况下,INFO level日志,保存在system.log中,debug level保存在debug.log中。当前台运行时,INFO level日志也会在控制台打印。
插入和查询操作
Cassandra的API是CQL(the Cassandra Query Language)。要使用CQL, 必须连接到集群,这可以通过:
- 使用cqlsh
- 或通过Cassandra的client driver
1. CQLSH
cqlsh是一个命令行的shell,通过CQL与Cassandra交互。
如通过以下命令:
bin/cqlsh localhost
可以查看cqlsh,了解全部文档。
以下是示例:
$ bin/cqlsh localhost
Connected to Test Cluster at localhost:9042.
[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
cqlsh> SELECT cluster_name, listen_address FROM system.local;
cluster_name | listen_address
--------------+----------------
Test Cluster | 127.0.0.1
(1 rows)
cqlsh>
2. Client drivers
通过Client drivers查看支持的语言驱动。
1)Datastax Java Driver for Apache Cassandra
- Maven依赖:
驱动的Maven依赖:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>3.1.0</version>
</dependency>
object mapper的Maven依赖:
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-mapping</artifactId>
<version>3.1.0</version>
</dependency>
2)Datastax Python Driver for Apache Cassandra
- 安装客户端驱动:
pip install cassandra-driver
- 验证安装:
python -c 'import cassandra; print cassandra.__version__'
- 测试正常连接
from cassandra.cluster import Cluster
cluster = Cluster()
session = cluster.connect()
rows = session.execute("SELECT cluster_name, listen_address FROM system.local")
for row in rows:
print(row.cluster_name, row.listen_address)
参考
Cassandra快速指导
Cassandra的Java Driver
Cassandra的Python Driver
Python Driver的安装
python-driver使用简介