`
babydeed
  • 浏览: 235838 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cassandra学习笔记3

阅读更多

初学cassandra 如有错误请指正 谢谢                   

                 Cassandra  性能测试

目的:

验证Cassandra  是否达到如下性能:

在数据量为5000万下,读写数据1000/单台每秒,

准备工作:

一、Cassandra运行环境配置linux  jdk64位)

1、          Cassandra性能相关参数修改(cassandra.yaml文件)

(1) 最好将数据文件和日志文件存储在不同硬盘

# directories where Cassandra should store data on disk.

data_file_directories:

    - /var/lib/cassandra/data

# commit log

commitlog_directory: /var/lib/cassandra/commitlog

(2) 修改并发写的线程数量为128

# On the other hand, since writes are almost never IO bound, the ideal

# number of "concurrent_writes" is dependent on the number of cores in

# your system; (8 * number_of_cores) is a good rule of thumb.

concurrent_reads: 32

concurrent_writes: 128

       (3)

 

 

 

2  不能让Cassandra出现使用交换内存的情况,否则服务性能会出现严重下降。

二、Key Cache大小设置的原理

1       认为平常认证人员的数量符合平均值为2500,标准差为125万的正态分布。因此位于左右两个标准差之内人员的操作最多的。因此Key Cache的大小应该总量x百分比。X的值为上述四个标准差所占的面积比例。左右4个标准差之间的面积比例为99.99%,认为是5000万,因此,标准差大小为5000/(4+4)=625万。因此可以存入1250万。

三、创建数据库

1  创建keyspace

create keyspace mcas;

2  创建column family

create column family timebasedtoken with

  key_validation_class=UTF8Type and

  comparator = UTF8Type and

  column_metadata =

  [

         {column_name:seed ,validation_class:UTF8Type},

        {column_name: offset, validation_class: LongType},

        {column_name: state, validation_class: LongType},

         {column_name: modelType, validation_class: UTF8Type},

         {column_name: timeWindow, validation_class: LongType},

        {column_name: idType, validation_class: UTF8Type},

         {column_name: idNumber, validation_class: UTF8Type},

         {column_name: badPwCount, validation_class: LongType},

        {column_name: staticPwd, validation_class: UTF8Type},

            {column_name: staticPwVolity, validation_class: LongType},

            {column_name: algorith, validation_class: UTF8Type},

        {column_name: pwLength, validation_class: UTF8Type},

            {column_name: chgCode, validation_class: UTF8Type},

            {column_name: lastPwd, validation_class: UTF8Type}

  ];

3、修改key缓存大小

   update column family timebasedtoken with keys_cached = 7000000;

4、编写插入数据小程序mcas-jar-with-insertdatatest.jar,插入5000万条数据

小程序带有三个参数,第一个参数是-p,第二和第三个分别是开始位置和结束位置。

执行命令:java –jar mcas-jar-with-insertdatatest.jar  –p  0  50000000

 

5、编写读取并修改数据的程序  mcas-jar-with-mutiTest-ks-theadnum-count.jar

mcas-jar-with-mutithreadtest.jar  <keyspace>  <thread_count>  <readwrite_Number>

 

测试:

1、          执行16个线程读写数据

(1)执行命令  java -jar  mcas-jar-with-mutiTest-ks-theadnum-count  mcas  16  10000000;

(2)通过查看日志,在20分钟后每秒钟读写的数量趋于稳定,在16个线程并发下,每个线程处理的数量平均800左右,某线程部分日志输出如下:

 

 

 

 

 

(3)在执行过程中通过vmstats 2 查看服务器cpu使用率大约为65%

 



 

运行bin/nodetool -h localhost cfstats

 

Cassandra keyspace状态图

 

 

 

 



 

2、执行32个线程读写数据

(1)执行命令  java -jar  mcas-jar-with-mutiTest-ks-theadnum-count  mcas  32  10000000;

          (2)32个线程并发下,每个线程处理的数量大约400左右,某线程部分日志输出如下:



 

 

 

(3)在执行过程中通过vmstats 2 查看服务器cpu使用率大约为60-70%

 



  

 

 

Cassandra keyspace状态图

 



  

 

 

上图所圈项为key命中率

并且命中率会随着key cache capacity增大而增加。超过阈值后,运行一段时后由于内存的限制会出现严重性能问题。具体情况为当内存不足而运行垃圾回收的时候,Cassandra将不能提供服务,直到垃圾回收完成。

 

结论:

1、16个线程并发下,总处理能力为16 * 800= 12800/每台/每秒;32个线程并发下,总处理能力为32 * 400 = 12800/每台每秒。这两数值都完全能满足1000/每台/每秒的需求。

2、Cassandra的命中率随着内存中key的缓存容量增大会逐渐增加。

 

初学cassandra 如有错误请指正 谢谢   

  • 大小: 51.9 KB
  • 大小: 43.8 KB
  • 大小: 106.9 KB
  • 大小: 72.9 KB
  • 大小: 80.5 KB
  • 大小: 31.1 KB
  • 大小: 70.6 KB
分享到:
评论
1 楼 38123978 2015-11-03  
你好,我最近在看cassandra的性能,我想问一下5000万条数据的插入是怎么实现的?

相关推荐

    Cassandra个人学习笔记总结

    Cassandra个人学习笔记总结,引用请注明出处。

    cassandra学习笔记

    token是cassandra里相当重要的一个概念,它是cassandra用来平衡集群内各节点负载的一个属性。cassandra里有不同的token分配策略,推荐采用默认的RandomPartitioner分区策略。在这个策略下,token是一个0~2的127次方...

    cassandra 学习

    cassandra 学习

    nosql cassandra学习教程

    Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非...

    cassandra学习资料收集

    cassandra学习资料

    cassandra 实战

    cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战cassandra 实战...

    cassandra cql3

    cassandra cql3. pdf

    Cassandra 权威指南 大数据学习必备

    Cassandra 权威指南 大数据学习必备。 本书是一本广受好评的Cassandra图书。与传统的关系型数据库不同,Cassandra是一种开源的分布式存储系统。书中介绍了它无中心架构、高可用、无缝扩展等引人注目的特点,讲述了...

    Cassandra

    The rising popularity of Apache Cassandra rests on its ability to handle very large data sets that include hundreds of terabytes -- and that's why this distributed database has been chosen by ...

    Cassandra The Definitive Guide(2nd) azw3

    Cassandra The Definitive Guide(2nd) 英文azw3 第2版 本资源转载自网络,如有侵权,请联系上传者或csdn删除 本资源转载自网络,如有侵权,请联系上传者或csdn删除

    cassandra cli 命令 大全

    cassandra cli 命令 大全

    Mastering.Apache.Cassandra.2nd.Edition.1784392618

    Chapter 3. Effective CQL Chapter 4. Deploying a Cluster Chapter 5. Performance Tuning Chapter 6. Managing a Cluster – Scaling, Node Repair, and Backup Chapter 7. Monitoring Chapter 8. Integration ...

    DevCenter cassandra客户端

    DevCenter cassandra客户端 DevCenter cassandra客户端 DevCenter cassandra客户端

    Cassandra.3.x.High.Availability.2nd.Edition.1786462109

    Chapter 3. Replication Chapter 4. Data Centers Chapter 5. Scaling Out Chapter 6. High Availability Features in the Native Java Client Chapter 7. Modeling for Availability Chapter 8. Anti-Patterns ...

    Cassandra(apache-cassandra-4.0.1-bin.tar.gz)

    Cassandra(apache-cassandra-4.0.1-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...

    spring boot与cassandra集成,使用JPA方式。

    spring boot与cassandra集成,使用JPA方式。

    cassandra安装使用教程

    1、cassandra的安装、维护使用 2、java操作cassandra实例 3、cql使用详解

    Cassandra(apache-cassandra-3.11.11-bin.tar.gz)

    Cassandra(apache-cassandra-3.11.11-bin.tar.gz)是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身...

    Nosql - Cassandra 入门学习

    Cassandra 入门学习 Clauster 实例 Cassandra Log4j 下应用

    Cassandra JDBC Driver

    Cassandra jdbc driver,支持Cassandra2.x,3.x, 支持标准的jdbc规范,兼容Cassandra的cql语法。

Global site tag (gtag.js) - Google Analytics