前言

cassandra是一种NoSQL数据库,No是指No Relational。cassandra的数据模型结合了Dynamo的key/value和BigTable  的面向列的特点,主要被设计为存储大规模的分布式数据。

高可靠性:gossip座位通信协议,节点同等地位,无主从之分.(hbase是master/slaver,单点失效的可能)  p2p 去中心化

高可扩展:级联可扩展,添加新节点操作简单

最终一致性:cap定律

高效写操作,  读取指定键值的记录较快, 但范围查询,与多个节点有关会慢,  读取全表也慢

cql语言,与sql语句相似度高

https://my.oschina.net/silentriver/blog/182678  Cassandra – 理解关键概念和数据模型

1.官网情况

http://cassandra.apache.org/

"Manage massive amounts of data, fast, without losing sleep"

目前版本 3.9 (pgpmd5 and sha1), released on 2016-09-29.

线性扩展(Linear scalability)

每个节点identical.

2.安装Cassandra

我的机器是windows10

下载  apache-cassandra-3.9-bin.tar.gz  后解压

添加系统变量 : CASSANDRA_HOME

然后添加path环境变量为%CASSANDRA_HOME%\bin

windows 就可以输入 cassandra  回车启动了

Linux

    启动 bin/cassandra -f    关闭Control-C

    或者    bin/cassandra       关闭 kill pid or pkill -f CassandraDaemon      查找进程 pgrep -f CassandraDaemon

查看状态

bin/nodetool status

    3.配置集群

如果只是单点,则上面的配置就ok了,但如果要部署集群,则需要另外配置.

cassandra.yaml   

最基本的参数

  • cluster_name: the name of your cluster.
  • seeds: 以逗号分隔的集群种子IP地址. 当一个节点启动的时候,它会从配置文件中读取配置信息,这样它就知道它属于哪个集群,它需要跟哪个节点通信以获取其他节点信息(这个通信节点称为种子节点)。这些信息是必须在每个节点的cassandra.yaml里配置的。
  • storage_port: 非必须改变,除非此端口被防火墙墙了.整个集群内部要相同
  • listen_address: 本节点的IP, 因为要与其他节点通讯,所以这个参数设置正确非常重要.   或者,可以设置listen_interface告诉Cassandra which interface to use. Set only one, not both.
  • native_transport_port: 客户端与Cassandra通讯的端口,保证不被墙.

更改目录位置

  • data_file_directories: one or more directories where data files are located.
  • commitlog_directory: the directory where commitlog files are located.
  • saved_caches_directory: the directory where saved caches are located.
  • hints_directory: the directory where hints are located.

环境变量 cassandra-env.sh

  • JVM_OPTS:Cassandra启动时候会把这个参数传递给JVM,所以额外的JVM命令行参数可以在这里设置

日志

logback.xml

3. CQLSH的使用

前期准备,需要python运行环境, python版本用2.7  不要用更高的版本

$ bin/cqlsh localhost
Connected to Test Cluster at localhost:9042.
[cqlsh 5.0.1 | Cassandra 3.8 | CQL spec 3.4.2 | Native protocol v4]
Use HELP for help.
cqlsh> SELECT cluster_name, listen_address FROM system.local; cluster_name | listen_address
--------------+----------------
Test Cluster | 127.0.0.1 (1 rows)
cqlsh>

步骤一,create a keyspace

CREATE KEYSPACE devJavaSource WITH REPLICATION={'class': 'SimpleStrategy','replication_factor': };

tip:可能运行失败,报错 OperationTimedOut: errors={'127.0.0.1': 'Client request timeout. See Session.execute[_async](timeout)'}, last_host=127.0.0.1

修改 cqlsh.py 文件的参数DEFAULT_REQUEST_TIMEOUT_SECONDS 为更大的值可以解决(修改后重启cassandra), 然而我也不知道具体原因.

步骤二, use created keyspace

USE devJavaSource;

步骤三, 新建表 插入数据  查询

CREATE TABLE USERS (ID int PRIMARY KEY,NAME text,ADDRESS text);
INSERT INTO USERS (ID, NAME, ADDRESS) VALUES (, ‘john’, ‘Oakland’);

INSERT INTO USERS (ID, NAME, ADDRESS) VALUES (, ‘smith’, ‘California’);

INSERT INTO USERS (ID, NAME, ADDRESS) VALUES (, ‘Joe’, ‘Nederland’);
 SELECT * FROM USERS;

步骤四,建立索引

CREATE CUSTOM INDEX index_name ON keyspace_name.table_name ( column_name )
(USING class_name) (WITH OPTIONS = map)
cqlsh:devjavasource> create index on users(name);

    4.节点之间的交互 gossip

节点独立,对等

最终一致性原理

gossip协议来发现集群种其他节点的位置和状态信息

peer-to-peer,定期交换状态信息

节点启动  ------------------>从cassandra.yaml得到集群名称,以及种子节点列表(因此每个节点的种子节点列表必须相同)

选派谁做种子节点没什么特别的意义,仅仅在于新节点加入到集群中时走gossip流程时有用,所以它们没什么特权

Gossiper(进程)通过每个节点的心跳来感知节点是否存活,  可以根据网络状况设置灵敏度参数phi_convict_threshold

 

Cassandra 介绍的更多相关文章

  1. Cassandra介绍

    Cassandra介绍 Apache Cassandra 是一个开源的.分布式.无中心.弹性可扩展.高可用.容错.一致性可调.面向列的数据库.它基于Amazon Dynamo的分布式设计 Cassan ...

  2. NOSQL之Redis、MongDB、Habase、Cassandra的介绍与比较

    一.Redis介绍     1.1Redis优点 (1)Redis拥有非常丰富的数据结构: (2)Redis提供事务的功能,可以保证一串命令的原子性,中间不会被任何打断. (3)数据存储在内存中,读写 ...

  3. Cassandra 数据模型 (基于CQL,解决胖列数量限制及灵活性问题)(1.1及以上版本)

    文中主要交代Cassandra的编程模型及数据结构. 由于Cassandra版本数次更新,网上中文的资料已经有点过时,比较有代表性的比如ebuy那篇文章都已经过时了,于是自己找资料,结合官方博客写一篇 ...

  4. 转】R利剑NoSQL系列文章 之 Cassandra

    原博文出自于: http://blog.fens.me/category/%E6%95%B0%E6%8D%AE%E5%BA%93/page/3/ 感谢! R利剑NoSQL系列文章 之 Cassandr ...

  5. PySpark SQL 相关知识介绍

    title: PySpark SQL 相关知识介绍 summary: 关键词:大数据 Hadoop Hive Pig Kafka Spark PySpark SQL 集群管理器 PostgreSQL ...

  6. 15个nosql数据库

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存储解决方案.当数据量达到50GB以上 ...

  7. 15个nosql

    1.MongoDB 介绍 MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.主要解决的是海量数据的访问效率问题,为WEB应用提供可扩展的高性能数据存 储解决方案.当数据量达到50GB以 ...

  8. 15一个NoSql数据库

    随着因特网web2.0该网站的兴起.非关系型数据库,现在已经成为一个非常受欢迎的新领域.非关系数据库产品的发展非常迅速.而在处理传统的关系数据库web2.0现场.特别是大规模,高并发SNS类型web2 ...

  9. 《大数据日知录》读书笔记-ch3大数据常用的算法与数据结构

    布隆过滤器(bloom filter,BF): 二进制向量数据结构,时空效率很好,尤其是空间效率极高.作用:检测某个元素在某个巨量集合中存在. 构造: 查询: 不会发生漏判(false negativ ...

随机推荐

  1. 关于mongoDB的思考和nodeJS执行windows系统命令

    P1:在cnodejs.org上面看到有人问这个问题: 然后对此产生思考,第一句db.artile.find('uid':id) 然后问后台是否是这样查询,后台告诉我不是,这种写法就是违背非关系型数据 ...

  2. MySQL使用正则表达式比较字段中的数字

    今天遇到一个问题,需要对表中的一个类json字段的内容进行筛选,而筛选的条件是值要大于某个值.因为值的位数并不确定,考虑使用正则表达式进行筛选. 字段格式 类json的key-value字段,示例如下 ...

  3. Java设计模式(二) 工厂方法模式

    本文介绍了工厂方法模式的概念,优缺点,实现方式,UML类图,并介绍了工厂方法(未)遵循的OOP原则 原创文章.同步自作者个人博客 http://www.jasongj.com/design_patte ...

  4. SQL server2008-对象资源管理器

    对象资源管理器:数据库 .安全性.服务器对象.复制.管理 .SQL server代理 六部分组成

  5. web安全之sql注入报错型注入

    前提: echo mysql_error(),输出错误信息. 熟悉的函数: floor()向下取整 concat()返回的字符串参数连接的结果 count()函数返回匹配指定条件的行数 rand()函 ...

  6. 详解java方法的重载

    1.方法的重载: 方法名相同,参数列表不同就叫做方法的重载.

  7. IOS 网络请求

    技术交流新QQ群:414971585 关于网络请求的重要性我想不用多说了吧.对于移动客户端来说,网络的重要性不言而喻.常见的网络请求有同步GET, 同步POST, 异步GET, 异步POST.今天来看 ...

  8. odoo server命令行以及配置文件

    odoo server 启动时 def main(args): check_root_user() odoo.tools.config.parse_config(args) check_postgre ...

  9. VMvare克隆复制多个操作系统

    目的:完成linux的双机和集群实验 2016-12-06 在网上查找了一些资料现整理如下,以供之后查看和帮助他人. 注意事项: 1.关闭源虚拟机的电源: 操作很简单 选择完整创建 输入源克隆机的用户 ...

  10. 缓存,socket乱码等

    在服务端默认的编码情况下,JAVA的SOCKET接收需要GBK编码,而C#的接收需要UTF-8编码