forked from datastax/labs
-
Notifications
You must be signed in to change notification settings - Fork 0
/
cassandra.yaml
executable file
·1405 lines (1241 loc) · 67.4 KB
/
cassandra.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
# cassandra.yaml is the main storage configuration file for DataStax Enterprise (DSE).
# NOTE:
# See the DataStax Enterprise documentation at https://docs.datastax.com/
# /NOTE
# The name of the cluster. This is mainly used to prevent machines in
# one logical cluster from joining another.
cluster_name: 'Test Cluster'
# The number of tokens randomly assigned to this node on the ring.
# The higher the token count is relative to other nodes, the larger the proportion of data
# that this node will store. You probably want all nodes to have the same number
# of tokens assuming they have equal hardware capability.
#
# If not set, the default value is 1 token for backward compatibility
# and will use the initial_token as described below.
#
# Specifying initial_token will override this setting on the node's initial start.
# On subsequent starts, this setting will apply even if initial token is set.
#
# If you already have a cluster with 1 token per node, and want to migrate to
# multiple tokens per node, see http://wiki.apache.org/cassandra/Operations
# num_tokens: 128
# Triggers automatic allocation of num_tokens tokens for this node. The allocation
# algorithm attempts to choose tokens in a way that optimizes replicated load over
# the nodes in the datacenter for the specified DC-level replication factor.
#
# The load assigned to each node will be close to proportional to its number of
# vnodes.
#
# Supported only with the Murmur3Partitioner.
# allocate_tokens_for_local_replication_factor: 3
# initial_token allows you to specify tokens manually. To use with
# vnodes (num_tokens > 1, above), provide a
# comma-separated list of tokens. This option is primarily used when adding nodes to legacy clusters
# that do not have vnodes enabled.
# initial_token:
# See http://wiki.apache.org/cassandra/HintedHandoff
# True to enable globally, false to disable globally.
hinted_handoff_enabled: true
# When hinted_handoff_enabled is true, a black list of data centers that will not
# perform hinted handoff. Other datacenters not listed will perform hinted handoffs.
# hinted_handoff_disabled_datacenters:
# - DC1
# - DC2
# Maximum amount of time during which the database generates hints for an unresponsive node.
# After this interval, the database does not generate any new hints for the node until it is
# back up and responsive. If the node goes down again, the database starts a new interval. This setting
# can prevent a sudden demand for resources when a node is brought back online and the rest of the
# cluster attempts to replay a large volume of hinted writes.
max_hint_window_in_ms: 10800000 # 3 hours
# Maximum throttle in KBs per second per delivery thread. This will be
# reduced proportionally to the number of nodes in the cluster. If there
# are two nodes in the cluster, each delivery thread will use the maximum
# rate; if there are three, each will throttle to half of the maximum,
# since we expect two nodes to be delivering hints simultaneously.
hinted_handoff_throttle_in_kb: 1024
# Number of threads with which to deliver hints;
# Consider increasing this number when you have multi-dc deployments, since
# cross-dc handoff tends to be slower
max_hints_delivery_threads: 2
# Directory to store hints.
# If not set, the default directory is $DSE_HOME/data/hints.
hints_directory: /var/lib/cassandra/hints
# How often to flush hints from the internal buffers to disk.
# Will *not* trigger fsync.
hints_flush_period_in_ms: 10000
# Maximum size, in MB, for a single hints file.
max_hints_file_size_in_mb: 128
# Compression to apply to the hint files. If omitted, hints files
# will be written uncompressed. LZ4, Snappy, and Deflate compressors
# are supported.
#hints_compression:
# - class_name: LZ4Compressor
# parameters:
# -
# Maximum throttle in KBs per second, total. This will be
# reduced proportionally to the number of nodes in the cluster.
batchlog_replay_throttle_in_kb: 1024
# Strategy to choose the batchlog storage endpoints.
#
# Available options:
#
# - random_remote
# Default, purely random. Prevents the local rack, if possible. Same behavior as earlier releases.
#
# - dynamic_remote
# Uses DynamicEndpointSnitch to select batchlog storage endpoints. Prevents the
# local rack, if possible. This strategy offers the same availability guarantees
# as random_remote, but selects the fastest endpoints according to the DynamicEndpointSnitch.
# (DynamicEndpointSnitch tracks reads but not writes. Write-only,
# or mostly-write, workloads might not benefit from this strategy.
# Note: this strategy will fall back to random_remote if dynamic_snitch is not enabled.
#
# - dynamic
# Mostly the same as dynamic_remote, except that local rack is not excluded, which offers lower
# availability guarantee than random_remote or dynamic_remote.
# Note: this strategy will fall back to random_remote if dynamic_snitch is not enabled.
#
# batchlog_endpoint_strategy: random_remote
# DataStax Enterprise (DSE) provides the DseAuthenticator for external authentication
# with multiple authentication schemes such as Kerberos, LDAP, and internal authentication.
# Additional configuration is required in dse.yaml for enabling authentication.
# If using DseAuthenticator, DseRoleManager must also be used (see below).
#
# All other authenticators, including org.apache.cassandra.auth.{AllowAllAuthenticator,
# PasswordAuthenticator} are deprecated, and some security features may not work
# correctly if they are used.
authenticator: com.datastax.bdp.cassandra.auth.DseAuthenticator
# DataStax Enterprise (DSE) provides the DseAuthorizer which must be used in place
# of the CassandraAuthorizer if the DseAuthenticator is being used. It allows
# enhanced permission management of DSE specific resources.
# Additional configuration is required in dse.yaml for enabling authorization.
#
# All other authorizers, including org.apache.cassandra.auth.{AllowAllAuthorizer,
# CassandraAuthorizer} are deprecated, and some security features may not work
# correctly if they are used.
authorizer: com.datastax.bdp.cassandra.auth.DseAuthorizer
# DataStax Enterprise (DSE) provides the DseRoleManager that supports LDAP roles
# as well as the internal roles supported by CassandraRoleManager. The DseRoleManager
# stores role options in the dse_security keyspace.
# Please increase the dse_security keyspace replication factor when using this role
# manager. Additional configuration is required in dse.yaml.
#
# All other role managers, including CassandraRoleManager are deprecated, and some
# security features might not work correctly if they are used.
role_manager: com.datastax.bdp.cassandra.auth.DseRoleManager
# Whether to enable system keyspace filtering so that users can access and view
# only schema information for rows in the system and system_schema keyspaces to
# which they have access. Security requirements and user permissions apply.
# Enable this feature only after appropriate user permissions are granted.
#
# See Managing keyspace and table permissions at
# https://docs.datastax.com/en/dse/6.7/dse-admin/datastax_enterprise/security/secSystemKeyspaces.html
#
# Default: false
system_keyspaces_filtering: false
# Validity period for roles cache (fetching granted roles can be an expensive
# operation depending on the role manager)
# Granted roles are cached for authenticated sessions in AuthenticatedUser and
# after the period specified here, become eligible for (async) reload.
# Defaults to 120000, set to 0 to disable caching entirely.
# Will be disabled automatically if internal authentication is disabled
# when using DseAuthenticator.
roles_validity_in_ms: 120000
# Refresh interval for roles cache (if enabled).
# After this interval, cache entries become eligible for refresh. On next
# access, an async reload is scheduled and returns the old value until the reload
# completes. If roles_validity_in_ms is non-zero, then this value must be non-zero
# also.
# Defaults to the same value as roles_validity_in_ms.
# roles_update_interval_in_ms: 2000
# Validity period for permissions cache (fetching permissions can be an
# expensive operation depending on the authorizer).
# Defaults to 120000, set to 0 to disable.
# Will be disabled automatically if authorization is disabled when
# using DseAuthorizer.
permissions_validity_in_ms: 120000
# Refresh interval for permissions cache (if enabled).
# After this interval, cache entries become eligible for refresh. Upon next
# access, an async reload is scheduled and the old value returned until it
# completes. If permissions_validity_in_ms is non-zero, then this value must also be
# non-zero.
# Defaults to the same value as permissions_validity_in_ms.
# permissions_update_interval_in_ms: 2000
# The partitioner is responsible for distributing groups of rows (by
# partition key) across nodes in the cluster. You should leave this
# alone for new clusters. The partitioner can NOT be changed without
# reloading all data, so when upgrading you should set this to the
# same partitioner you were already using.
#
# Besides Murmur3Partitioner, partitioners included for backwards
# compatibility include RandomPartitioner, ByteOrderedPartitioner, and
# OrderPreservingPartitioner.
#
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
# Directories where the database should store data on disk. The data
# is spread evenly across the directories, subject to the granularity of
# the configured compaction strategy.
# If not set, the default directory is $DSE_HOME/data/data.
data_file_directories:
- /var/lib/cassandra/data
# Metadata directory that holds information about the cluster, local node and its peers.
# Currently, only a single subdirectory called 'nodes' will be used.
# If not set, the default directory is $CASSANDRA_HOME/data/metadata.
metadata_directory: /var/lib/cassandra/metadata
# Commit log directory. When running on magnetic HDD, this directory should be on a
# separate spindle than the data directories.
# If not set, the default directory is $DSE_HOME/data/commitlog.
commitlog_directory: /var/lib/cassandra/commitlog
# Whether to enable CDC functionality on a per-node basis. CDC functionality modifies the logic used
# for write path allocation rejection. When false (standard behavior), never reject. When true (use cdc functionality),
# reject mutation that contains a CDC-enabled table if at space limit threshold in cdc_raw_directory.
cdc_enabled: true
# CommitLogSegments are moved to this directory on flush if cdc_enabled: true and the
# segment contains mutations for a CDC-enabled table. This directory should be placed on a
# separate spindle than the data directories. If not set, the default directory is
# $DSE_HOME/data/cdc_raw.
cdc_raw_directory: /var/lib/cassandra/cdc_raw
# Policy for data disk failures:
#
# die
# shut down gossip and client transports and kill the JVM for any fs errors or
# single-sstable errors, so the node can be replaced.
#
# stop_paranoid
# shut down gossip and client transports even for single-sstable errors,
# kill the JVM for errors during startup.
#
# stop
# shut down gossip and client transports, leaving the node effectively dead, but
# can still be inspected via JMX, kill the JVM for errors during startup.
#
# best_effort
# stop using the failed disk and respond to requests based on
# remaining available sstables. This means you WILL see obsolete
# data at CL.ONE!
#
# ignore
# ignore fatal errors and let requests fail, as in pre-1.2 Cassandra
disk_failure_policy: stop
# Policy for commit disk failures:
#
# die
# shut down the node and kill the JVM, so the node can be replaced.
#
# stop
# shut down the node, leaving the node effectively dead, node
# can still be inspected via JMX.
#
# stop_commit
# shutdown the commit log, letting writes collect but
# continuing to service reads, as in pre-2.0.5 Cassandra
#
# ignore
# ignore fatal errors and let the batches fail
commit_failure_policy: stop
# Maximum size of the native protocol prepared statement cache.
#
# Note that specifying a too large value will result in long running GCs and possbily
# out-of-memory errors. Keep the value at a small fraction of the heap.
#
# If you constantly see "prepared statements discarded in the last minute because
# cache limit reached" messages, the first step is to investigate the root cause
# of these messages and check whether prepared statements are used correctly -
# i.e. use bind markers for variable parts.
#
# Change the default value only if there are more prepared statements than
# fit in the cache. In most cases, it is not neccessary to change this value.
# Constantly re-preparing statements is a performance penalty.
#
# Valid value is a number greater than 0. When not set, the default is calculated.
#
# The default calculated value is 1/256th of the heap or 10 MB, whichever is greater.
prepared_statements_cache_size_mb:
# Row cache implementation class name. Available implementations:
#
# org.apache.cassandra.cache.OHCProvider
# Fully off-heap row cache implementation (default).
#
# org.apache.cassandra.cache.SerializingCacheProvider
# This is the row cache implementation availabile
# in previous releases of Cassandra.
# row_cache_class_name: org.apache.cassandra.cache.OHCProvider
# Maximum size of the row cache in memory.
# OHC cache implementation requires additional off-heap memory to manage
# the map structures and additional in-flight memory during operations before/after cache entries can be
# accounted against the cache capacity. This overhead is usually small compared to the whole capacity.
# Do not specify more memory that the system can afford in the worst usual situation and leave some
# headroom for OS block level cache. Never allow your system to swap.
#
# Default value is 0 to disable row caching.
row_cache_size_in_mb: 0
# Duration in seconds after which the database should save the row cache.
# Caches are saved to saved_caches_directory as specified in this configuration file.
#
# Saved caches greatly improve cold-start speeds, and is relatively cheap in
# terms of I/O for the key cache. Row cache saving is much more expensive and
# has limited use.
#
# Default is 0 to disable saving the row cache.
row_cache_save_period: 0
# Number of keys from the row cache to save.
# Specify 0 (which is the default), meaning all keys are going to be saved
# row_cache_keys_to_save: 100
# Maximum size of the counter cache in memory.
#
# Counter cache helps to reduce counter locks' contention for hot counter cells.
# In case of RF = 1 a counter cache hit will cause the database to skip the read before
# write entirely. With RF > 1 a counter cache hit will still help to reduce the duration
# of the lock hold, helping with hot counter cell updates, but will not allow skipping
# the read entirely. Only the local (clock, count) tuple of a counter cell is kept
# in memory, not the whole counter, so it's relatively cheap.
#
# NOTE: if you reduce the size, you might not get the hottest keys loaded on startup.
#
# When not set, the default value is calculated (min(2.5% of Heap (in MB), 50MB)).
# Set to 0 to disable counter cache.
# NOTE: if you perform counter deletes and rely on low gcgs, you should disable the counter cache.
counter_cache_size_in_mb:
# Duration in seconds after which the database should
# save the counter cache (keys only). Caches are saved to saved_caches_directory as
# specified in this configuration file.
#
# Default is 7200 (2 hours).
counter_cache_save_period: 7200
# Number of keys from the counter cache to save.
# Disabled by default. When commented out (disabled), all keys are saved.
# counter_cache_keys_to_save: 100
# Saved caches directory.
# If not set, the default directory is $DSE_HOME/data/saved_caches.
saved_caches_directory: /var/lib/cassandra/saved_caches
# commitlog_sync
# Valid commitlog_sync values are periodic, group, or batch.
#
# When in batch mode, the database won't ack writes until the commit log
# has been flushed to disk. Each incoming write will trigger the flush task.
# commitlog_sync_batch_window_in_ms is a deprecated value. Previously it had
# almost no value, and is being removed.
#
# commitlog_sync_batch_window_in_ms: 2
#
# group mode is similar to batch mode, where the database will not ack writes
# until the commit log has been flushed to disk. The difference is group
# mode will wait up to commitlog_sync_group_window_in_ms between flushes.
#
# commitlog_sync_group_window_in_ms: 1000
#
# The default is periodic. When in periodic mode, writes can be acked immediately
# and the CommitLog is simply synced every commitlog_sync_period_in_ms.
commitlog_sync: periodic
commitlog_sync_period_in_ms: 500
# The size of the individual commitlog file segments. A commitlog
# segment can be archived, deleted, or recycled after all the data
# in it (potentially from each table in the system) has been
# flushed to sstables.
#
# The default size is 32, which is almost always fine, but if you are
# archiving commitlog segments (see commitlog_archiving.properties),
# then you probably want a finer granularity of archiving; 8 or 16 MB
# is reasonable.
# Max mutation size is also configurable via max_mutation_size_in_kb setting in
# cassandra.yaml. When max_mutation_size_in_kb is not set, the calculated default is half the size
# commitlog_segment_size_in_mb * 1024. This value should be positive and less than 2048.
#
# NOTE: If max_mutation_size_in_kb is set explicitly, then commitlog_segment_size_in_mb must
# be set to at least twice the size of max_mutation_size_in_kb / 1024
#
commitlog_segment_size_in_mb: 32
# Compression to apply to the commit log.
# When not set, the default compression for the commit log is uncompressed.
# LZ4, Snappy, and Deflate compressors are supported.
# commitlog_compression:
# - class_name: LZ4Compressor
# parameters:
# -
# Any class that implements the SeedProvider interface and has a
# constructor that takes a Map<String, String> of parameters is valid.
seed_provider:
# Addresses of hosts that are deemed contact points.
# Database nodes use this list of hosts to find each other and learn
# the topology of the ring. You _must_ change this if you are running
# multiple nodes!
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
parameters:
# seeds is actually a comma-delimited list of addresses.
# Ex: "<ip1>,<ip2>,<ip3>"
- seeds: "127.0.0.1"
# Maximum memory used for file buffers that are stored in the file cache, also
# known as the chunk cache. This is used as a cache that holds uncompressed
# sstable chunks, potentially for a very long time (until the sstable is obsoleted
# by compaction or until the data is evicted by the cache).
# When not set, the default is calculated as 1/4 of (system RAM - max heap).
# This pool is allocated off-heap but the chunk cache also has on-heap overhead
# which is roughly 120 bytes per entry.
# Memory is allocated only when needed but is not released.
# file_cache_size_in_mb: 4096
# In addition to buffers stored in the file cache, buffers are also used for transient
# operations such as reading sstables (when the data to be read is larger than the file cache buffer size),
# reading hints or CRC files. Buffers used for such operations are kept in memory
# in order to avoid continuous allocations, up to this limit.
# A buffer is typically used by a read operation and then returned to this pool when the operation is finished
# so that it can be reused by other operations.
# When not set the default is 2M per core plus 2M for all other threads capped at 128 MiB.
# Memory is allocated only when needed but is not released.
# direct_reads_size_in_mb: 128
# The strategy for optimizing disk read.
# Possible values are:
# ssd (for solid state disks, the default). When not set, the default is ssd.
# spinning (for spinning disks)
# disk_optimization_strategy: ssd
# Total permitted memory to use for memtables. The database will stop
# accepting writes when the limit is exceeded until a flush completes,
# and will trigger a flush based on memtable_cleanup_threshold
# If omitted, the calculated value is 1/4 the size of the heap.
# memtable_space_in_mb: 2048
# Ratio of occupied non-flushing memtable size to total permitted size
# that will trigger a flush of the largest memtable. Larger mct will
# mean larger flushes and hence less compaction, but also less concurrent
# flush activity which can make it difficult to keep your disks fed
# under heavy write load.
#
# memtable_cleanup_threshold defaults to max(0.15, 1 / (memtable_flush_writers + 1))
# memtable_cleanup_threshold: 0.15
# Specify the way the database allocates and manages memtable memory.
# Options are:
#
# heap_buffers
# on heap nio buffers
#
# offheap_buffers
# off heap (direct) nio buffers
#
# offheap_objects
# off heap objects
memtable_allocation_type: offheap_objects
# Disk usage threshold that will trigger the database to reclaim some space
# used by the commit log files.
#
# If the commit log disk usage exceeds this threshold, the database will flush
# every dirty table in the oldest segment and remove it. So a small total
# commitlog space will cause more flush activity on less-active
# tables.
#
# The default value is the smaller of 8192, and 1/4 of the total space
# of the commitlog volume.
#
# The database will still write commit logs while it reclaims space
# from previous commit logs. Therefore, the total disk space "reserved"
# for the commit log should be _at least_ 25% bigger than the value of the
# commitlog_total_space_in_mb configuration parameter. The actual
# value depends on the write workload.
#
# commitlog_total_space_in_mb: 8192
# The number of memtable flush writer threads per disk and
# the total number of memtables that can be flushed concurrently.
# These are generally a combination of compute and IO bound.
#
# Memtable flushing is more CPU efficient than memtable ingest and a single thread
# can keep up with the ingest rate of a whole server on a single fast disk
# until it temporarily becomes IO bound under contention typically with compaction.
# At that point you need multiple flush threads. At some point in the future
# it may become CPU bound all the time.
#
# You can tell if flushing is falling behind using the MemtablePool.BlockedOnAllocation
# metric, which should be 0. A non-zero metric occurs if threads are blocked waiting on flushing
# to free memory.
#
# memtable_flush_writers defaults to 8, and this means 8 Memtables can be flushed concurrently
# to a single data directory.
#
# There is a direct tradeoff between number of memtables that can be flushed concurrently
# and flush size and frequency. More is not better you just need enough flush writers
# to never stall waiting for flushing to free memory.
#
# memtable_flush_writers: 8
# Total space to use for change-data-capture logs on disk.
#
# If space gets above this value, the database will throw WriteTimeoutException
# on mutations including CDC-enabled tables. A CDCCompactor is responsible
# for parsing the raw CDC logs and deleting them when parsing is completed.
#
# The default value is calculated as the min of 4096 mb and 1/8th of the total space
# of the drive where cdc_raw_directory resides.
# cdc_total_space_in_mb: 4096
# When the cdc_raw limit is reached and the CDCCompactor is running behind
# or experiencing backpressure, we check at the following interval to see if any
# new space for cdc-tracked tables has been made available. Default to 250ms
# cdc_free_space_check_interval_ms: 250
# Whether to enable periodic fsync() when doing sequential writing. When enabled, fsync() at intervals
# force the operating system to flush the dirty
# buffers. Enable to avoid sudden dirty buffer flushing from
# impacting read latencies. Almost always a good idea on SSDs; not
# necessarily on platters.
trickle_fsync: true
trickle_fsync_interval_in_kb: 10240
# TCP port, for commands and data.
# For security reasons, you should not expose this port to the internet. Firewall it if needed.
storage_port: 7000
# SSL port, for encrypted communication. Unused unless enabled in
# encryption_options
# For security reasons, you should not expose this port to the internet. Firewall it if needed.
ssl_storage_port: 7001
# Address or interface to bind to and tell other nodes to connect to.
# You _must_ change this address or interface to enable multiple nodes to communicate!
#
# Set listen_address OR listen_interface, not both.
#
# When not set (blank), InetAddress.getLocalHost() is used. This
# will always do the Right Thing _if_ the node is properly configured
# (hostname, name resolution, etc), and the Right Thing is to use the
# address associated with the hostname (it might not be).
#
# Setting listen_address to 0.0.0.0 is always wrong.
#
listen_address: localhost
# Set listen_address OR listen_interface, not both. Interfaces must correspond
# to a single address. IP aliasing is not supported.
#listen_interface: wlan0
# If you specify the interface by name and the interface has an ipv4 and an ipv6 address,
# specify which address.
# If false, the first ipv4 address will be used.
# If true, the first ipv6 address will be used.
# When not set, the default is false (ipv4).
# If there is only one address, that address is selected regardless of ipv4/ipv6.
# listen_interface_prefer_ipv6: false
# Address to broadcast to other database nodes.
# Leaving this blank will set it to the same value as listen_address
# broadcast_address: 1.2.3.4
# When using multiple physical network interfaces, set this
# to true to listen on broadcast_address in addition to
# the listen_address, allowing nodes to communicate in both
# interfaces.
# Do not set this property if the network configuration automatically
# routes between the public and private networks such as EC2.
# listen_on_broadcast_address: false
# Internode authentication backend, implementing IInternodeAuthenticator;
# used to allow/disallow connections from peer nodes.
# internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
# Whether to start the native transport server.
# The address on which the native transport is bound is defined by native_transport_address.
start_native_transport: true
# The port where the CQL native transport listens for clients.
# For security reasons, do not expose this port to the internet. Firewall it if needed.
native_transport_port: 9042
# Enabling native transport encryption in client_encryption_options allows you to use
# encryption for the standard port or use a dedicated, additional port along with the unencrypted
# standard native_transport_port.
# If client encryption is enabled and native_transport_port_ssl is disabled, the
# native_transport_port (default: 9042) will encrypt all traffic. To use both unencrypted and encrypted
# traffic, enable native_transport_port_ssl.
# native_transport_port_ssl: 9142
#
# The maximum size of allowed frame. Frame (requests) larger than this will
# be rejected as invalid. The default is 256 MB. If you're changing this parameter,
# you may want to adjust max_value_size_in_mb accordingly. This should be positive and less than 2048.
# native_transport_max_frame_size_in_mb: 256
# The maximum number of concurrent client connections.
# The default is -1, which means unlimited.
# native_transport_max_concurrent_connections: -1
# The maximum number of concurrent client connections per source ip.
# The default is -1, which means unlimited.
# native_transport_max_concurrent_connections_per_ip: -1
# Controls whether Cassandra honors older protocol versions
# The default is true, which means older protocols will be honored.
native_transport_allow_older_protocols: true
# The address or interface to bind the native transport server to.
#
# Set native_transport_address OR native_transport_interface, not both.
#
# Leaving native_transport_address blank has the same effect as on listen_address
# (i.e. it will be based on the configured hostname of the node).
#
# Note that unlike listen_address, you can specify 0.0.0.0, but you must also
# set native_transport_broadcast_address to a value other than 0.0.0.0.
#
# For security reasons, you should not expose this port to the internet. Firewall it if needed.
native_transport_address: localhost
# Set native_transport_address OR native_transport_interface, not both. Interfaces must correspond
# to a single address, IP aliasing is not supported.
# native_transport_interface: eth0
# If you specify the interface by name and the interface has an ipv4 and an ipv6 address,
# specify which address.
# If false, the first ipv4 address will be used.
# If true, the first ipv6 address will be used.
# When not set, the default is false (ipv4).
# If there is only one address, that address is selected regardless of ipv4/ipv6.
# native_transport_interface_prefer_ipv6: false
# Native transport address to broadcast to drivers and other nodes.
# Do not set to 0.0.0.0. If left blank, this will be set to the value of
# native_transport_address. If native_transport_address is set to 0.0.0.0, native_transport_broadcast_address must
# be set.
# native_transport_broadcast_address: 1.2.3.4
# enable or disable keepalive on native connections
native_transport_keepalive: true
# Uncomment to set socket buffer size for internode communication.
# Note that when setting this, the buffer size is limited by net.core.wmem_max
# and when not setting it, the buffer size is defined by net.ipv4.tcp_wmem
# See also:
# /proc/sys/net/core/wmem_max
# /proc/sys/net/core/rmem_max
# /proc/sys/net/ipv4/tcp_wmem
# /proc/sys/net/ipv4/tcp_wmem
# and 'man tcp'
# internode_send_buff_size_in_bytes:
# Uncomment to set socket buffer size for internode communication.
# Note that when setting this value, the buffer size is limited by net.core.wmem_max
# and when not setting this value, the buffer size is defined by net.ipv4.tcp_wmem
# internode_recv_buff_size_in_bytes:
# Whether to create a hard link to each SSTable
# flushed or streamed locally in a backups/ subdirectory of the
# keyspace data. Incremental backups enable storing backups off site without transferring entire
# snapshots. The database does not automatically clear incremental backup files.
# DataStax recommends setting up a process to clear incremental backup hard links each time a new snapshot is created.
incremental_backups: false
# Whether to enable snapshots before each compaction.
# Be careful using this option, since the database won't clean up the
# snapshots for you. A snapshot is useful to back up data when there is a data format change.
snapshot_before_compaction: false
# Whether to enable snapshots of the data before truncating a keyspace or
# dropping a table. To prevent data loss, DataStax strongly advises using the default
# setting. If you set auto_snapshot to false, you lose data on truncation or drop.
auto_snapshot: true
# Granularity of the collation index of rows within a partition.
# Smaller granularity means better search times, especially if
# the partition is in disk cache, but also higher size of the
# row index and the associated memory cost for keeping that cached.
# The performance of lower density nodes may benefit from decreasing
# this number to 4, 2 or 1kb.
column_index_size_in_kb: 16
# Threshold for the total size of all index entries for a partition that the database
# stores in the partition key cache. If the total size of all index entries for a partition
# exceeds this amount, the database stops putting entries for this partition into the partition
# key cache.
#
# Note that this size refers to the size of the
# serialized index information and not the size of the partition.
column_index_cache_size_in_kb: 2
# Number of simultaneous compactions allowed to run simultaneously, NOT including
# validation "compactions" for anti-entropy repair. Simultaneous
# compactions help preserve read performance in a mixed read/write
# workload by limiting the number of small SSTables that accumulate
# during a single long running compaction. When not set, the calculated default is usually
# fine. If you experience problems with compaction running too
# slowly or too fast, you should first review the
# compaction_throughput_mb_per_sec option.
#
# The calculated default value for concurrent_compactors defaults to the smaller of (number of disks,
# number of cores), with a minimum of 2 and a maximum of 8.
#
# If your data directories are backed by SSD, increase this
# to the number of cores.
#concurrent_compactors: 1
# Number of simultaneous repair validations to allow. Default is unbounded
# Values less than one are interpreted as unbounded (the default)
# concurrent_validations: 0
# Number of simultaneous materialized view builder tasks to allow.
concurrent_materialized_view_builders: 2
# Number of permitted concurrent lightweight transactions.
# A higher number might improve throughput if non-contending LWTs are in heavy use,
# but will use more memory and may fare worse with contention.
#
# The default value (equal to eight times the number of TPC cores) should be
# good enough for most cases.
# concurrent_lw_transactions: 128
# Maximum number of LWTs that can be queued up before the node starts reporting
# OverloadedException for LWTs.
# max_pending_lw_transactions: 10000
# Throttles compaction to the specified total throughput across the entire
# system. The faster you insert data, the faster you need to compact in
# order to keep the SSTable count down. In general, setting this to
# 16 to 32 times the rate you are inserting data is more than sufficient.
# Set to 0 to disable throttling. Note that this throughput applies for all types
# of compaction, including validation compaction.
compaction_throughput_mb_per_sec: 16
# The size of the SSTables to trigger preemptive opens. The compaction process opens
# SSTables before they are completely written and uses them in place
# of the prior SSTables for any range previously written. This process helps
# to smoothly transfer reads between the SSTables by reducing page cache churn and keeps hot rows hot.
#
# Setting this to a low value will negatively affect performance
# and eventually cause huge heap pressure and a lot of GC activity.
# The "optimal" value depends on the hardware and workload.
#
# Values <= 0 will disable this feature.
sstable_preemptive_open_interval_in_mb: 50
# With pick_level_on_streaming set to true, streamed-in sstables of tables using
# LCS (leveled comaction strategy) will be placed in the same level as on the
# source node (up-leveling may happen though).
#
# The previous behavior, and with pick_level_on_streaming set to false, the
# incoming sstables are placed in level 0.
#
# For operational tasks like 'nodetool refresh' or replacing a node, setting
# pick_level_on_streaming to true can save a lot of compaction work.
#
# Default is true
# pick_level_on_streaming: true
# When enabled, permits Cassandra to zero-copy stream entire eligible
# SSTables between nodes, including every component.
# This speeds up the network transfer significantly subject to
# throttling specified by stream_throughput_outbound_megabits_per_sec.
# Enabling this will reduce the GC pressure on sending and receiving node.
# When unset, the default is enabled. While this feature tries to keep the
# disks balanced, it cannot guarantee it. This feature will be automatically
# disabled if internode encryption is enabled. Currently this can be used with
# Leveled Compaction. Once CASSANDRA-14586 is fixed other compaction strategies
# will benefit as well when used in combination with CASSANDRA-6696.
#
# stream_entire_sstables: true
# Throttle, in megabits per seconds, for the throughput of all outbound streaming file transfers
# on a node. The database does mostly sequential I/O when streaming data during
# bootstrap or repair which can saturate the network connection and degrade
# client (RPC) performance. When not set, the value is 200 Mbps (25 MB/s).
# stream_throughput_outbound_megabits_per_sec: 200
# Throttle for all streaming file transfers between the datacenters,
# this setting allows users to throttle inter dc stream throughput in addition
# to throttling all network stream traffic as configured with
# stream_throughput_outbound_megabits_per_sec.
# When unset, the default is 200 Mbps (25 MB/s).
# inter_dc_stream_throughput_outbound_megabits_per_sec: 200
# How long the coordinator should wait for read operations to complete.
# Lowest acceptable value is 10 ms. This timeout does not apply to
# aggregated queries such as SELECT COUNT(*), MIN(x), etc.
read_request_timeout_in_ms: 5000
# How long the coordinator should wait for seq or index scans to complete.
# Lowest acceptable value is 10 ms. This timeout does not apply to
# aggregated queries such as SELECT COUNT(*), MIN(x), etc.
range_request_timeout_in_ms: 10000
# How long the coordinator should wait for aggregated read operations to complete,
# such as SELECT COUNT(*), MIN(x), etc.
aggregated_request_timeout_in_ms: 120000
# How long the coordinator should wait for writes to complete.
# Lowest acceptable value is 10 ms.
write_request_timeout_in_ms: 2000
# How long the coordinator should wait for counter writes to complete.
# Lowest acceptable value is 10 ms.
counter_write_request_timeout_in_ms: 5000
# How long a coordinator should continue to retry a CAS operation
# that contends with other proposals for the same row.
# Lowest acceptable value is 10 ms.
cas_contention_timeout_in_ms: 1000
# How long the coordinator should wait for truncates to complete
# The long default value allows the database to take a snapshot before removing the data.
# If auto_snapshot is disabled (not recommended), you can reduce this time.
# Lowest acceptable value is 10 ms.
truncate_request_timeout_in_ms: 60000
# The default timeout for other, miscellaneous operations.
# Lowest acceptable value is 10 ms.
request_timeout_in_ms: 10000
# Additional RTT latency between DCs applied to cross dc request. Set this property only when
# cross dc network latency is high. Value must be non-negative.
# Set this value to 0 to apply no additional RTT latency. When unset, the default is 0.
# cross_dc_rtt_in_ms: 0
# How long before a node logs slow queries. SELECT queries that exceed
# this timeout will generate an aggregated log message to identify slow queries.
# Set this value to zero to disable slow query logging.
slow_query_log_timeout_in_ms: 500
# Whether to enable operation timeout information exchange between nodes to accurately
# measure request timeouts. If disabled, replicas will assume that requests
# were forwarded to them instantly by the coordinator. During overload conditions this means extra
# time is required for processing already-timed-out requests.
#
# Warning: Before enabling this property make sure that NTP (network time protocol) is installed
# and the times are synchronized between the nodes.
cross_node_timeout: false
# Interval to send keep-alive messages. The stream session fails when a keep-alive message
# is not received for 2 keep-alive cycles. When unset, the default is 300 seconds (5 minutes)
# so that a stalled stream times out in 10 minutes (2 cycles).
# streaming_keep_alive_period_in_secs: 300
# Maximum number of connections per host for streaming.
# Increase this when you notice that joins are CPU-bound rather that network-
# bound. For example, a few nodes with large files.
# streaming_connections_per_host: 1
# The sensitivity of the failure detector on an exponential scale. Generally, this setting
# does not need adjusting. phi value that must be reached for a host to be marked down.
# When unset, the internal value is 8.
# phi_convict_threshold: 8
# When a tcp connection to another node is established, cassandra sends an echo
# request to see if the connection is actually usable. If an echo reply is not
# heard after this many tries, the connection will be destroyed and
# reestablished to try again. Each attempt roughly translates to 1 second.
#
# echo_attempts_before_reset: 10
# endpoint_snitch -- A class that implements the IEndpointSnitch interface. The database uses the
# snitch to locate nodes and route requests. Use only snitch implementations that are bundled with DSE.
#
# THE DATABASE WILL NOT ALLOW YOU TO SWITCH TO AN INCOMPATIBLE SNITCH
# AFTER DATA IS INSERTED INTO THE CLUSTER. This would cause data loss.
# This means that if you start with the default SimpleSnitch, which
# locates every node on "rack1" in "datacenter1", your only options
# if you need to add another datacenter are GossipingPropertyFileSnitch
# (and the older PFS). From there, if you want to migrate to an
# incompatible snitch like Ec2Snitch you can do it by adding new nodes
# under Ec2Snitch (which will locate them in a new "datacenter") and
# decommissioning the old nodes.
#
# Supported snitches from Cassandra:
#
# SimpleSnitch:
# Treats Strategy order as proximity. This can improve cache
# locality when disabling read repair. Appropriate only for
# single-datacenter deployments.
#
# GossipingPropertyFileSnitch
# This should be your go-to snitch for production use. The rack
# and datacenter for the local node are defined in
# cassandra-rackdc.properties and propagated to other nodes via
# gossip. For migration from the PropertyFileSnitch, uses the cassandra-topology.properties
# file if it is present.
#
# PropertyFileSnitch:
# Proximity is determined by rack and data center, which are
# explicitly configured in cassandra-topology.properties.
#
# Ec2Snitch:
# Appropriate for EC2 deployments in a single Region. Loads Region
# and Availability Zone information from the EC2 API. The Region is
# treated as the datacenter, and the Availability Zone as the rack.
# Only private IPs are used, so this will not work across multiple
# Regions.
#
# Ec2MultiRegionSnitch:
# Uses public IPs as broadcast_address to allow cross-region
# connectivity. This means you must also set seed addresses to the public
# IP and open the storage_port or
# ssl_storage_port on the public IP firewall. For intra-Region
# traffic, the database will switch to the private IP after
# establishing a connection.
#
# RackInferringSnitch:
# Proximity is determined by rack and data center, which are
# assumed to correspond to the 3rd and 2nd octet of each node's IP
# address, respectively. Unless this happens to match your
# deployment conventions, this is best used as an example of
# writing a custom Snitch class and is provided in that spirit.
#
# DataStax Enterprise (DSE) provides:
#
# com.datastax.bdp.snitch.DseSimpleSnitch:
# Proximity is determined by DSE workload, which places transactional,
# Analytics, and Search nodes into their separate datacenters.
# Appropriate only for Development deployments.
#
endpoint_snitch: com.datastax.bdp.snitch.DseSimpleSnitch
# How often to perform the more expensive part of host score
# calculation. Use care when reducing this interval, score calculation is CPU intensive.
dynamic_snitch_update_interval_in_ms: 100
# How often to reset all host scores, allowing a bad host to
# possibly recover.
dynamic_snitch_reset_interval_in_ms: 600000
# if set greater than zero, this will allow
# 'pinning' of replicas to hosts in order to increase cache capacity.
# The badness threshold will control how much worse the pinned host has to be
# before the dynamic snitch will prefer other replicas over it. This is
# expressed as a double which represents a percentage. Thus, a value of
# 0.2 means the database would continue to prefer the static snitch values
# until the pinned host was 20% worse than the fastest.
dynamic_snitch_badness_threshold: 0.1
# Enable or disable inter-node encryption
# JVM defaults for supported SSL socket protocols and cipher suites can
# be replaced using custom encryption options. This is not recommended
# unless you have policies in place that dictate certain settings, or
# need to disable vulnerable ciphers or protocols in case the JVM cannot
# be updated.
# FIPS compliant settings can be configured at JVM level and should not
# involve changing encryption settings here:
# https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/FIPS.html
# *NOTE* No custom encryption options are enabled at the moment
# The available internode options are : all, none, dc, rack
#
# If set to dc, encrypt the traffic between the DCs
# If set to rack, encrypt the traffic between the racks
#
# The passwords used in these options must match the passwords used when generating
# the keystore and truststore. For instructions on generating these files, see:
# https://docs.oracle.com/javase/8/docs/technotes/guides/security/jsse/JSSERefGuide.html#CreateKeystore
#
# KeyStore types can be JKS, JCEKS, PKCS12 or PKCS11
# For PKCS11 the "java.security" file must be updated to register the PKCS11 JNI binding
# and the relevant native binaries installed.
# For more information see: https://docs.oracle.com/javase/8/docs/technotes/guides/security/p11guide.html
server_encryption_options:
internode_encryption: none
keystore: resources/dse/conf/.keystore
keystore_password: cassandra
truststore: resources/dse/conf/.truststore
truststore_password: cassandra
# More advanced defaults below:
# protocol: TLS
# algorithm: SunX509
#
# replaces the deprecated store_type for keystore, valid types can be JKS, JCEKS, PKCS12 or PKCS11
# for file based keystores prefer PKCS12
# keystore_type: JKS
#
# replaces the deprecated store_type for truststore, valid types can be JKS, JCEKS, PKCS12 or PKCS11
# for file based keystores prefer PKCS12
# truststore_type: JKS
#
# cipher_suites: [TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_DHE_RSA_WITH_AES_128_CBC_SHA,TLS_DHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA]
# require_client_auth: false
# require_endpoint_verification: false
# enable or disable client/server encryption.
client_encryption_options:
enabled: false
# If enabled and optional is set to true, encrypted and unencrypted connections over native transport are handled.
optional: false
keystore: resources/dse/conf/.keystore
keystore_password: cassandra
# require_client_auth: false
# Set trustore and truststore_password if require_client_auth is true
# truststore: resources/dse/conf/.truststore
# truststore_password: cassandra
# More advanced defaults below:
# protocol: TLS
# algorithm: SunX509