Cassandra配置文件中相关配置项详解

数据库
今天我们要介绍的是NoSQL数据库阵营中的Cassandra配置文件相关配置项,了解这些配置项的作用对于大家用好Cassandra有帮助。

Cassandra中所有的运行配置都是在配置文件cassandra.yaml中进行配置。

下面依次讲解Cassandra中的配置项:

cluster_name

设置Cassandra集群的名称。

在Cassandra集群中,每一台服务器都必须具备相应的集群的名称。如果名称不一致,则当前Cassandra服务器无法加入集群。

initial_token

Cassandra服务器的初始化Token值,这个值代表了Cassandra服务器在一致性哈希环中的位置。

当Cassandra第一次启动的时候,会从该配置项中读取,如果留空,将随机生成一个Token值。如果Cassandra不是第一次启动,将从系统表中读取该Token值。

auto_bootstrap

第一次启动的时候,是否在加入Cassandra集群时从其他服务器获取属于本服务器的数据。

如果当前Cassandra服务器不在seed配置选项中,并且是第一次启动,将从Cassandra集群中其他服务器获取属于本服务器的数据。

hinted_handoff_enabled

是否开启当前Cassandra服务器的HINT操作。

如果开启该功能,Cassandra服务器将缓存发送给暂时失效的其他Cassandra服务器的数据,等待失效的服务器恢复后,再将缓存的数据发送给恢复的服务器。

authenticator

验证使用Cassandra的用户是否合法,这是安全认证的第一步。

Cassandra中定义了一系列验证用户的策略,可以选择的项为:

org.apache.cassandra.auth.AllowAllAuthenticator

所有的用户都是合法的。

org.apache.cassandra.auth.SimpleAuthenticator

合法的用户和对应的密码都在passwd.properties文件中定义。

authority

验证该用户是否具备操作某一个Column Family的权限,这是安全认证的第一步。

Cassandra中定义了一系列验证用户权限的策略,可以选择的项为:

org.apache.cassandra.auth.AllowAllAuthority

所有的用户具备所有的权限。

org.apache.cassandra.auth.SimpleAuthority

合法的用户和对应的权限都在access.properties文件中定义。

partitioner

Cassandra集群中数据分区的策略。

同一个Cassandra集群中的每一台服务器中的该配置需要一致。

Cassandra中定义了一系列数据分区的策略,可以选择的项为:

  1. org.apache.cassandra.dht.RandomPartitioner  
  2. org.apache.cassandra.dht.ByteOrderedPartitioner  
  3. org.apache.cassandra.dht.OrderPreservingPartitioner  
  4. org.apache.cassandra.dht.CollatingOrderPreservingPartitioner  
  5. data_file_directories 

SSTable文件在磁盘中的存储位置。

这个选项可以设置多个值,即如果服务器具有多个磁盘,可以将这几个磁盘都指定为存储SSTable文件的位置。如果可能,可以考虑将data_file_directories和commitlog_directory设置在不同的磁盘中,这样有利于分散整体系统的磁盘I/O的压力。

commitlog_directory

commitlog文件在磁盘中的存储位置。

如果可能,可以考虑将data_file_directories和commitlog_directory设置在不同的磁盘中,这样有利于分散整体系统的磁盘I/O的压力。

saved_caches_directory

数据缓存文件在磁盘中的存储位置。

commitlog_rotation_threshold_in_mb

每一个commitlog文件的大小。

commitlog_sync

记录commitlog的方式。

可以选择的项为:

periodic

周期记录commitlog,每一次有数据更新都将操作commitlog。

batch

批量记录commitlog,每一段时间内数据的更新将批量一次操作commitlog。

commitlog_sync_period_in_ms

周期记录commitlog时,刷新commitlog文件的时间间隔。这个选项只有在commitlog_sync= periodic时才能设置。

commitlog_sync_batch_window_in_ms

批量记录commitlog时,批量操作缓存的时间间隔。这个选项只有在commitlog_sync= batch

时才能设置。

seeds

Cassandra集群中的种子节点地址

这个选项可以设置多个值,即Cassandra集群中有多个种子节点。

集群中所有的服务器在启动的时候,都将于seed节点进行通信,从而获取集群的相关信息。如果某一台服务器被设置为seed节点,那么在启动的时候,将自动加入集群,并且不会执行Bootstrap的操作,即无法从集群的其他节点中获取相应的数据。

disk_access_mode

Cassandra访问SSTable文件中的Data文件和Index文件时是否使用虚拟内存映射的形式。

可以选择的项为:

auto

自动选择合适的文件访问形式,如果是64位系统,则为mmap形式,否则为standard形式。

mmap

访问SSTable文件中的Data文件和Index文件时,都采用虚拟内存映射的形式。

mmap_index_only

访问SSTable文件中的Index文件时采用虚拟内存映射的形式。

standard

访问SSTable文件中的Data文件和Index文件时,都不采用虚拟内存映射的形式。

使用虚拟内存映射的形式访问文件能够加快对文件的读写速度,但是这是以消耗而外的内存作为代价的。所以要根据实际内存大小与文件大小来选择合适的文件访问方式。

concurrent_reads

并发读取的线程数。

这个选项设置得越大,Cassandra在进行读取操作时可以使用的线程数就越多。推荐的配置为:CPU的个数*2。

concurrent_writes

并发写入的线程数。

这个选项设置得越大,Cassandra在进行写入操作时可以使用的线程数就越多。

memtable_flush_writers

memtable中的数据写入到磁盘成为SSTable文件的并发数。

这个选项的默认配置为data_file_directories中指定的目录的个数。

sliced_buffer_size_in_kb

进行范围读取操作时,读取SSTable文件使用的缓存大小。

storage_port

Cassandra集群中服务器与服务器之间相互通信的端口号。

listen_address

Cassandra集群中服务器与服务器之间相互通信的地址。如果留空,将默认使用服务器的机器名。

rpc_address

Cassandra服务器对外提供服务的地址。如果留空,将默认使用服务器的机器名。

rpc_port

Cassandra服务器对外提供服务的端口号。

rpc_keepalive

Cassandra服务器对外提供服务连接是否一直保持。

thrift_framed_transport_size_in_mb

使用Thrift Frame每次传递的数据大小。如果该选项为0,则禁用Thrift Frame。

thrift_max_message_length_in_mb

使用Thrift传递的数据最大值。

snapshot_before_compaction

Cassandra在执行数据压缩操作前,是否对需要压缩的SSTable文件做数据快照(snapshot)。

binary_memtable_throughput_in_mb

binary memtable的缓存大小。

binary memtable用于大量数据的初始化操作。

column_index_size_in_kb

SSTable文件中的Data文件对应Column索引的数据大小间隔。如果这个值越小,在Column索引中找到相应的值速度就越快,但是会消耗更多的内存与磁盘空间。

in_memory_compaction_limit_in_mb

在Cassandra执行数据压缩时,如果某一个key对应的数据的大小超过了in_memory_compaction_limit_in_mb的限制,将采用延后压缩的机制进行压缩,避免使用过多的内存。

rpc_timeout_in_ms

如果Cassandra服务器在处理外部请求的时候,如果超过了rpc_timeout_in_ms的限制,将抛出超时异常给调用的客户端。

endpoint_snitch

Cassandra集群中网络的选择策略。

Cassandra中定义了一系列网络的选择策略,可以选择的项为:

  1. org.apache.cassandra.locator.SimpleSnitch  
  2. org.apache.cassandra.locator.RackInferringSnitch  
  3. org.apache.cassandra.locator.PropertyFileSnitch  
  4. dynamic_snitch 

是否启用动态的节点选择策略。启动该选项可以在做有效地避免相应缓慢的节点。

和这个选项相关的其他选项为:

  1. dynamic_snitch_update_interval_in_ms  
  2. dynamic_snitch_reset_interval_in_ms  
  3. dynamic_snitch_badness_threshold  
  4. request_scheduler 

设置资源调度分配策略

Cassandra中定义了一系列网络的选择策略,可以选择的项为:

org.apache.cassandra.scheduler.NoScheduler

所有的请求分配的计算资源都是均等的。

org.apache.cassandra.scheduler.RoundRobinScheduler

对不同的Keyspace分配不同的计算资源。

在多租户的情况下适合使用RoundRobinScheduler。

index_interval

SSTable文件中的Index文件对应内存索引的数据大小间隔。如果这个值越小,在内存索引中找到相应的值速度就越快,但是会消耗更多的内存。

keyspaces

定义Keyspace的属性。

name:定义keyspace的名称。

replica_placement_strategy:定义数据的备份策略,可选的项为:

  1. org.apache.cassandra.locator.SimpleStrategy  
  2. org.apache.cassandra.locator.OldNetworkTopologyStrategy  
  3. org.apache.cassandra.locator.NetworkTopologyStrategy  
  4. org.apache.cassandra.locator.LocalStrategy 

replication_factor:定义数据的备份数。

column_families:定义Column Family的属性

column_type:定义Column Family的类型。可以设置为Super或者Standard,如果不设置,为Standard类型。

compare_with:Column名称的排序规则。可选的项为:

  1. AsciiType  
  2. UTF8Type  
  3. LexicalUUIDType  
  4. TimeUUIDType  
  5. LongType  
  6. IntegerType 

compare_subcolumns_with:SuperColumn下的Column名称的排序规则。可选的项为:

  1. AsciiType  
  2. UTF8Type  
  3. LexicalUUIDType  
  4. TimeUUIDType  
  5. LongType  
  6. IntegerType 

rows_cached:row缓存的数量,可以为整数或者百分比。

keys_cached:key缓存的数量,可以为整数或者百分比。

row_cache_save_period_in_seconds:定义Column Family中的持久化row缓存的时间间隔,如果为0,关闭持久化row缓存功能。

key_cache_save_period_in_seconds:定义Column Family中的持久化key缓存的时间间隔,如果为0,关闭持久化key缓存功能。

gc_grace_seconds:定义Column Family中数据标记为删除后到真正进行物理删除的时间间隔,如果不设置,默认为10天(864000秒)。

memtable_flush_after_mins:定义Column Family中memtable最大的生存时间。

memtable_throughput_in_mb:定义Column Family中memtable最大缓存的数据大小。

memtable_operations_in_millions:定义Column Family中memtable最大缓存的数据条数。

min_compaction_threshold:定义Column Family中执行数据压缩的最小SSTable文件数。

max_compaction_threshold:定义Column Family中执行数据压缩的最大SSTable文件数。

default_validation_class:定义Column Family中默认校验值的类型规则。可选的项为:

  1. AsciiType  
  2. UTF8Type  
  3. LexicalUUIDType  
  4. TimeUUIDType  
  5. LongType  
  6. IntegerType 

column_metadata:定义二级索引的属性。

name:定义需要进行二级索引的Column名称。

validator_class:定义Column Family中校验值的类型规则。可选的项为:

  1. AsciiType  
  2. UTF8Type  
  3. LexicalUUIDType  
  4. TimeUUIDType  
  5. LongType  
  6. IntegerType 

index_type:定义二级索引的类型,目前支持的选项为:KEYS

原文链接:http://www.cnblogs.com/gpcuster/archive/2010/11/12/1875388.html

【编辑推荐】

  1. MongoDB CEO谈NoSQL的大数据量处理能力
  2. 抛弃关系数据库 PHP程序员应了解MongoDB的五件事
  3. MongoDB,无模式文档型数据库简介
  4. 关系数据库的末日是否已经来临
  5. 扔掉沉没成本 尝试关系数据库替代品OODBMS
责任编辑:彭凡 来源: 博客园
相关推荐

2010-12-09 10:21:26

Cassandra

2011-03-02 13:12:37

vsftpd配置

2009-07-09 15:55:18

WebWork配置文件

2020-04-09 13:23:29

Nginx配置文件模板

2009-12-21 11:19:50

WCF配置文件

2010-03-30 18:04:45

Nginx http服

2010-06-17 16:23:32

Grub2 配置

2009-08-13 09:58:55

C#读取配置文件

2009-06-05 10:35:02

struts.prop配置文件

2019-11-22 10:00:53

ICC配置文件Windows 10

2013-08-20 10:12:37

入侵检测系统ossec

2010-12-28 16:35:32

Outlook 配置文

2010-06-07 16:23:06

HadoopOnDem

2010-03-01 15:26:18

Linux配置文件

2011-01-13 16:27:26

Linux配置文件

2011-01-19 14:00:21

2010-03-02 15:28:51

Linux系统用户

2010-03-01 10:14:01

Linux usera

2009-06-05 10:52:45

struts2深入详解配置文件

2015-05-14 10:23:13

ElasticSear分布式搜索配置文件
点赞
收藏

51CTO技术栈公众号