- 浏览: 330918 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
di1984HIT:
谢谢,写的不错。
使用hector操作Cassandra -
mr_von:
非常感谢!
paoding的分词使用 -
howgoo:
http://www.dhtmlx.com/docs/prod ...
dhtmlxGrid分页与排序 -
青春的、脚步:
谢谢
spring-data-mongodb的MongoTemplate 使用小例子 -
青春的、脚步:
xiaofancn 写道青春的、脚步 写道这个能查询都个值在某 ...
spring-data-mongodb的MongoTemplate 使用小例子
1、规划种子节点ip和Token值的对应
4个种子节点ip
192.168.0.231 192.168.0.232 192.168.0.233 192.168.0.234 进入python,计算Token #192.168.0.231对应的Token为 >>> print 2 ** 127 / 4 * 1 42535295865117307932921825928971026432 #192.168.0.232对应的Token为 >>> print 2 ** 127 / 4 * 2 85070591730234615865843651857942052864 #192.168.0.233对应的Token为 >>> print 2 ** 127 / 4 * 3 127605887595351923798765477786913079296 #192.168.0.234对应的Token为 >>> print 2 ** 127 / 4 * 4 170141183460469231731687303715884105728
或者
import java.math.BigInteger; public class InitToken { public static void main(String[] args) { int nodes = 4;//节点的总数量 for (int i = 1; i <= nodes; i++) { BigInteger hs = new BigInteger("2"); BigInteger res = hs.pow(127); BigInteger div = res.divide(new BigInteger(nodes + "")); BigInteger fin = div.multiply(new BigInteger(i + "")); System.out.println(fin); } } }
2、配置cassandra的每个节点
a、cassandra/bin/cassandra.in.sh配置本机的jdk安装路径
JAVA_HOME=/usr/local/jdk6
b、cassandra/conf/cassandra.yaml
cluster_name: 'ots' commitlog_directory: cassandra/data/commitlog saved_caches_directory: cassandra/data/saved_caches data_file_directories: - cassandra/data/data #配置种子节点ip列表 - seeds: "192.168.0.231,192.168.0.232,192.168.0.233,192.168.0.234" #上面的配置基本保持一致 #当前节点的ip(这个ip主要是用来节点和节点之间通讯的ip) listen_address: 192.168.0.231 #当前节点的ip(这个ip主要是用来相应客户端操作的ip) rpc_address: 192.168.0.231
3、启动每个节点的cassandra
nohup cassandra/bin/cassandra -f &
4、设置每个节点的Token值
进入每个节点,把启动时默认生成的Token值改变为我们规划的Token值
或者直接在配置文件cassandra.yaml中指定Token值来规划,就不用下面的动态规划了。
如下:
./bin/nodetool -h 192.168.0.231 -p 7199 move 42535295865117307932921825928971026432 ./bin/nodetool -h 192.168.0.232 -p 7199 move 42535295865117307932921825928971026432 。。。。。。。。。。。。。。。。。。。
5、初始化数据存储结构
客户端连接到集群中的某一个节点,初始化数据结构。运行初始化脚本,如下
./bin/cassandra-cli -h 192.168.0.231 -p 9160
参考json数据结构模型
{ "key":{ "name":"140 bytes", "cardno":"140 bytes", "ticketno":"140 bytes", "traindate":"140 bytes", "startstation":"140 bytes", "endtstation":"140 bytes", "seatinfo":"140 bytes", } }
具体脚本:
create keyspace user_train; use user_train; create column family users with comparator=UTF8Type and column_metadata=[{column_name:name,validation_class:UTF8Type,index_type:KEYS}, {column_name:cardno,validation_class:UTF8Type,index_type:KEYS}, {column_name:ticketno,validation_class:UTF8Type,index_type:KEYS}, {column_name:traindate,validation_class:UTF8Type}, {column_name:startstation,validation_class:UTF8Type}, {column_name:endtstation,validation_class:UTF8Type}, {column_name:seatinfo,validation_class:UTF8Type}]; #分发策略,主要是将存放到一个节点的一份数据,分发到另一个节点一份,节点的选取由Cassandra和配置文件决定。 update keyspace user_train with strategy_options = {datacenter1:2};
5、使用hector客户端api操作cassandra数据库,观察数据分布
插入数据的时候观察每个节点的数据分布是否均衡。
首先需要登录每个节点,不停的使用如下命令,刷新数据的分布情况。
./bin/nodetool -h 192.168.0.232 -p 7199 ring
写入数据代码
Cluster cluster = HFactory .getOrCreateCluster("ots", "192.168.0.231:9160," + "192.168.0.232:9160," + "192.168.0.233:9160," + "192.168.0.234:9160"); Keyspace keyspace = HFactory.createKeyspace("user_train", cluster); String ktest = ""; for (int i = 0; i < 120; i++) { ktest += "x"; } try { Mutator<String> mutator = HFactory.createMutator(keyspace, stringSerializer); long startTime = System.currentTimeMillis(); for (int i = 0; i < 10000*10; i++) { mutator.addInsertion("username" + i, "users", HFactory.createStringColumn("name", ktest+"username" + i)) .addInsertion( "username" + i, "users", HFactory.createStringColumn("cardno", ktest+"cardno" + i)) .addInsertion( "username" + i, "users", HFactory.createStringColumn("ticketno", ktest+"ticketno" + i)) .addInsertion( "username" + i, "users", HFactory.createStringColumn("traindate", ktest+"traindate" + i)) .addInsertion( "username" + i, "users", HFactory.createStringColumn("startstation", ktest+"startstation" + i)) .addInsertion( "username" + i, "users", HFactory.createStringColumn("endtstation", ktest+"endtstation" + i)) .addInsertion( "username" + i, "users", HFactory.createStringColumn("seatinfo", ktest+"seatinfo" + i)); if (i % 500 == 0) { mutator.execute(); System.out.println(i); } } mutator.execute(); System.out.println("insert time: " + (System.currentTimeMillis() - startTime)); } catch (HectorException he) { he.printStackTrace(); } cluster.getConnectionManager().shutdown();
发表评论
-
spring cloud gateway 全局过滤器。
2019-03-17 23:11 527spring cloud gateway 网关 ... -
elasticsearch 5.4搜索
2017-05-19 08:37 148@Test public void t ... -
netty简单的操作memcached
2017-04-19 18:59 976pom文件 <dependency> ... -
juc系列-Executor框架
2017-03-20 13:34 699转自 juc系列-Executor框架 什 ... -
ReentrantLock 类
2017-03-19 21:11 11.1 什么是reentrantlock java.u ... -
juc之CountDownLatch、CyclicBarrier和Semaphore例子
2017-03-19 17:23 833import java.util.concurren ... -
netty客户端与服务端例子
2017-03-12 20:07 2799package com.snailteam.nett ... -
freemaker集成spring
2017-02-26 19:00 567<bean id="freeMark ... -
spring集成Hessian插件配置改成自动注入。
2017-02-10 15:39 834原来的配置 <bean name="/ ... -
web开发模版
2017-02-09 14:42 0# Rules reminder: # DEBUG &l ... -
Java多线程
2017-02-04 14:39 515线程状态图 新建状态(New): ... -
hash冲突解决
2017-01-23 18:30 4531、开放地址法有一个公式: m是hash表长度,di ... -
mybatis +spring 分库
2015-04-30 17:56 353<context:component-scan b ... -
Java并发任务处理例子
2014-02-12 16:06 1125public void init() { su ... -
JAVA动态代理模式
2012-10-03 01:01 1183这是我要实现的效果 public static ... -
paoding的分词使用
2012-06-13 21:30 4865paoding下载 http://code.googl ... -
使用spring-hadoop操作hadoop
2012-05-20 02:12 32参考文章 http://blog.springsource. ... -
solr3.5集成paoding和位置搜索及对solrj的使用。
2012-04-28 02:12 1978http://xiaofancn.iteye.com/blog ... -
日期处理DateUtils
2012-03-24 09:47 4811import java.text.SimpleDateF ... -
使用hector操作Cassandra
2012-03-13 18:06 3553http://rantav.github.com/hec ...
相关推荐
它提供了多种工作负载模型,模拟实际应用中的读写操作比例、数据分布等场景。通过 YCSB,测试者可以设置不同的参数,如并发用户数量、操作类型、记录大小等,以适应各种实际环境。 ### Cassandra 简介 Apache ...
- Cassandra允许开发者在不预先定义具体结构的情况下进行数据存储和检索。这意味着可以随时动态地添加或删除字段,而无需停机或重新组织数据表结构。这种灵活性非常适合那些数据结构经常变化的应用场景。 2. **...
- 无需使用CQL,而使用更熟悉的SQL语句来操作Cassandra数据。 - 提供了NoCQL运动的起点,意味着用户可以不必学习新的查询语言,直接利用现有的SQL技能。 #### 4. **数据映射** 在使用Cassandra存储引擎时,数据...
读操作会路由到特定的节点进行,这依赖于数据分布策略和一致性级别。 ### API Cassandra提供了多种API供开发者使用,包括Thrift和CQL(Cassandra Query Language),便于与应用程序交互。 ### 性能测试和比较 为了...
性能基准测试显示,Cassandra在大规模集群中表现出色,能够处理大量数据和高并发请求。配置选项丰富,允许用户根据硬件和工作负载优化系统性能。 总的来说,Cassandra是一个设计用于处理大数据量、高并发场景的...
1. **数据分布和副本策略**:Cassandra使用一致性哈希来分发数据,每个节点负责一部分的数据。如果副本数量设置得过高,可能会增加写入的复杂性,因为数据需要同步到多个节点,从而降低了写入性能。 2. **硬件限制*...
1. **分布式架构**:Cassandra采用了基于Google的Bigtable设计,通过分区和复制策略实现跨多台机器的数据分布,支持水平扩展。 2. **Gossip协议**:节点间使用Gossip协议来传播状态信息,以检测和处理故障,无需...
3. **一致性哈希**:Cassandra使用一致性哈希算法来实现数据的分布,这允许数据均匀分布在各个节点上,减少热点并提高性能。 4. **Gossip协议**:节点间通信采用Gossip协议,用于传播集群状态信息,如节点的加入、...
4. **一致性哈希**:用于数据分布,确保负载均衡且减少跨节点通信。 5. ** tombstone 清理**:有效地处理数据删除,避免因删除操作导致的性能下降。 **二、Cassandra 基准测试的重要性** 1. **性能评估**:测试...
Apache Cassandra 是一个分布式NoSQL数据库系统,常用于处理大规模数据分布。它被设计为高度可扩展,能够处理PB级别的数据,并提供高可用性和容错性。Cassandra Datastax是Datastax公司对Apache Cassandra的商业支持...
- **图表展示**:以图表形式展示查询结果,更直观地理解数据分布和关联。 3. **使用步骤**: - 启动DevCenter应用程序。 - 创建新的连接配置,输入Cassandra集群的相关信息。 - 连接到Cassandra集群,查看节点...
但我们可以推测,作者可能在博客中详细阐述了他对Cassandra API的理解,包括数据模型(如行、列族、超级列)、数据分布和一致性策略等方面。此外,他可能还讨论了Cassandra的拓扑结构,如节点通信、数据复制和故障...
在 "Yardstick-Cassandra" 中,我们可以找到一系列的测试用例,这些用例模拟了实际应用中的常见工作负载,如读写操作、数据分布、故障恢复等。通过这些测试,用户可以了解 Cassandra 在特定配置下的性能边界,以便...
Apache Cassandra是一款开源的分布式数据库系统,设计用于处理大量数据分布在全球多个数据中心的环境中。它采用无主节点架构,提供高可用性和可扩展性,适合大规模数据存储和实时查询应用。 **二、下载Cassandra** ...
每个节点都可以成为数据中心的一部分,数据根据分区键分布在不同的节点上,保证了数据分布的均匀性和高可用性。 4. **一致性与可用性**:Cassandra遵循CAP定理,允许用户在一致性(Consistency)和可用性...
1. **创建集群**:通过简单的命令,你可以创建一个包含任意数量节点的Cassandra集群,这些节点可以分布在多个数据中心或 racks 中。 2. **启动和停止节点**:你可以独立启动或停止集群中的任何节点,模拟节点故障或...
Cassandra 的设计灵感来源于Google的Bigtable和Amazon的Dynamo,它采用了一种无中心架构,所有节点都是平等的,可以自动复制和分布数据,以确保容错性和高吞吐量。0.5.1 版本是Cassandra发展历史上的一个重要里程碑...
Apache Cassandra 是一个分布式NoSQL数据库系统,被设计用于处理大规模数据分布于多个数据中心的情况,具有高可用性、可扩展性和高性能的特点。Cassandra 数据填充器是针对这种数据库系统的工具,用于在测试、演示...
Apache Cassandra 是一个分布式NoSQL数据库系统,被设计用于处理大规模数据分布在全球范围内的集群上,具有高可用性、可扩展性和高性能的特点。在Cassandra中,数据建模是设计高效查询和存储策略的关键步骤,它涉及...