Cassandra

对于小白来说,配置安装开源软件是一个繁琐且绝望的过程,在这里强势表白StackOverFlow,我在配置过程中遇到的很多个buggggggggg都是在上面找到fix方案的(其实也不能算bug,应该算是踩过的坑吧emm

本地安装Cassandra

踩到的坑:

(1)Cassandra现行版本不能适配jdk9 需要jdk8往下,但是要jdk7往上 emm

(2)Cassandra3.9 版本不能适配jdk8,会抛异常Exception (java.lang.AbstractMethodError) encountered during startup: org.apache.cassandra.utils.JMXServerUtils$Exporter.exportObject(Ljava/rmi/Remote;ILjava/rmi/server/RMIClientSocketFactory;Ljava/rmi/server/RMIServerSocketFactory;Lsun/misc/ObjectInputFilter;)Ljava/rmi/Remote

具体原因在StackOverFlow上:https://stackoverflow.com/questions/48328661/cant-start-cassandra-after-os-patch-up

(3)改来改去,我用了Cassandra-3.11.2

Cassandra本地安装使用其实挺方便的,具体步骤

(1)从官网下载到本地:http://www.apache.org/dyn/closer.lua/cassandra/3.11.2/apache-cassandra-3.11.2-bin.tar.gz

(2)解压以后不用过多配置,都可以用默认的,然后运行bin/cassandra -f

-f的意思是让cassandra的运行在前台显示而不是去后台运行,大概出现如下表明运行成功


(3).bin/cqlsh  就可以直接在控制台里输入cql语句建表啦


Cassandra需要适配合适的jdk版本,我的mac上之前update了jdk9,不能很好适配,所以需要更换jdk版本

那么问题来了,如何更换jdk版本呢?

(1)进入bash_profile修改环境变量

vim ~/.bash_profile

(2)设置jdk版本,在.bash_profile里添加如下语句

export JAVA_7_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home

export JAVA_8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_102.jdk/Contents/Home

export JAVA_HOME=$JAVA_8_HOME

(3)alias命令切换jdk版本,在.bash_profile里添加如下语句

alias jdk8='export JAVA_HOME=$JAVA_8_HOME'

alias jdk7='export JAVA_HOME=$JAVA_7_HOME'

(4)修改完成后保存退出

(5)重新执行.bash_profile文件,让配置生效

source ~/.bash_profile

(6)直接使用命令jdk7 或者命令 jdk8就可以自由切换jdk版本


NOSQL 需求

(1)高并发读写的性能需求(High Performance)

(2)高容量和高效的存储需求(Huge S头rage)

(3)高扩展性和高可用性需求

传统关系型数据库的两大瓶颈:

(1)数据横向扩展能力低下:

a.受业务规则影响,需求变动导致分库分表的维护复杂

b.系统数据访问层代码需要修改

c. master-slave架构中,slave节点实时性保证问题,对于实时性很高的场合需要做一些处理

d. 高可用性问题,master-slave架构中,所有的数据处理通过master进行分配,如果master出现故障,容易出现单点故障导致整个系统崩溃

(2)数据的高效率存储和访问的需求满足能力低

a. 存储记录数量有限,横向可扩展能力有限,纵向数据可承受能力也是有限的

b. 对于大数据的查询,SQL查询效率极低,在数据量达到一定程度,查询时间会呈指数级别增长

NO-SQL 优势:

(1)易扩展,NO-SQL为NOT ONLY SQL,意为去掉或者减弱数据之间的关系

(2)灵活的数据模型,NO-SQL无需提前为需要存储的模型建立字段,随时存储自定义的数据格式

(3)高可用:数据库之间可以较快复制

(4)大数据量,高性能:具有很高的读写性能

NO-SQL分类:

(1)键值存储(key-value stores) 

比如 redis,存储会话信息,用户配置信息等

(2)面向表(Table-oriented)

BigTable/Cassandra/HBase 适合事件记录/博客平台记录等

(3)面向文本(Document-oriented)

MongoDB

(4)面向图(Graph-oriented)

Neo4J 


Cassandra优势:

Cassandra由一堆数据库节点共同构成的一个分布式网络服务

对Cassandra写操作,会被复制到其他网络节点

对Cassandra读操作,会被路由到某个节点上去读取

Cassandra集群扩展性能简单

(1)高度可扩展性,纯粹意义上的水平扩展,支持动态增加节点

(2)高度可用性,P2P去中心化处理

(3)NO-SQL列族实现

(4)非常高的写入吞吐量和良好的读取吞吐量

(5)支持CQL查询语言,支持范围查询

(6)可调节的一致性

(8)灵活模式


Cassandra的应用场景:

(1)待处理的数据量很大

(2)数据量超过关系型数据库的承载能力

(3)大量集群

你可能感兴趣的:(Cassandra)