写爬虫半年多了, 一直在用MongoDB, 从各方面来说还可以,也没遇到什么瓶颈(可能数据量有限),现在又看到cassandra,对这个数据库又产生了兴趣,准备用它来替代HDFS作为spark的数据存储。接下来看看我们搭建的环境。
搭建环境需求
三台机器如下:
Ubuntu 16.04.2 LTS Microsoft Windows [版本 6.1.7601] Microsoft Windows [版本 6.1.7601]
- 安装java
这里需要jdk1.8以上,具体我就不介绍了,在我的另一篇文章中也介绍过,查看请点击此处,每台机器都需要安装。 - cassandra安装包
我下载的是3.11.0版本,下载地址点这里
安装过程
先要确保你的java安装完成
windows:
C:\Users\Administrator>java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
C:\Users\Administrator>
Ubuntu:
ideal@shulaibao3:~$ java -version
java version "1.8.0_131"
Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)
ideal@shulaibao3:~$
如果每台机器都没有问题,那就将下载好的cassandra解压,如果没下载好请先下载
ubuntu下载:
ideal@shulaibao3:~$ wget http://mirror.bit.edu.cn/apache/cassandra/3.11.0/apache-cassandra-3.11.0-bin.tar.gz
下载完成后利用tar来解压,
ideal@shulaibao3:~$ tar -zxvf apache-cassandra-3.11.0-bin.tar.gz
等解压完成后,就将解压后的文件scp到其他两台机器上,我们以ubuntu来做讲解,接着我们将文件移动到指定位置,
ideal@shulaibao3:~$ sudo mv apache-cassandra-3.11.0 /usr/lib/cassandra
然后来配置下cassandra的环境变量, 在/etc/profile 中添加如下配置
export PATH=/usr/lib/cassandra/bin:$PATH
然后利用source /etc/profile 重新加载下配置文件;这个时候你可以在命令行下执行cassandra,一个单机版的cassandra数据库就可以使用了,而我们需要搭建集群,所以要做配置,我们到
cassandra文件根目录下来配置conf文件中的cassandra.yaml和logback.xml
在cassandra.yaml文件中我们需要修改以下几项:
data_file_directories:
- /data1/cassandra/data # 数据目录
commitlog_directory: /data1/cassandra/commitlog # 操作的记录
saved_caches_directory: /data1/cassandra/saved_caches
seed_provider:
# Addresses of hosts that are deemed contact points.
# Cassandra nodes use this list of hosts to find each other and learn
# the topology of the ring. You must change this if you are running
# multiple nodes!
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
# seeds is actually a comma-delimited list of addresses.
# Ex: "<ip1>,<ip2>,<ip3>"
- seeds: "shulaibao3,shulaibao4,shulaibao5" # 配置种子
listen_address: shulaibao3 # 本机ip
而在logback.xml中只需要将{cassandra.logdir}
修改为你指定的目录即可, 我这里选择了默认。
以上配置是修改之后的,你要确保创建了刚才我们配置项中所指定的目录,否则会报错,其他两台机器也按照这样的方式去配置,大致基本都相同,只需要将listen_address修改为本机ip或主机名即可。
接下来我们启动我们的集群: windows 中执行bin文件下的cassandra.bat即可,ubuntu 中直接在命令行下输入cassandra后回车即可。当我们看到如下输出即可证明单台机器启动成功
INFO [main] 2017-08-13 16:18:28,493 CassandraDaemon.java:527 - Not starting RPC
server as requested. Use JMX (StorageService->startRPCServer()) or nodetool (en
ablethrift) to start it
如果出现错误,查看system.log便可找到错误,一般都是路径配置问题和拼写错误,也有可能是java版本和防火墙的问题。
接着我们使用 nodetool来查看集群个机器的状态
ideal@shulaibao3:~$ nodetool status
Datacenter: datacenter1
=======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN shulaibao3 193.64 KiB 256 72.4% 0d5679ee-850e-4d1b-9000-1b117008ed41 rack1
UN shulaibao4 307.73 KiB 256 65.4% 4e626117-6523-44fb-8d13-a418590e8223 rack1
DN shulaibao5 89.42 KiB 256 62.2% 07850548-e333-4cd3-963c-56de56de8b8b rack1
可以看到集群正常运行,有两台机器在线,一台机器宕机(UN是在线, DN是宕机),我们也可以使用nodetool -h localhost ring
来查看集群的状态。我们打开cassandra的shell,这里使用cqlsh
,你必须安装python才可以使用
ideal@shulaibao3:~$ cqlsh
Connected to Andy Cluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 3.11.0 | CQL spec 3.4.4 | Native protocol v4]
Use HELP for help.
cqlsh> CREATE KEYSPACE mykeyspace WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 3 }; # 创建键空间
cqlsh> use mykeyspace ;
cqlsh:mykeyspace> CREATE TABLE users (
... user_id int PRIMARY KEY,
... fname text,
... lname text
... ); # 建表语句
cqlsh:mykeyspace> INSERT INTO users (user_id, fname, lname) VALUES (1, 'andy', 'asd');
cqlsh:mykeyspace> INSERT INTO users (user_id, fname, lname) VALUES (2, 'larry', 'asd');
cqlsh:mykeyspace> INSERT INTO users (user_id, fname, lname) VALUES (3, 'john', 'sdfsd'); # 插入数据
cqlsh:mykeyspace> SELECT * FROM users; # 查询所有数据
user_id | fname | lname
---------+-------+-------
1 | andy | asd
2 | larry | asd
3 | john | sdfsd
cqlsh:mykeyspace> CREATE INDEX ON users (lname); # 创建索引
cqlsh:mykeyspace> SELECT * FROM users WHERE lname = 'asd'; # 根据索引查询
user_id | fname | lname
---------+--------+-------
1 | andy | asd
2 | larry | asd
cqlsh:mykeyspace> exit # 退出
ideal@shulaibao3:~$
集群已搭建完成,有不对之处请指正,我这只是一个笔记而已。