配置集群时,要求所有节点的集群名,分区器,snitch必须相同。种子节点最好相同。

种子节点:最好每个DC,配置2个,这样即使一个DC中一个种子节点挂了,仍然有一个中子节点可用。种子节点被认为是最先加入集群的,不会做数据迁移。其他节点都会优先连接种子节点加入集群。允许指定种子节点的实现,默认:org.apache.cassandra.locator.SeedProvider,这会从yaml文件中加载种子节点。
分区器:指定分区键如何排序。
Murmur3Partitioner,默认分区器,org.apache.cassandra.dht.Murmur3Partitioner,使用murmur3哈希算法生成token,使得分区键分布均匀随机。
RandomPartitioner,原来的默认分区器,使用加密hash,速度慢于murmur3,使用BigIntegerToken并应用MD5加密hash来确定分区键分布。
OrderPreservingPartitioner,有序分区器,token基于分区键的UTF-8字符串的排序,可以实现区间分片。会导致环不平衡,要经常使用nodetool loadbalance或者move操作。这样又会导致区间(多个分区键)查询并不比随机分区下的查询好多少。
ByteOrderedPartitioner,将数据处理为字节,根据字节去排序。

Snitch
endpoint_snitch可配置值:
org.apache.cassandra.locator.SimpleSnitch:没有机架感知策略,不适合多DC,副本策略只能选择SimpleStrategy。
org.apache.cassandra.locator.PropertyFileSnitch:使用cassandratopology.properties的标准java键/值属性文件来路由请求。副本策略设置NetworkTopologyStrategy。cassandra直接读文件确定节点在哪,发现节点时性能更高。
org.apache.cassandra.locator.GossipingPropertyFileSnitch:机架感知snitch。通过gossip交换机架和数据中心位置信息。使用cassandra-rackdc.properties文件定义,如果有cassandratopology.properties,也会使用。
org.apache.cassandra.locator.RackInferringSnitch:假定集群的节点按照一种一致的组网方案分布。比较各个节点IP的8位字节。如果第二个8位字节相同,认为在同一个DC。如果第三个8位字节的值相同,认为同一个机架。
云snitch:org.apache.cassandra.locator.Ec2Snitch和Ec2MultiRegionSnitch(Amazon EC2),org.apache.cassandra.locator.GoogleCloudSnitch,org.apache.cassandra.locator.CloudStackSnitch(Apache Cloudstack)
org.apache.cassandra.locator.DynamicEndPointSnitch:默认开启,包装上面选择的snitch。以下三个参数决定怎么动态snitch:dynamic_snitch_badness_threshold,dynamic_snitch_reset_interval_in_ms,dynamic_snitch_update_interval_in_ms

token:目前默认256,许多建议是32。我的使用经验是64。根据数据节点数,数量测试下最常用的模型的数据分布,确定的。
禁用虚拟节点:num_tokens设置为1,或者注释掉。同时设置initial_token.

网络配置:
listen_address(ip地址)和listen_interface(接口名比如eth0),2选1。
cassandra支持Thrift API(RPC),CQL(native transpot)。2.2之前,2个接口都支持,默认启用。3.0开始,默认禁用Thrift。CQL由start_native_transport来决定开启关闭,默认开启。
RPC端口,rpc_port,主要是Thrift 客户端使用。
rpc_keepalive,RPC和CQL都会用,默认为true,表示允许客户端保持长连接。
cassandra磁盘少了一个也可以保持运行。数据文件由disk_failure_policy决定,commitlog由commit_failure_policy决定。默认为stop,禁用客户端接口。
keyspace的durable_write:是否允许不写commitlog。默认为true,即写commitlog。
增加副本因子-->nodetool repair
减少副本因子-->nodetool clean
一般原则:写吞吐量=节点数除以副本因子。

cassandra权威指南读书笔记--配置cassadnra的更多相关文章

  1. cassandra权威指南读书笔记--性能调优

    cassandra自带测试工具cassandra-stress.nodetool proxyhistograms可以在多个节点运行,发现最慢的协调节点.nodetool tablehistograms ...

  2. cassandra权威指南读书笔记--客户端

    DataStax驱动最成熟.默认,驱动程序会使用第一个连接的节点作为支持的版本协议.如果集群存在高低版本的节点(比如升级场景),如果驱动先连接不同不同版本的节点,可能会出现不兼容.驱动支持压缩客户端和 ...

  3. cassandra权威指南读书笔记--安全

    认证和授权driver,JMX和cassandra服务器支持SSL/TLS,cassandra节点间也支持SSL/TLS.密码认证器cassandra还支持自定义,可插拔的认证机制.默认的认证器:or ...

  4. cassandra权威指南读书笔记--监控&维护

    cassandra SLF4J API记录日志,具体采用Logback实现.在终端启动cassandra时,可以向程序输入-f,就能在终端看到这个输出.Java Mangement Extension ...

  5. cassandra权威指南读书笔记--读写数据

    写cassandra除了轻量级事务,不支持别的事务.cassandra是追加写,写的速度非常快.cassandra还有hint日志,这个数据库总是可写的,而且单个列的写操作是原子的.hint并不是一定 ...

  6. cassandra权威指南读书笔记--Cassandra架构(3)

    分阶段事件驱动架构 SEDASEDA(Staged Event-Driven Architecture)的核心思想是把一个请求处理过程分成几个Stage,不同资源消耗的Stage使用不同数量的线程来处 ...

  7. cassandra权威指南读书笔记--Cassandra架构(2)

    环和令牌cassandra的数据管理是用一个环来表示.为环中的每个节点分配一or多个数据范围,用token描述.token由64位整数ID表示,范围-2^(63)~2^(63)-1.使用对分区键进行一 ...

  8. cassandra权威指南读书笔记--Cassandra架构(1)

    结构 集群-->数据中心-->机架-->节点. cassandra尽可能将数据副本存在多个数据中心,然后读取(查询路由到)尽可能在本地数据中心. 为了去中心化和分区容错性,使用gos ...

  9. cassandra权威指南读书笔记--数据建模

    没有join操作.有轻量级事务和批处理,但是没有外键等.反规范化.3.0支持物化视图,允许在一个表上创建数据的多个物化视图.使用cassandra要从查询入手,而不是先从数据模型开始.先对查询建模,然 ...

随机推荐

  1. 2020安徽程序设计省赛 G序列游戏

    2020安徽程序设计省赛 G序列游戏 有一个序列w,初始为空.再给出一个长度为m 单调递增的序列a.你需要对序列w 作如下n 次操作: (1)操作0,在序列尾部添加数字0. (2)操作1,在序列尾部添 ...

  2. spark使用idea向yarn提交报错:Exception in thread "main" java.lang.NoClassDefFoundError: com/sun/jersey/api/client/config/ClientConfig

    解决方法: 找到1.19版本放到spark的jars目录下

  3. SparkSql自定义数据源之读取的实现

    一.sparksql读取数据源的过程 1.spark目前支持读取jdbc,hive,text,orc等类型的数据,如果要想支持hbase或者其他数据源,就必须自定义 2.读取过程 (1)sparksq ...

  4. 进制及其字符串之间互转——C#

    本文介绍进制数转进制数,及每个进制对应的字符串 一.首先进制数转进制数(int-->int) 1.二进制数与十进制数互转: (1)二进制数转十进制数:还没找到 (2)十进制数转二进制数:目前还没 ...

  5. memcached的安装教程

    在windows系统上安装memcached 下载安装软件memcached-1.2.6-win32-bin.zip 解压该文件把memcached.exe 拷贝到你的 apache同一目录 安装该m ...

  6. 第8章 控制对象的访问(setter、getter、proxy)

    目录 1. 使用getter和setter控制属性访问 1.1 定义getter与setter 通过对象字面量定义,或在ES6的class中定义 通过使用内置的Object.definePropert ...

  7. Python 中的面向接口编程

    前言 "面向接口编程"写 Java 的朋友耳朵已经可以听出干茧了吧,当然这个思想在 Java 中非常重要,甚至几乎所有的编程语言都需要,毕竟程序具有良好的扩展性.维护性谁都不能拒绝 ...

  8. iptables原理及防火墙规则语法基础

     Iptables 防火墙 学习总结: 三张表介绍: filter负责过滤数据包,包括的规则链有,input(进),output(出)和forward(转发); nat则涉及到网络地址转换,包括的规则 ...

  9. 避免用using包装DbContext【翻译】

    EF和EF Core 的DbContext类实现IDisposable接口.因此,很多最佳编程实践中都建议你将它们放在一个using()块中.不幸的是,至少在Web应用程序中,这样做通常不是一个好主意 ...

  10. BDC应用

    第一步:SHDB或者是SM35进入BDC录制事务.开始录制. 第二部:保存录制的记录. 第三步:在你自己的程序中定义一个内表如:ITAB TYPE TABLE OF BDCDATA. 再定义一个工作空 ...