`
babydeed
  • 浏览: 237950 次
  • 性别: 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个人学习笔记总结

    3. **可调整的压缩策略**:Cassandra 1.0引入了一种创新的压缩算法,能够针对每一列独立进行压缩,这不仅增强了数据的压缩效果,还提供了更大的灵活性。 4. **Windows系统服务支持**:现在,Cassandra可以作为...

    cassandra学习笔记

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

    Redis学习笔记.pdf

    代表产品有Cassandra、HBase、Riak等。 文档型数据库以文档形式存储数据,通常存储为JSON、XML等格式,适合于存储半结构化数据,查询效率较键值存储更高。代表产品有MongoDB、CouchDB、MongoDb(4.x)、国内开源的...

    javaEE学习笔记

    本学习笔记涵盖了JavaEE的核心技术,帮助学习者深入理解和掌握javaweb的各项技能。 1. **Servlet与JSP** - **Servlet**:Servlet是Java编写的服务器端程序,主要用于扩展服务器的功能。在JavaEE中,Servlet处理...

    大数据技术学习笔记1

    大数据技术学习笔记1 大数据技术学习笔记1 是一份关于大数据技术的学习笔记,涵盖了大数据技术的基本概念、Hadoop 生态系统、MapReduce 算法、Spark 框架、分布式计算平台等多个方面。 Hadoop 生态系统 Hadoop 是...

    2009数据库系统工程师学习笔记

    2009年的数据库系统工程师学习笔记可能涵盖了当时该领域的核心概念和技术。以下是对这些笔记可能包含的一些关键知识点的详细说明: 1. **数据库基础理论**: - 数据模型:包括关系模型(如SQL)、网络模型、层次...

    HugeGraph学习笔记二1

    "HugeGraph学习笔记二1" HugeGraph是一个基于图数据库的存储引擎,它支持多种存储backend,包括Cassandra和HBase。在这个笔记中,我们将探索HugeGraph的存储机制,特别是它如何与HBase集成。 HBase是一个分布式的...

    spring6.0学习笔记

    通过阅读《spring6.0学习笔记.md》这份文档,开发者可以系统地了解这些新特性和变化,逐步掌握Spring 6.0的核心技术,提升自己的开发技能。文档中应该会详细解析每个知识点的应用场景、使用方法以及最佳实践,帮助...

    大数据学习笔记汇总指南

    这份“大数据学习笔记汇总指南”涵盖了大数据技术栈中的关键组件,包括Hadoop、Hive、Spark、Storm、Flink以及HBase。让我们逐一深入探讨这些技术及其在大数据生态系统中的作用。 一、Hadoop Hadoop是Apache基金会...

    Java分布式应用学习笔记

    Java分布式应用学习笔记 在Java世界中,分布式应用是指由多个独立组件通过网络通信协同工作的系统。这种架构模式常用于构建大规模、高可用性、可扩展的系统。本笔记将深入探讨Java分布式应用的核心概念、技术和实践...

    免费的数据库学习笔记

    根据给定的文件信息“免费的数据库学习笔记”、“数据库学习笔记”以及标签“select面试题”,本篇文章将深入探讨与数据库学习相关的知识点,并重点围绕SQL中的SELECT语句进行讲解,包括其基本用法、进阶技巧以及在...

    大数据学习笔记,学习路线,技术案例整理。.zip

    本资料包“大数据学习笔记,学习路线,技术案例整理”是一个全面的大数据学习资源,旨在帮助初学者和进阶者系统地掌握大数据的核心技术和应用实践。 首先,我们来了解一下大数据的关键概念和技术栈。大数据通常有四...

    从零开始学Redis,Redis学习笔记

    Redis 学习笔记 本资源摘要信息主要讲解了 Redis 的基本概念、特点、优点和应用场景。Redis 是一个开源的高性能键值对数据库,支持多种键值数据类型,适合处理海量数据,效率高,但不一定安全。 一、Redis 简介 ...

    MySQL入门很简单-学习笔记

    ### MySQL入门很简单—学习笔记知识点总结 #### 一、数据库概述 **1.1 数据存储方式** - **文件系统**:传统的数据存储方式,通过文件和文件夹组织数据。 - **数据库系统**:通过数据库管理系统(DBMS)进行数据...

    数据库学习笔记

    而数据库学习笔记.docx则可能是个人的学习记录,涵盖了理论知识、实例解析、问题解决等内容,对于巩固和深化理解非常有帮助。 总的来说,掌握数据库和SQL的知识对于IT从业者至关重要,无论是开发、运维还是数据分析...

    Java架构学习笔记Xmind图.zip

    Java架构学习笔记Xmind图.zip是一个包含Java架构学习精华的压缩文件,其中很可能包含了详细的思维导图,用于梳理和组织Java开发中的各种架构概念和技术。这个压缩包可能旨在帮助Java开发者,尤其是初学者或进阶者更...

    Spark学习笔记一

    Spark可以无缝接入各种数据源,如HDFS、Cassandra、HBase、Hive和S3,为数据处理提供了极大的灵活性。 Spark的核心数据抽象是弹性分布式数据集(RDD),RDD是只读的、分区的数据集合,分布在集群的不同节点上。RDD...

    《Spark 快速大数据分析》学习笔记.zip

    学习笔记包含的内容可能涵盖了Spark的基本概念、核心组件、数据处理流程以及实际应用案例等多个方面。以下是对这些知识点的详细说明: 1. **Spark概述**:Spark是基于内存计算的大数据处理框架,它提供了一种快速、...

Global site tag (gtag.js) - Google Analytics