Cassandra配置文件中相關(guān)配置項詳解
Cassandra中所有的運行配置都是在配置文件cassandra.yaml中進行配置。
下面依次講解Cassandra中的配置項:
cluster_name
設(shè)置Cassandra集群的名稱。
在Cassandra集群中,每一臺服務(wù)器都必須具備相應(yīng)的集群的名稱。如果名稱不一致,則當前Cassandra服務(wù)器無法加入集群。
initial_token
Cassandra服務(wù)器的初始化Token值,這個值代表了Cassandra服務(wù)器在一致性哈希環(huán)中的位置。
當Cassandra第一次啟動的時候,會從該配置項中讀取,如果留空,將隨機生成一個Token值。如果Cassandra不是第一次啟動,將從系統(tǒng)表中讀取該Token值。
auto_bootstrap
第一次啟動的時候,是否在加入Cassandra集群時從其他服務(wù)器獲取屬于本服務(wù)器的數(shù)據(jù)。
如果當前Cassandra服務(wù)器不在seed配置選項中,并且是第一次啟動,將從Cassandra集群中其他服務(wù)器獲取屬于本服務(wù)器的數(shù)據(jù)。
hinted_handoff_enabled
是否開啟當前Cassandra服務(wù)器的HINT操作。
如果開啟該功能,Cassandra服務(wù)器將緩存發(fā)送給暫時失效的其他Cassandra服務(wù)器的數(shù)據(jù),等待失效的服務(wù)器恢復(fù)后,再將緩存的數(shù)據(jù)發(fā)送給恢復(fù)的服務(wù)器。
authenticator
驗證使用Cassandra的用戶是否合法,這是安全認證的第一步。
Cassandra中定義了一系列驗證用戶的策略,可以選擇的項為:
org.apache.cassandra.auth.AllowAllAuthenticator
所有的用戶都是合法的。
org.apache.cassandra.auth.SimpleAuthenticator
合法的用戶和對應(yīng)的密碼都在passwd.properties文件中定義。
authority
驗證該用戶是否具備操作某一個Column Family的權(quán)限,這是安全認證的第一步。
Cassandra中定義了一系列驗證用戶權(quán)限的策略,可以選擇的項為:
org.apache.cassandra.auth.AllowAllAuthority
所有的用戶具備所有的權(quán)限。
org.apache.cassandra.auth.SimpleAuthority
合法的用戶和對應(yīng)的權(quán)限都在access.properties文件中定義。
partitioner
Cassandra集群中數(shù)據(jù)分區(qū)的策略。
同一個Cassandra集群中的每一臺服務(wù)器中的該配置需要一致。
Cassandra中定義了一系列數(shù)據(jù)分區(qū)的策略,可以選擇的項為:
- org.apache.cassandra.dht.RandomPartitioner
- org.apache.cassandra.dht.ByteOrderedPartitioner
- org.apache.cassandra.dht.OrderPreservingPartitioner
- org.apache.cassandra.dht.CollatingOrderPreservingPartitioner
- data_file_directories
SSTable文件在磁盤中的存儲位置。
這個選項可以設(shè)置多個值,即如果服務(wù)器具有多個磁盤,可以將這幾個磁盤都指定為存儲SSTable文件的位置。如果可能,可以考慮將data_file_directories和commitlog_directory設(shè)置在不同的磁盤中,這樣有利于分散整體系統(tǒng)的磁盤I/O的壓力。
commitlog_directory
commitlog文件在磁盤中的存儲位置。
如果可能,可以考慮將data_file_directories和commitlog_directory設(shè)置在不同的磁盤中,這樣有利于分散整體系統(tǒng)的磁盤I/O的壓力。
saved_caches_directory
數(shù)據(jù)緩存文件在磁盤中的存儲位置。
commitlog_rotation_threshold_in_mb
每一個commitlog文件的大小。
commitlog_sync
記錄commitlog的方式。
可以選擇的項為:
periodic
周期記錄commitlog,每一次有數(shù)據(jù)更新都將操作commitlog。
batch
批量記錄commitlog,每一段時間內(nèi)數(shù)據(jù)的更新將批量一次操作commitlog。
commitlog_sync_period_in_ms
周期記錄commitlog時,刷新commitlog文件的時間間隔。這個選項只有在commitlog_sync= periodic時才能設(shè)置。
commitlog_sync_batch_window_in_ms
批量記錄commitlog時,批量操作緩存的時間間隔。這個選項只有在commitlog_sync= batch
時才能設(shè)置。
seeds
Cassandra集群中的種子節(jié)點地址
這個選項可以設(shè)置多個值,即Cassandra集群中有多個種子節(jié)點。
集群中所有的服務(wù)器在啟動的時候,都將于seed節(jié)點進行通信,從而獲取集群的相關(guān)信息。如果某一臺服務(wù)器被設(shè)置為seed節(jié)點,那么在啟動的時候,將自動加入集群,并且不會執(zhí)行Bootstrap的操作,即無法從集群的其他節(jié)點中獲取相應(yīng)的數(shù)據(jù)。
disk_access_mode
Cassandra訪問SSTable文件中的Data文件和Index文件時是否使用虛擬內(nèi)存映射的形式。
可以選擇的項為:
auto
自動選擇合適的文件訪問形式,如果是64位系統(tǒng),則為mmap形式,否則為standard形式。
mmap
訪問SSTable文件中的Data文件和Index文件時,都采用虛擬內(nèi)存映射的形式。
mmap_index_only
訪問SSTable文件中的Index文件時采用虛擬內(nèi)存映射的形式。
standard
訪問SSTable文件中的Data文件和Index文件時,都不采用虛擬內(nèi)存映射的形式。
使用虛擬內(nèi)存映射的形式訪問文件能夠加快對文件的讀寫速度,但是這是以消耗而外的內(nèi)存作為代價的。所以要根據(jù)實際內(nèi)存大小與文件大小來選擇合適的文件訪問方式。
concurrent_reads
并發(fā)讀取的線程數(shù)。
這個選項設(shè)置得越大,Cassandra在進行讀取操作時可以使用的線程數(shù)就越多。推薦的配置為:CPU的個數(shù)*2。
concurrent_writes
并發(fā)寫入的線程數(shù)。
這個選項設(shè)置得越大,Cassandra在進行寫入操作時可以使用的線程數(shù)就越多。
memtable_flush_writers
memtable中的數(shù)據(jù)寫入到磁盤成為SSTable文件的并發(fā)數(shù)。
這個選項的默認配置為data_file_directories中指定的目錄的個數(shù)。
sliced_buffer_size_in_kb
進行范圍讀取操作時,讀取SSTable文件使用的緩存大小。
storage_port
Cassandra集群中服務(wù)器與服務(wù)器之間相互通信的端口號。
listen_address
Cassandra集群中服務(wù)器與服務(wù)器之間相互通信的地址。如果留空,將默認使用服務(wù)器的機器名。
rpc_address
Cassandra服務(wù)器對外提供服務(wù)的地址。如果留空,將默認使用服務(wù)器的機器名。
rpc_port
Cassandra服務(wù)器對外提供服務(wù)的端口號。
rpc_keepalive
Cassandra服務(wù)器對外提供服務(wù)連接是否一直保持。
thrift_framed_transport_size_in_mb
使用Thrift Frame每次傳遞的數(shù)據(jù)大小。如果該選項為0,則禁用Thrift Frame。
thrift_max_message_length_in_mb
使用Thrift傳遞的數(shù)據(jù)最大值。
snapshot_before_compaction
Cassandra在執(zhí)行數(shù)據(jù)壓縮操作前,是否對需要壓縮的SSTable文件做數(shù)據(jù)快照(snapshot)。
binary_memtable_throughput_in_mb
binary memtable的緩存大小。
binary memtable用于大量數(shù)據(jù)的初始化操作。
column_index_size_in_kb
SSTable文件中的Data文件對應(yīng)Column索引的數(shù)據(jù)大小間隔。如果這個值越小,在Column索引中找到相應(yīng)的值速度就越快,但是會消耗更多的內(nèi)存與磁盤空間。
in_memory_compaction_limit_in_mb
在Cassandra執(zhí)行數(shù)據(jù)壓縮時,如果某一個key對應(yīng)的數(shù)據(jù)的大小超過了in_memory_compaction_limit_in_mb的限制,將采用延后壓縮的機制進行壓縮,避免使用過多的內(nèi)存。
rpc_timeout_in_ms
如果Cassandra服務(wù)器在處理外部請求的時候,如果超過了rpc_timeout_in_ms的限制,將拋出超時異常給調(diào)用的客戶端。
endpoint_snitch
Cassandra集群中網(wǎng)絡(luò)的選擇策略。
Cassandra中定義了一系列網(wǎng)絡(luò)的選擇策略,可以選擇的項為:
- org.apache.cassandra.locator.SimpleSnitch
- org.apache.cassandra.locator.RackInferringSnitch
- org.apache.cassandra.locator.PropertyFileSnitch
- dynamic_snitch
是否啟用動態(tài)的節(jié)點選擇策略。啟動該選項可以在做有效地避免相應(yīng)緩慢的節(jié)點。
和這個選項相關(guān)的其他選項為:
- dynamic_snitch_update_interval_in_ms
- dynamic_snitch_reset_interval_in_ms
- dynamic_snitch_badness_threshold
- request_scheduler
設(shè)置資源調(diào)度分配策略
Cassandra中定義了一系列網(wǎng)絡(luò)的選擇策略,可以選擇的項為:
org.apache.cassandra.scheduler.NoScheduler
所有的請求分配的計算資源都是均等的。
org.apache.cassandra.scheduler.RoundRobinScheduler
對不同的Keyspace分配不同的計算資源。
在多租戶的情況下適合使用RoundRobinScheduler。
index_interval
SSTable文件中的Index文件對應(yīng)內(nèi)存索引的數(shù)據(jù)大小間隔。如果這個值越小,在內(nèi)存索引中找到相應(yīng)的值速度就越快,但是會消耗更多的內(nèi)存。
keyspaces
定義Keyspace的屬性。
name:定義keyspace的名稱。
replica_placement_strategy:定義數(shù)據(jù)的備份策略,可選的項為:
- org.apache.cassandra.locator.SimpleStrategy
- org.apache.cassandra.locator.OldNetworkTopologyStrategy
- org.apache.cassandra.locator.NetworkTopologyStrategy
- org.apache.cassandra.locator.LocalStrategy
replication_factor:定義數(shù)據(jù)的備份數(shù)。
column_families:定義Column Family的屬性
column_type:定義Column Family的類型。可以設(shè)置為Super或者Standard,如果不設(shè)置,為Standard類型。
compare_with:Column名稱的排序規(guī)則。可選的項為:
- AsciiType
- UTF8Type
- LexicalUUIDType
- TimeUUIDType
- LongType
- IntegerType
compare_subcolumns_with:SuperColumn下的Column名稱的排序規(guī)則。可選的項為:
- AsciiType
- UTF8Type
- LexicalUUIDType
- TimeUUIDType
- LongType
- IntegerType
rows_cached:row緩存的數(shù)量,可以為整數(shù)或者百分比。
keys_cached:key緩存的數(shù)量,可以為整數(shù)或者百分比。
row_cache_save_period_in_seconds:定義Column Family中的持久化row緩存的時間間隔,如果為0,關(guān)閉持久化row緩存功能。
key_cache_save_period_in_seconds:定義Column Family中的持久化key緩存的時間間隔,如果為0,關(guān)閉持久化key緩存功能。
gc_grace_seconds:定義Column Family中數(shù)據(jù)標記為刪除后到真正進行物理刪除的時間間隔,如果不設(shè)置,默認為10天(864000秒)。
memtable_flush_after_mins:定義Column Family中memtable最大的生存時間。
memtable_throughput_in_mb:定義Column Family中memtable最大緩存的數(shù)據(jù)大小。
memtable_operations_in_millions:定義Column Family中memtable最大緩存的數(shù)據(jù)條數(shù)。
min_compaction_threshold:定義Column Family中執(zhí)行數(shù)據(jù)壓縮的最小SSTable文件數(shù)。
max_compaction_threshold:定義Column Family中執(zhí)行數(shù)據(jù)壓縮的最大SSTable文件數(shù)。
default_validation_class:定義Column Family中默認校驗值的類型規(guī)則。可選的項為:
- AsciiType
- UTF8Type
- LexicalUUIDType
- TimeUUIDType
- LongType
- IntegerType
column_metadata:定義二級索引的屬性。
name:定義需要進行二級索引的Column名稱。
validator_class:定義Column Family中校驗值的類型規(guī)則。可選的項為:
- AsciiType
- UTF8Type
- LexicalUUIDType
- TimeUUIDType
- LongType
- IntegerType
index_type:定義二級索引的類型,目前支持的選項為:KEYS
原文鏈接:http://www.cnblogs.com/gpcuster/archive/2010/11/12/1875388.html
【編輯推薦】