1、Cassandra特点

因Cassandra采用了许多容错机制。由于Cassandra是无主的,类似区块链去中心化设计,所以不存在单点故障。可以做到在不停机情况下滚动升级。这是因为Cassandra可以支持多个节点的临时失效(取决于群集大小),对整个群集的性能影响可以忽略不计。
Cassandra提供LOCAL和REMOTE模式,支持多地域容灾。Cassandra允许您将数据复制到其他数据中心,并在多个地域保留多副本。除了作为强大的灾难恢复和业务连续性保障之外,这有助于满足许多监管,离线分析等要求,参考在线文档。
Cassandra提供强大QPS能力,多个节点可以轻松达到10W/TPS。

2、Cassandra部署

以cassandra 3.3.x安装为例,描述cassandra集群搭建过程,先将cassandra 3.3.x解压到Linux服务器目录/appuser/cassandra 3.3.x
以三节点集群为例:192.168.0.1,192.168.0.2,192.168.0.3,并选192.168.0.1为种子节点。

2.1、前置条件

2.1.1、配置jdk

需要SUN提供的JDK1.8,java -version查看JDK版本,注意不是OpenJDK

2.1.2、配置Cassandra环境变量
vi ~/.bash_profile
CASSANDRA_HOME=/appuser/cassandra 3.3.x

并在path后面加上

:$CASSANDRA_HOME/bin

执行:source ~/.bash_profile 让其配置生效
验证生效:echo $CASSANDRA_HOME

2.1.3、配置系统调优参数

(1)vi /etc/sysctl.conf 配置网络缓冲区和虚拟内存

net.ipv4.tcp_syncookies=1
net.ipv4.tcp_tw_reuse=1
net.ipv4.tcp_tw_recycle=1
net.ipv4.tcp_synack_retries=2
net.ipv4.tcp_syn_retries=2
net.ipv4.tcp_wmem=8192436600873200
net.ipv4.tcp_rmem=32768436600873200
net.ipv4.tcp_mem=94500000 91500000 92700000
net.ipv4.tcp_max_orphans=3276800
net.ipv4.tcp_fin_timeout=30
vm.swappiness=5
vm.max_map_count=1048575

(2)vi /etc/security/limits.conf 配置资源限制

*-memlock unlimited
*- nofile 65535
*-nproc 32768
*-as unlimited

(3)vi /etc/security/limits.d/90-nproc.conf 配置文件打开数

*-nproc 32768

让配置生效:执行sysctl -p

2.2、配置cassandra.yaml

2.2.1、配置yaml,详细参考官方文档…

cd $CASSANDRA_HOME
cd conf
注意:后面加空格然后在添加参数
vi cassandra.yaml

cluster_name: 'xx-cluster'               #集群名称,每个节点相同
seeds: "192.168.0.1"                     #种子节点--注:集群启动时每个节点需配置相同的种子IP地址
listen_address:  "192.168.0.1"           #本机实际IP地址
rpc_address: "192.168.0.1"               #RPC服务,本机实际IP地址
data_file_directories: /appuser/data     #元数据路径
commitlog_directory: /appuser/logs       #日志存放目录
saved_caches_directory: /appuser/caches  #缓存存放目录
concurrent_compactors: 8
concurrent_reads: 32
concurrent_writes: 32
concurrent_counter_writes: 32
file_cache_size_in_mb: 2048             #注意tombstone会撑爆缓存,应根据数据量适当调整,或避免大表出现tombstone
2.2.2、配置jvm.options

#CMS Setting禁用CMS垃圾回收器,使用G1垃圾回收器,以下以主机内存为16G的参数调优为例:

-Xms10G
-Xmx10G
-XX:+UseG1GC
-XX:G1RSetUpdatingPauseTimePercent=5
-XX:MAXGCPauseMillis=500
-XX:InitiatingHeapOccupancyPercent=75
-XX:ParallelGCThreads=16
-XX:ConcGCThreads=16             #默认为Parallel的1/4,设置相同减少STW
-XX:+AlwaysPreTouch
-XX:-UseBiasedLocking              #禁用偏向锁
#其他Print参数保持不变
-Xloggc: /appuser/cassandra/gc.log #以实际地址为准

2.3、启动cassandra

启动时,先启动种子节点,然后再启动其他节点。
cd ${CASSANDRA_HOME}/bin
./cassandra &

(1)、创建用户

  • ./cqlsh IP 9042 -ucassandra -pcassandra;
    -. /cqlsh IP 9042 -u cassuser -pcass123!
  • create user cassuser with password ‘cass123!’ superuser; #创建用户cassuser
  • grand all on keyspace casskeyspace to cassuser; #授权casskeyspace给cassuser用户
  • alter user cassandra with password ‘cass123!’; #更改用户cassandra的密码
  • create keyspace if not exists casskeyspace with durable writes =true and replication {‘class’: ‘org.apache.cassandra.locator.SimpleStrategy’, ‘replication_factor’: ‘3’}

2.4、sstable压缩方式选择

如何选择创建表,往往需要对读写场景进行分析,针对不同场景,压缩选择方式不仅相同,具体参考官方文档说明。
(1)SizeTieredCompactionStrategy(默认)
数据量达到阈值才进行压缩,Cassandra在内存数据达到一定大小时,会将数据排序写入磁盘生成一个sstable文件块,所以会提高写速度。

  • 推荐用于写入密集型工作负载。
    优点:非常好地压缩写入密集型工作负载。
    缺点:可以保留陈旧数据的时间过长。所需的内存会随着时间的推移而增加。

(2)LeveledCompactionStrategy
各层无重复数据,检索速度快:同一层的各个sstable之间不会有重复的数据。所以在某一层和它上一层的数据块进行合并时,可以明确的知道某个key值处在哪个数据块中,可以一个数据块一个数据块的合并,合并后生成新块就丢掉老块。

  • 推荐用于读取密集型工作负载。
    优点:磁盘需求更容易预测。读取操作延迟更可预测。陈旧数据被更频繁地逐出。
    缺点:更高的 I/O 利用率影响操作延迟

(3)DateTieredCompactionStrategy

  • 推荐用于时间序列和即将到期的生存时间 (TTL)工作负载。
    优点:非常适合时间序列数据,存储在对所有数据使用默认 TTL 的表中。比 DateTieredCompactionStrategy (DTCS) 更简单的配置,后者已被弃用而支持 TWCS。
    缺点:如果需要乱序时间数据,则不合适,因为 SSTable 不会很好地压缩。此外,不适用于没有 TTL 工作负载的数据,因为存储将无限制地增长。与 DTCS 相比,可以进行更少的微调配置。

3、常用命令

3.1、集群状态查看

./nodetool status #查看集群总体状态
./nodetool tpsstats #查看集群总体各个阶段的性能
./nodetool cfsstats tbs.mkt_info |head -7 #查看集群读写延迟,超过1s重点关注

#tbs.mkt_info表示:keyspace.{keyspace}.keyspace.{table}

  • 查看集群读写延迟统计信息,识别性能瓶颈问题,一般使用此命令,关注ReadLatency和WriteLatency的数值,超过1s重点关注
    ./nodetool proxyhistograms
  • 查看对应表读写延迟统计信息,分析具体涉及表结构时,一般使用此命令,关注ReadLatency和WriteLatency的数值,超过1s重点关注
    ./nodetool tablehistograms tbs.mkt_info
  • 查看集群KeyCache命中率,重点关注hists,命中率越高,说明缓存越有效
    ./nodetool info |grep ‘Key Cache’
  • 查看集群RowCache命中率,重点关注hists,命中率越高,说明缓存越有效
    ./nodetool info |grep ‘Row Cache’
  • 监控磁盘读写浏览,间隔2s刷新一次
    iostat -dx 2

3.2、cql使用

./bin/cqlsh 进入cqlsh控制台

1、describe keyspaces;
2、describe types;
#可以查询SELECT * FROM tb;
3、describe tables
#进入keyspace
4、user keyspace
#进行数据查询,并将结果导出到日志
5、bin/cqlsh -e `SELECT id,title FROM t_videos;` >output.txt
#从文件导入,指定分隔符或表头
6、copy myspace.mytable(col1,col2,col3) from '/path/to/import.dat' with delimiter=','
copy myspace.mytable(col1,col2,col3) from '/path/to/import.dat' with delimiter=',' and header=true
#导出表到文件
7、copy myspace.mytable(col1,col2,col3) to'/path/to/export.dat' with delimiter=','
copy myspace.mytable(col1,col2,col3) to'/path/to/export.dat' with delimiter=',' and header=true
#清空表,类似mysql delete from tableName;
8、truncate tableName
#执行文件内脚本,针对一些权限限制严的场景(比如:银行)
9、./cqlsh IP 9042 -ucass -pcass123! -f ddl.sql

3.3、使用sstableloader

./bin/sstableloader -d 192.168.0.1,192.168.0.2,192.168.0.3 -u cassuser -pw cass123! -t 10 -cph 100 casskeyspace/test_dt_sstable

其中集群地址:192.168.0.1,192.168.0.2,192.168.0.3
生成的文件目录:casskeyspace/test_dt_sstable
限制流量-t:M/bps
每个节点建立连接数:-cph

3.4、官方压测工具

进入cassandra/tools工具目录

  • 写压测:./bincassandra-stress write n=1000000 -rate threads=50 -node 192.168.0.1,192.168.0.2,192.168.0.3
  • #写压测(写100万行,写3个副本)
    ./bincassandra-stress write n=1000000 cl=LOCAL_QUORUM -rate threads=50 -schema “replication(factor=3)” -node 192.168.0.1,192.168.0.2,192.168.0.3
  • #读压测(读20万行,等待2个副本响应)
    ./bincassandra-stress read n=200000 cl=LOCAL_QUORUM -rate threads=50 -schema “replication(factor=2)” -node 192.168.0.1,192.168.0.2,192.168.0.3
  • 插入100万条数据,读写比例3:1,一致性为QUORUM
    ./bincassandra-stress user profile=stress-leveled.yaml n=1000000 ops(insert=3,read=1) no-warmup cl=LOCAL_QUORUM - node 192.168.0.1,192.168.0.2,192.168.0.3 -port native=9042

3.5、创建表

详细请参考官方文档详细说明,这里只对如下参数做一点说明:
gc_grace_seconds :数据被标记为墓碑(删除标记)后几秒钟,然后才有资格进行垃圾收集。默认值:864000(10 天)。默认值允许 Cassandra 在删除之前最大化一致性。建议对创建表都进行设定,以防墓碑不断增长导致预警

【数据平台】之Cassandra大数据利器相关推荐

  1. 一文读懂大数据平台——写给大数据开发初学者的话!

     一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hado ...

  2. hadloop大数据平台论文_大数据平台建设探讨

    2019.03 1 概述 大数据平台通过统一的 大数据库实现全省业务信息 的集中 , 该库数据来源于全省各个业务系统和基础数据 库等应用数据 . 位置数据 . 搜索数据等结构化数据 . 半 结构化数据 ...

  3. golang 大数据平台_人工智能大数据平台中Golang的应用实践

    原标题:人工智能大数据平台中Golang的应用实践 分享人: 薛磊,Momenta资深研发工程师,前Sun中国工程研究院工程师,专注于分布式系统.存储系统.容器等技术,目前从事深度学习训练平台的基础架 ...

  4. 怎么搭建大数据平台,这个大数据平台方案值得学习

    在大数据的时代,不仅仅是个人,企业的发展也离不开大数据.对于企业来说,一方面用户越来越多从线下转移到线上,用户的特点属性需要通过网络获取,企业需要依靠大数据把握市场变化并了解客户,从而提供满足市场需求 ...

  5. 大数据开发就业:大数据开发有哪些岗位

    在大数据的发展当中,对相关专业人才的需求是在持续增长的,包括大数据开发.数据分析挖掘等不同的数据处理环节,都形成了相应的岗位体系,大家各自负责不同的环节,共同完成大数据处理任务.今天我们主要来讲讲大数 ...

  6. 如何学习大数据!!我要做大数据!

    一文读懂大数据平台--写给大数据开发初学者的话! 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上的数据搞到别处去 第五章 ...

  7. [转]关于数据中台、数据平台、数据仓库、数据湖等数据概念的对比解析

    前言 2010年左右,还是在上学的时候,学过一门课程叫<数据仓库与数据挖掘>,那还是属于传统数据的时代,我们会讨论什么是数据仓库?什么是数据集市?数据仓库和数据库有什么区别?等等,当我还在 ...

  8. 关于数据中台、数据平台、数据仓库、数据湖等数据概念的对比解析

    前言 2010年左右,还是在上学的时候,学过一门课程叫<数据仓库与数据挖掘>,那还是属于传统数据的时代,我们会讨论什么是数据仓库?什么是数据集市?数据仓库和数据库有什么区别?等等,当我还在 ...

  9. 如何学习大数据!!我要做大数据! 1

    一文读懂大数据平台--写给大数据开发初学者的话! 文|miao君 导读: 第一章:初识Hadoop 第二章:更高效的WordCount 第三章:把别处的数据搞到Hadoop上 第四章:把Hadoop上 ...

  10. python大数据好不好学_大数据好学吗?想转行大数据??

    作为一名IT从业者,同时也是一名教育工作者,我来回答一下这个问题. 首先,虽然大数据技术具有一定的难度,但是随着大数据技术体系的逐渐丰富和完善,大数据领域对于人才的需求类型也在不断趋于多元化,不同知识 ...

最新文章

  1. 最大输入hdu 2534 规律水题 求任意个a,b的和 不能表示的最大的数
  2. 3des java ecb_PHP 3DES加密 与JAVA通用 加密模式:ECB
  3. 野史杂谈,西游记令人崩溃的真相
  4. py2exe使用相对路径的当前目录问题
  5. php获取url返回的json,【求助】本地页面如何取某个URL返回的json
  6. 兔子问题,斐波纳契数列
  7. linux配置https
  8. 我如何知道Bash脚本中的脚本文件名?
  9. epoll LT/ET 深度剖析
  10. java 明华读卡器_Java调用明华RF读写器DLL文件过程解析
  11. MySQL基础(学习笔记)
  12. 记 第一次游戏测试实习经历
  13. 用C语言编写高斯消元法解线性方程组
  14. Google浏览器任务栏图标变白
  15. 08_基于IP的伪装
  16. unity屏幕渐变黑白效果
  17. Android 下载 自动安装 解析错误,studio下载APK到手机提示解析错误解决方法
  18. 数据分析统计基础(三):差异性/相关性分析
  19. 平台服务器的配置信息失败,安装程序配置服务器失败-安装程序配置服务器失败.参考服务器错误日志和Cwindowssqlstp.log了解更多信息...
  20. html实现文本的查找与替换,在 InDesign 中查找并替换文本

热门文章

  1. java redis驱动包下载
  2. C语言:【入门】求长方形的周长和面积
  3. 74HC244;74HCT244——三态八路缓冲器/线路驱动器
  4. 博图pro版和adv版区别_笔记本定制版什么意思?笔记本标配版和定制版的区别与利弊分析...
  5. 缓存模式【缓存使用几种模式】【刘新宇】
  6. 2023年上半年数据库系统工程师上午真题及答案解析
  7. 完美国际服务器管理修改经验倍数,《完美国际》全服1.5倍经验 7天神速升级
  8. QQ6.3显IP加速清爽版 V14.8.21
  9. 警报:遇见这类大数据培训课程赶紧撤,不要再让悲剧重复上演
  10. php小写金额转大写金额