cassandra0.6 扩展数据中心方法
Cassandra0.6 版本添加数据中心没有0.7版本来的容易,下面介绍0.6版本添加数据中心的正确方式,并与错误的方式进行对比。正确的方法:--将当前DC切换到DC-aware snitch,但保留集群仍为RUS(RackUnawareStrategy).--Bootstarp第二个数据中心的节点,每次启动一个,以是环在两个数据中心间交替DC1 DC2 DC1 DC2等等。因为RAS(RackAwareStrategy)在各数据中心近似均衡的存放数据,所以应让每个数据中心的节点数目相同。--切换集群到RAS(RackAwareStrategy)--启动repair.在cassandra0.6,只能在一个节点上运行repair,所以在每个节点上运行repa
crontab usage
名称 : crontab使用权限 : 所有使用者使用方式 :crontab file [-u user]-用指定的文件替代目前的crontab。crontab-[-u user]-用标准输入替代目前的crontab.crontab-1[user]-列出用户目前的crontab.crontab-e[user]-编辑用户目前的crontab.crontab-d[user]-删除用户目前的crontab.crontab-c dir- 指定crontab的目录。crontab文件的格式:M H D m d cmd.M: 分钟(0-59)。H:小时(0-23)。D:天(1-31)。m: 月(1-12)。d: 一星期内的天(0~6,0为星期天)。时程表的格式如下 :f1 f2 f3 f4 f5 program其中 f1 是表示分钟,f2 表示小时,f3
daily job tips(cassandra)
1.多数据中心部署问题思考?Token选择问题分区策略选择单数据中心内部数据平衡多数据中心扩容节点故障带来的问题2.集群维护?系统日志聚集(todo)定时备份任务(todo)集群系统配置文件维护方案选择 参考文档(cassandra wiki)http://wiki.apache.org/cassandra/Operations#Replication 相关词汇:consult 考虑,顾及vital 致命的;生死攸关的corollary 推论,必然的结果disproportionately 不成比例 不对称的consequence 结果,后果wipe 揩,擦;揩干;擦净hypothetical 假设的,假定的;有待证实的depition 描写;叙述 rigid 刚硬的; 僵硬的; 不弯曲的
Packtpub.Cassandra.High.Performance.Cookbook.Jul.2011目录
第8章 多数据中心部署变化跟踪以确定读操作被路由到了那里使用IPTable在本地环境模拟复杂的网络场景选择IP地址与RackInferringSnitch协同工作编写多数据中心安装脚本设定Rack和Datacenter配置以使用property file snith方式使用JConsole进行动态snitch问题跟踪在多数据中心环境使用Quorum操作使用traceroute进行跨数据中心延时问题跟踪确保多机架环境中交换机之间的带宽增大rpc_timeout值一处理多数据中心间的延迟通过CLI修改一致性级别,测试多数据中心部署时各种一致性级别使用TWO和THREE两种一致性级别为使用NTS和Random Partitioner计
几个可以来做cassandra性能评测的工具
1.yahoo's --> YCSB2.cacti 3.cassandra supplied -->stress.py4.挽起袖子用hector、thrift写吧5.nagios + nrpe + some custom scripts6.CloudKick7.zabbix https://gist.github.com/7447618.ClearStone [@more@]
cassandra图形客户端工具
cassandra图形客户端工具:1.cassui ## Cassandra UI - a web based interface over Cassandra (google code)2.suguru / cassandra-webconsole ##Web based console for cassandra (github)3.driftx/chiton ## A browser for Cassandra using GTK (github)* Automatic Keyspace, Column, and SuperColumn introspection* Browse columns with pagination* Completion history for rows and SuperColumn names4.apollohttp://www.codefreun.de/apollo/[@more@]
topic links
------vector clockA vector clock event synchronization strategywill likely be introduced in a future versionof Cassandra.--《Cassandra The Definitive Guide》why vector clocks are easy: http://blog.basho.com/2010/01/29/why-vector-clocks-are-easy/ why vector clocks are hard http://blog.basho.com/2010/04/05/why-vector-clocks-are-hard/ vector clocks again: http://pl.atyp.us/wordpress/?p=2830 Conflict Resolutionhttp://pl.atyp.us/wordpress/?p=2601------yamlyaml process:http://code.google.com/p/snakeya
About compation
minor compaction vs. major compactionmin compaction threshold vs. max compaction threshold 问题一、minor compaction vs. major compaction1.major compaction 只能手动的通过nodetool触发,对整个column family所有的sstable进行compact;minor compcation通过配置参数min compaction threshold 和max compaction threashold达到条件后触发2.在0.7-beta2版本之后,non-major compation 在比较bloom filter确认tombstone标示的row不存在于其它sstable中也可以将其删除。因为minor compaction会根据min compaction threshold 和ma
cassandra最终一致性相关算法数据结构
Merkle Tree(MT)是一个非常容易理解的数据结构,简单来说就是一颗hash树,在这棵树中,叶子节点的值是一些hash值、非叶节点的值均是由其子节点值计算hash得来的。在Dynamo中,每个节点保存一个范围内的key值,不同节点间存在有相互交迭的key值范围。在去熵操作中,考虑的仅仅是某两个节点间共有的key值范围。MT的叶子节点即是这个共有的key值范围内每个key的hash,通过叶子节点的hash自底向上便可以构建出一颗MT。 Dynamo首先比对MT根处的hash,如果一致则表示两者完全一致,否则将其子节点交换并继续比较的过程。1.Dynamo中每个子节点保
cassandra版本变更列表
https://svn.apache.org/repos/asf/cassandra/tags/cassandra-0.8.4/CHANGES.txt0.7.4 * add nodetool join command (CASSANDRA-2160) * fix secondary indexes on pre-existing or streamed data (CASSANDRA-2244) * initialize endpoint in gossiper earlier (CASSANDRA-2228) * add ability to write to Cassandra from Pig (CASSANDRA-1828) * add rpc_[min|max]_threads (CASSANDRA-2176) * add CL.TWO, CL.THREE (CASSANDRA-2013) * avoid exporting an un-requested row in sstable2json, when exporting a key that does not e
cassandra升级版本选择
本文档假想cassandra版本升级问题,预设使用cassandra增量备份特性的需求,考虑升级最终版本的选择。过程:一、解决此需求至少需要回答的三个问题二、对比升级到0.8.0和0.7.4对当前系统的影响三、给出最终结论一、需要回答的三个问题1.为什么要升级到0.8.0?会带来那些好处?2.升级到0.8.0是否会带来潜在的问题?3.升级到0.7.4是否就已经能够满足需求?二、升级到0.8.0和0.7.4对当前系统的影响升级到0.8.0是否能够满足当前对增量备份的需求,并带来额外的带来风险,后续版本有没有发布0.8版本的bug1. 0.8.0与0.7.1及以后版本节点间通信的协
yaml (YAML Ain't Markup Language)
YAML:YAML Ain't Markup LanguageYAML是一种直观的能够被电脑识别的的数据数据序列化格式YAML实现简单,解析成本很低,易于同脚本语言交互,YAML特别适合在脚本语言中使用,YAML做配置文件也不错,CASSANDRA就是使用cassandra.yaml作为参数配置文件。目前已有多种语言的YAML解析器。[@more@]
使用YCSB工具工具进行cassandra性能测试
ant安装:export JAVA_HOME=/usr/java/jdk1.6.0_25/export ANT_HOME=/home/wangm/apache-ant-1.8.2export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATHYCSB安装:antant dbcompile-cassadra-0.7java -cp build/ycsb.jar:db/hbase/lib/* com.yahoo.ycsb.Client -p columnfamily=f1 -db com.yahoo.ycsb.db.HBaseClient -P workloads/workloada -threads 50 -load Core workload package propertiesThe property files used with the core workload generator can specify values for the following properties:fieldcount: the number of fields
cassandra多节点集群环境测试
cassandra多节点集群环境测试:一、测试环境描述:1.硬件环境cpu:VM@1.6GHzdisk:20G Mem:1G2.软件环境OS:suse 11 2.6.9-89.0.19.ELsmp,x86 jdk 1.6.0casandra:0.8.0client:hector3.配置参数:3.1.JVM参数:JVM_OPTS3.2.cassandra配置参数ReplicationFactor:3NODES:318Partitioner:RandomPartitionerConsistencyLevel:灵活指定InitialToken:I*2^127/N (共N个节点,第i个节点的token)ColumnType=Standardcolumn size:(key+value=500B)column count:30Billions二、性能测试1.数据读测试1.1CPU1.2Memory1.3I/O1.4Network2.数据写测试1.1CP
cassandra tombstone导致写数据丢失问题征解
问题描述:1.casssandra中数据结构:ColumnFamily->Column->key-value(key,value,timestamp)2.cassandra使用timestamp来判断数据的新旧。3.cassandra删除column是通过写一个新column来实现的,这个column是tombstone。4.如果添加一个tombstone到cassandra中删除一个column后,在tombstone还未被清除前,再次写入一个时间戳更小的相同column,此时会导致这次的写入成功但用户查询不到该次写入的column。clue--------------------------------how can i get a tombstone’s timestamp?I understand that tombstones are internal impl
cassandra get set同步问题
import quicktime.std.clocks.Clock;import com.sun.corba.se.spi.orbutil.fsm.Guard.Result;import me.prettyprint.cassandra.serializers.StringSerializer;import me.prettyprint.cassandra.service.CassandraHostConfigurator;import me.prettyprint.hector.api.Cluster;import me.prettyprint.hector.api.Keyspace;import me.prettyprint.hector.api.beans.HColumn;import me.prettyprint.hector.api.factory.HFactory;import me.prettyprint.hector.api.mutation.Mutator;import me.prettyprint.hector.api.query.ColumnQuery;impor
简单的hector连接casssandra测试
import me.prettyprint.cassandra.serializers.StringSerializer;import me.prettyprint.cassandra.service.CassandraHostConfigurator;import me.prettyprint.hector.api.Cluster;import me.prettyprint.hector.api.Keyspace;import me.prettyprint.hector.api.factory.HFactory;import me.prettyprint.hector.api.mutation.Mutator;public class ExampleClient { public static void main(String[] args) throws IllegalStateException,Exception { CassandraHostConfigurator cassandraHostConfigurator=new CassandraHostConfigura
cassandra&hector版本问题
cassandra,hector版本兼容问题cassandra自身的兼容问题:cassandra0.6->cassandra0.7 节点间数据通信的方式发生了变化,从0.6升级到0.7必须经过整个集群重启。cassandra0.7->cassandra0.8 可以进行无损升级,只需要进行滚动升级即可,每次停一个节点升级,不影响整个集群对外提供服务。cassandra与hector的兼容问题:hector无法预知未来cassandra的变更,所以不保证前向兼容,通常对上一个版本保持后向兼容。hector的版本模式如:0.6.0-90.6.0表示cassandra的版本-9表示hector的版本一般cassandra发布版本后,hector随后发布新版本,
MerkleTree在数据校验上的应用
Anti-Entropy如何通过对比MerkleTree来发现节点数据的一致?比较恢复的最细粒度是?MerkleTree又称HashTree,因为它的节点保存的都是hash值,叶子节点保存的是文件块,分片,或者cassandra中row key的hash值等,非叶子节点保存的是子节点值的hash,即hash的hash。通过比较树根的hash可以快速的确认当前tree映射的数据有没有发生变化,并可以在log(N)时间内快速的定位是那部分发生了变化。这样看来MerkleTree是很强大的,在cassandra中就是通过MerkleTree对比来进行多个节点上同一个range的多个副本数据的一致性检查,从而进行readrepair一致
分布式数据库重要技术概念小记
《源码解析:http://blog.csdn.net/FireCoder/article/details/5700982》http://io.typepad.com/glossary.html#gls-consistencylevel垂直扩展 vs. 水平扩展(Sharding)Feature-based shard or functional segmentationKey-based shardingLookup table CAP理论ConsistencyAvailabilityPartition Tolerance两阶段提交GossipGossip算法又称为疫情传播算法随机选择节点同步状态,在有限步内便可达到所有节点视图一致。消息的类型:PushPullPush-PullBloom FilterBloom Filter 通过连续的哈希函数映射Key到位数组因为不同Key之间存在Hash碰撞,所