cassandra 集群搭建

写爬虫半年多了, 一直在用MongoDB, 从各方面来说还可以,也没遇到什么瓶颈(可能数据量有限),现在又看到cassandra,对这个数据库又产生了兴趣,准备用它来替代HDFS作为spark的数据存储。接下来看看我们搭建的环境。

搭建环境需求

  1. 三台机器如下:

    Ubuntu 16.04.2 LTS
    Microsoft Windows [版本 6.1.7601]
    Microsoft Windows [版本 6.1.7601]
    
  2. 安装java
    这里需要jdk1.8以上,具体我就不介绍了,在我的另一篇文章中也介绍过,查看请点击此处,每台机器都需要安装。
  3. 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:~$ 

集群已搭建完成,有不对之处请指正,我这只是一个笔记而已。

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值