一、Cassandra 介绍
Cassandra简短介绍: Apache Cassandra是一个开源的分布式数据库,它具有高可用、弹性可伸缩、强容错、可调节的一致性等特点。Cassandra 基于Amazon'Dynamo 的分布式架构设计以及它的数据模型是基于Google的Bigtable进行开发。现在被广泛应用于web站点。
二、Cassandra安装
安装的话一般分2种:1.下载可执行的安装包;2.源码编译;第一种我们先不用介绍,直接从下载页面下载需要的可执行文件即可;我们主要来介绍源码编译得到我们需要的过程,这里以最新release版本进行演示,在进行源码编译安装前本机上面需要执行一些预操作包括:jdk安装,这里建议jdk1.8以及以上的版本进行安装,安装可以参考相关谷歌文档进行;ant 安装,因为cassandra使用ant编译工具;作者的jdk 以及ant的版本信息如下:
➜ cassandra git:(3.11) java -version
java version "1.8.0_144"
Java(TM) SE Runtime Environment (build 1.8.0_144-b01)
Java HotSpot(TM) 64-Bit Server VM (build 25.144-b01, mixed mode)
➜ cassandra git:(3.11) ant -version
Apache Ant(TM) version 1.10.1 compiled on February 2 2017
上面的预先准备完成以后,那么我们开始执行正确的源码编译安装:
2.1.源码编译流程
-
从github 下载对应的源码:git clone https://github.com/apache/cassandra.git
-
切换到release的分支:git checkout -b 3.11 origin/cassandra-3.11
-
cd 到cassandra的目录下面,在这个目录下面一定要有一个build.xml 这个类似的文件,因为cassandra使用ant 做编译软件,该文件不可缺少;
-
编译&打包为可执行的文件: ant clean build release
我们在build 目录下面可以看到如下的一些内容:
build git:(3.11) ✗ ls
apache-cassandra-3.11.3-SNAPSHOT-bin.rat.txt apache-cassandra-thrift-3.11.3- SNAPSHOT.pom
apache-cassandra-3.11.3-SNAPSHOT-bin.tar.gz build-dependencies-sources.xml
apache-cassandra-3.11.3-SNAPSHOT-bin.tar.gz.md5 build-dependencies.xml
apache-cassandra-3.11.3-SNAPSHOT-bin.tar.gz.sha classes
apache-cassandra-3.11.3-SNAPSHOT-dist.pom dist
apache-cassandra-3.11.3-SNAPSHOT-parent.pom ecj
apache-cassandra-3.11.3-SNAPSHOT-src.rat.txt jacoco
apache-cassandra-3.11.3-SNAPSHOT-src.tar.gz javadoc
apache-cassandra-3.11.3-SNAPSHOT-src.tar.gz.md5 lib
apache-cassandra-3.11.3-SNAPSHOT-src.tar.gz.sha maven-ant-tasks-2.1.3.jar
apache-cassandra-3.11.3-SNAPSHOT.jar test
apache-cassandra-3.11.3-SNAPSHOT.pom tools
apache-cassandra-thrift-3.11.3-SNAPSHOT.jar
这些就是我们打编译打出来的release包;当然这里version给的是snapshot版本,我们可以基于实际情况在build.xml里面进行修改
-
我们选择上面5种build目录下的apache-cassandra-3.11.3-SNAPSHOT-bin.tar.gz 作为我们的安装版本
-
到第这一步和第一种所说的下载可执行包的结果就一样了,那么我们可以做的事情就是,解压编译得到的tar包(下载的可执行包)
cd到解压的包里面,然后主要有下面几类文件夹:
➜ apache-cassandra-3.11.3-SNAPSHOT git:(3.11) ✗ ll|grep dr |awk '{print $NF}'|tr -s '\n' ' '
bin conf doc interface javadoc lib pylib tools
分别介绍下这几个文件夹的意义:
bin
这个目录包括了很多可执行的文件,包括执行query语言的shell(cqlsh)客户端,以及命令行接口(CLI)的客户端,nodetool脚本(nodetool脚本是一个用于观测集群状态以及进行集群级别操作的工具脚本)此外还包含了一些用于在SSTable上面进行操作的脚本文件,比如:列出sstable包含的key的功能可执行文件(sstablekeys),大量读取以及恢复sstable内容的可执行文件(sstableloader)以及把cassandra的SSTable进行版本更新的可执行文件(sstableupgrade)。
conf
这个目录包含了cassandra实列的一些配置文件。那么久要求这个配置文件包含:cassandra.yaml(这个是cassandra可以运行的最主要的配置文件)、logback.xml(这个文件可以配置cassandra的打log的一些信息)、一些附加的可以选择性的做配置,比如可以使用配置修改网络拓扑结构(network topology)、trigger等;
interface
这个文件夹只包含了cassandra.thrift这个文件,这个文件基于thrift协议定义了一个RPC的接口。我们可以使用这个接口文件开发出多语言的接口。但是这个thrift接口后续不会支持,在4.0就直接被删除。
javadoc
这个文件夹里面主要是web化的一些cassandra的java api的展示;
lib
包含cassandra实列需要运行的一些lib 包;
pylib
包含cassandra的实列运行的时候cqlsh能够运行的python包;
tools
一些工具,包含了cassandra的压测工具,cassandra-stress等;
2.2.启动cassandra实列
分别介绍下在Linux/Mac os 以及windows上如何启动cassandra的实列:
windows
windows环境下你遵循如下操作即可:
-
设置下JAVA_HOME,设置方式可以参考百度、谷歌
-
设置下我们的CASSANDRA_HOME,在环境变量里设置下;
-
默认情况下数据存储目录,cache目录,log目录这里使用默认的,也就是在CASSANDRA_HOME
目录下面会有data(存放数据),logs(存放生成的log)
完成上述操作,我们后续启动下进程,启动相关参考后续和Linux一样的操作
Linux/Mac os
在Linux环境下 设置完成JAVA_HOME以后,直接cd 到解压的tar包目录下面的bin目录下;
在这个目录下会有cassandra这个可执行文件,为了让我们的运行足够的简单,在Linux环境下,我们自己可以编写一个start脚本,命名为start-server.sh,脚本的内容是:
nohup ./cassandra -f > log 2>&1 &
然后直接在bin 目录下面运行 sh start-server.sh 即可启动该机器的cassandra进程。当然在start-server.sh 脚本里面我们可以做其他操作比如预调整进程的nice值等;
验证成功启动
我们可以通过jps 或者ps ef |grep cassandra 查看是否启动进程,或者netstat 查找9042端口是否处于listen状态来判断是否成功启动;
停止进程
bin目录下面有stop-server 可以处理这件事
执行cql验证
在bin目录下面可以执行cassandra-cli(3.0版本前)或者是cqlsh脚本进而输入胡cql语句直接访问数据库
但是如果需要通过cqlsh 运行cql语句的话,需要本机安装python2.7以及以上版本。
后续接下来的文章会系统介绍cassandra软件的配置、调优、使用、监控搭建、生产环境下的部署、cql的使用以及语句模型、到深入的代码研究和分析等一系列的文章,敬请期待。
网友评论