- 浏览: 370292 次
- 性别:
- 来自: 北京
最新评论
-
记忆无泪:
遇到这个问题我用的sed -i 's/\r$//' /mnt/ ...
CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法 -
alenstudent:
Windows 下Nexus搭建Maven私服 -
dandongsoft:
lucene3+IK分词器 改造 lucene2.x+paoding -
duanyanrui:
学习了,支持
Google-Gson -
yscyfy:
这是你直接翻译过来的???
Google-Gson
文章列表
前提cassandra的根据分区key的操作是很快的,这也是它的优势,但是它的多条件查询是很弱的,特别是如果你有删除操作的话,就更坑爹了。cassandra的删除操作,实际上并不是真的删除,它是执行的插入操作,插入的数据叫做tombs ...
有关cassandra的存储引擎
- 博客分类:
- cassandra
Cassandra使用一个类似于日志结构的结合树(Log-Structured Merge Tree)的存储结构,不像传统关系数据库那样使用B-Tree。 Cassandra会避免在写之前去读。
“写前读”(Read-before-write), 特别是在一个大的分布式系统里,会对读性能产生影响,还会带来其它问题,比如,两个客户端同时去读,其中一个去更新该行的A列,另外一个去更新该行的B列,就可能把对A列的更新覆盖掉。“写前读”,也会破坏cache,增加IO。
为了避免“写前读”的情况,cassandra的存储引擎会对即将要进行的插入、更新进行整理,只会按顺序,以追加的模式仅写入这一行更 ...
在低流量的间隔,防火墙的设置会把长时间闲置的链接关闭,导致本地节点和其它datacenter的节点之间失去联系。链接闲置超时时间一般被网络管理员设置为60分钟。
所以Cassandra在创建双中心的时候,中间传输数据会经常超时,如果你不设置系统的keepalive的话。
配置系统的keepalive,首先通过
sysctl -A | grep net.ipv4
查看系统内核参数:
net.ipv4.tcp_keepalive_time:链接闲置多久之后开始探测链接(秒),也可以理解为keepalive发送第一个请求的间隔时间。
Cassandra一个节点的磁盘坏了,分两种情况,一种是节点还可以正常启动。另外一种是节点无法启动。
第一种情况:节点还可以正常启动
1、把坏的盘换掉,如果你没有新的盘去更换,你可以在cassandra.yaml里直接把坏的盘注释掉
2、启动cassandra,如果启动的过程中报错,说找不到keyspace之类的,那你应该使用第二种情况的解决方案。
3、使用nodetool repair修复该节点丢失的数据。
第二种情况:节点无法正常启动
cassandra的写过程
- 博客分类:
- cassandra
Cassandra的写操作包含几个过程。从开始实时写日志到最后进行压缩。
1、把数据写入commit log2、数据写入内存表memtable3、从memtable中刷新4、存储到磁盘中的sstables里5、压缩
写日志和memtable存储
当有一个写入发生,cassandra会把数据存到内存里叫memtable的数据结构里,也会写到磁盘的commitlog里,提供持久化存储。commitlog接受每个请求,并且持久化保存,甚至是断电。memtable是一种回写cache,cassandra通过key可以在memtbale里查询数据。memtable的大小是有限制的,当到达一个限制 ...
什么时候使用一个索引
cassandra的内建索引适合这样一个表,它有好多列都包含这个索引列的值。这个索引列有更多的值,你的开销越大,主要是对查询和维护索引。例如假设你有一个播放列表的表里面有数十亿首歌曲。很多歌曲可能有共同的艺术家。这个艺术家的列就比较适合作为索引。
什么情况不适合使用索引
不要在以下情况使用索引:
这列的值很多的情况下,因为你相当于查询了一个很多条记录,得到一个很小的结果。
cassandra的索引查询和排序
- 博客分类:
- cassandra
cassandra的索引查询和排序
cassandra的查询虽然很弱,但是它也是支持索引和排序的,当然是简陋的查询,这一切都是为了追求性能的代价,所以要使用cassandra,你不能希望它完全适用你的逻辑,而是把你的逻辑设计的更适合cassandra。
第一:索引查询cassandra是支持创建二级索引的,索引可以创建在除了第一个主键之外所有的列上,当然有些类型除外,例如集合类型。例如
CREATE TABLE test(
a INT,
b INT,
c INT,
d INT,
e INT,
m INT,
PRIMARY KEY(a,b,c));
C ...
cassandra如何删除一个节点
- 博客分类:
- cassandra
cassandra集群可能有好多机器,这么多机器肯定有宕机的几率,而且机器越多,几率越大,当发生宕机的时候,你如何删除一个节点呢?
本文仅适应使用了vnodes的cassandra集群,怎么判断是否用了vnodes呢? 主要看你的cassandra.yml配置文件中,是否配置了initial_token,如果没有配置,就是使用了vnodes。使用了vnodes,删除了节点之后它会自己均衡数据,不要你手动处理。
根据官方文档的提示,操作步骤如下:
第一步:先每个机器都修复下每个keyspacenodetool repair -h ip_address_of_node keyspace_n ...
如何设置cassandra用户名和密码
- 博客分类:
- cassandra
适应于cassandra2.0以上的版本
1、首先修改配置文件 cassandra.yaml
把默认的authenticator: AllowAllAuthenticator运行所有人登录设置为用密码登录:
authenticator: PasswordAuthenticator
2、登录cassandra创建用户
使用默认账户登录cassandra
在bin目录下执行
./cqlsh -ucassandra -pcassandra
cassandra支持的查询表达式
- 博客分类:
- cassandra
本文介绍cassandra支持的,目前我所知道的所有查询表达式类型。如果你需要更复杂的查询,单单依靠cassandra是很难做到的,你需要借助其它手段或者工具。cassandra目前支持的表达式目前有三种:我们先假设我们的表结构是这样的:
CREATE TABLE test(
a INT,
b INT,
c INT,
d INT,
e INT,
PRIMARY KEY(a,b,c,d)
);
CREATE INDEX ON test(e);
1、前缀表达式
就是查询条件必须是主键,且前面的主键是=号,只有最后一个主键是> >= < < ...
cassandra的集群对时间的要求是很严格的,在集群中的任何一台机器时间都必须保持同步,即便有一秒的延迟,也会带来莫名其妙的问题。因为cassandra是根据时间戳分辨出最后到达的响应,假设对同一个记录进行不同的操作,如果时间不同步,可能会导致前面的操作在后面的操作之后生效。当在高速操作的时候,可能会发生记录删除不掉,表drop了仍然存在等等奇怪的现象。
同时如果发生这些形形色色的奇怪问题,你应该首先查一下你的集群是否时间同步,假设真是时间不同步导致的,而你又没发现,这会浪费你好多时间去调查原因。
做时间同步可以是集群里的所有机器和同一个时钟同步服务器同步,也可以集群中的某一个机器作为 ...
cassandra关于集合类型的操作
- 博客分类:
- cassandra
举例:
create table test(
a int,
b list<text>,
c set<text>,
d map<text,text>,
primary key(a)
);
插入使用下面的形式
insert into test(a,b,c,d) values(1,[‘listtext1′,’listtext2’],{‘settext1′,’settext2’},{‘mapkey1′:’mapvale2′,’mapkey2′:’mapvalue2’});
第一: list类型增加元素:update test ...
cassandra的nodetool工具使用jdk的jmx和cassandra节点通信。nodetool是集群的重要管理工具。
在cassandra2.0版本中,nodetool默认是允许远程访问,其不需要密码的。在cassandra2.1版本中,nodetool默认是只允许本机访问,很不方便,如果远程访问功能打开,又不安全,防止别人乱操作,好方法就是加上访问权限控制。
第一步:打开远程访问权限编辑conf/cassandra-env.sh文件。找到:LOCAL_JMX=yes 默认值监听localhost,只允许本机访问。改为LOCAL_JMX=no 表示远程也可以访问。
第二步:指 ...
本文用到的cassandra的版本是2.0.6版
1、前提和约束
CREATE TABLE test(a INT,b INT,c INT, d string,e string,PRIMARY KEY(a,b,c));
CREATE INDEX ON test(d);
cassandra的查询具有以下约束:
第一主键 只能用=号查询第二主键 支持= > < >= <= 但是必须后面加 ALLOW FILTERING索引列 只支持=号
2、分页查询首先使用limit 关键字来限制查询结果的条数 进行分页。进行翻页是个比较复杂的过程。需要明确查询出来的结果是按 ...
cassandra使用cql语言作为操作语言,cassandra在2.0之后,在操作上越来越像sql数据库的操作,这样想从传统关系型数据库,切换到cassandra的花,上手成本也越来越低。使用官方java驱动操作cassandra 非常简单。
maven引入驱动包
<dependency>
<groupId>com.datastax.cassandra</groupId>
<artifactId>cassandra-driver-core</artifactId>
<version>2.0.1</ ...