不多说,直接上干货!
最近我开始在windows环境中使用Cassandra,虽然在Cassandra站点的安装命令非常清楚和精简,我仍然在环境配置上遇到一些问题。所以我想为后来者分享下我的经验。
官网下载地址
http://cassandra.apache.org/
http://cassandra.apache.org/download/
http://www.apache.org/dyn/closer.lua/cassandra/3.11.1/apache-cassandra-3.11.1-bin.tar.gz
windows环境里下载且安装配置Cassandra(最新的3.11.1版本)
第一步:安装JDK8.0以上的JDK版本,配置好相关的环境变量。8.0以下的JDK将无法正常启动Cassandra服务,造成不必要的麻烦。
第二步:安装python2.7版本或以上的版本用于启动cqlsh的shell命令
第三步 : 在Cassandra官网上下载最新的Cassandra版本,本文使用的是apache-cassandra-3.11.1,解压到你想要的目录。在环境变量中设置CASSANDRA_HOME为你的Cassandra安装目录。
第四步:修改cassandra.yaml文件中的配置参数。
我这里是放在D:\SoftWare下
接下来,对windows里的环境变量设置
接下来是,修改cassandra里的conf目录下配置文件
data_file_directories:
- D:\SoftWare\apache-cassandra-3.11.\data
修改为
commitlog_directory: D:\SoftWare\apache-cassandra-3.11.\commitlog
saved_caches_directory: D:\SoftWare\apache-cassandra-3.11.\saved_caches
双击bin目录下的cassandra.bat启动cassandra服务
出现下面的图后表示服务启动成功了,记住,这个cmd的窗口不要关闭,关闭了好像服务就被一起关闭了,接下来客端的连接好像就不行了。
启动之后, 现在你需要cqlsh来与Cassandra数据库交互。这里会稍微有点曲折,因为它在cassandra下载的包中。因此在我们插入数据到cassandra中还需要做点变通
(1)从http://www.python.org/download/releases/ 下载Python包。这里需注意一点。虽然python最新的版本是3x, 但是在这个版本上我们无法安装thrift库。 所以下载并 安装python2.7版本。
(2)从http://pypi.python.org/pypi/thrift下载Thrift库。 通过执行以下命令安装thrift模块。python setup.py install
Step 4: 现在你可以安装cql模块,这个模块可以下你的cassandra下载包中找到。setup.py存在与 cassandra_home\pylib 中。 再次执行以下命令:python setup.py install
Step 5: 执行命令 python cqlsh localhost 9160,(9160是端口,你需要改成你自己的sassandra端口), 然后可以启动cql命令工具。
以下是执行的example:
CREATE KEYSPACE mykeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 };
CREATE TABLE users (user_id int PRIMARY KEY, fname text, lname text);
INSERT INTO users (user_id, fname, lname) VALUES (1745, 'john', 'smith');
INSERT INTO users (user_id, fname, lname) VALUES (1744, 'john', 'doe');
INSERT INTO users (user_id, fname, lname) VALUES (1746, 'john', 'smith');
首先我将根据官方文档,向你介绍conf目录下cassandra.yaml这个配置文件中几个重要的参数,无论是搭建集群环境,还是未来使用cqlsh的shell命令,这些参数都显得十分重要:
cluster_name:集群名称,通常用于防止一个逻辑集群中的机器加入其他的集群,具有唯一标识性。 默认值:Test Cluster。
我的建议:在生产环境不要使用默认的集群名,以免未来在扩展多数据中心,多集群时引起命名冲突,造成不必要的麻烦。此外,在启动服务前提前修改好此参数,否则服务一旦启动,将围绕此集群名建立一系列的系统表,到时想更换集群名字只能删除所有系统表,很麻烦。seed_provider:-parameters:-seeds:集群中的种子节点,被视为联系不同节点的主机地址。节点通过该列表的主机来找到对方,并学习集群环中的拓扑结构,通过Gossip相互沟通。
我的建议:种子实际上是一个逗号分隔的地址列表。如果你想要设置多个种子节点,你应该遵循这样的格式:Ex: “ip1,ip2,ip3”,在此处我填写 seeds:192.168.30.101。我仅设置一台主机。listen_address: 通常用于通知其他节点通过此ip地址连接到你这台机器节点。
我的建议:不要将监听地址设置为0.0.0.0,这样做通常是错误,而是设置成具体的本机ip,如此处我设置为 listen_address: 192.168.30.101。rpc_address: 此ip地址将绑定 Thrift RPC 服务,本地的传输服务也将使用此ip。
我的建议: 不要将监听地址设置为0.0.0.0或者localhost,这样做通常是错误,而是设置成具体的本机ip,如此处我设置为 rpc_address: 192.168.30.101。data_file_directories: Cassandra通常在该磁盘目录下存储数据,进行均匀地分布数据, 这取决于你配置的压缩策略。
我的建议: 你可以设置成你想要的任何目录地址,但是我建议你采用默认的方式,Cassandra将自动加载到如下目录$CASSANDRA_HOME/data/data,方便管理。commitlog_directory: 日志存放目录,通常用于记录写入数据的日志,当发生意外无法写入到SSTable时,可以使用commitlog恢复数据,防止丢失。
我的建议:你可以设置成你想要的任何目录地址,但是我建议你采用默认的方式,Cassandra将自动加载到如下目录$CASSANDRA_HOME/data/commitlog,方便管理。saved_caches_directory: 缓存地址
我的建议: 你可以设置成你想要的任何目录地址,但是我建议你采用默认的方式,Cassandra将自动加载到如下目录$CASSANDRA_HOME/data/saved_caches,方便管理。logback.xml: 通常用于系统日志输出的地址配置。
我的建议: 你可以设置成你想要的任何目录地址,但是我建议你采用默认的方式,Cassandra将自动加载到如下目录$CASSANDRA_HOME/logs目录下,方便管理。