ืื ืืคืืื ืื ืืืืื, ื ืจืื ืฉืืชืืื ื ืืกืคืฆืืคืืช ืืื ืืฉืงืคืช ืืฆืืจื ืืืืืืงืช ืืืืชืจ ืืช ืืืืืช ืฉื ืืืืจื ืืืืืข ืืืื, ืืืกืืคื ืฉื ืืืจ ืืืื ืืจืืจ ืืืืข:
ืืคื ืืืจืื DB-Engines, ืฉื ื ืืกืื ืื ืชืื ืื ืืขืืืืืช ืืคืืคืืืจืืื ืืืืชืจ ืฉื NoSQL ืื Cassandra (ืืืื CS) ื-HBase (HB).
ืืคื ืจืฆืื ืืืืจื, ืฆืืืช ื ืืืื ืืขืื ืช ืื ืชืื ืื ืฉืื ื ื-Sberbank ืืืจ ืขืฉื ืืืช
ืขื ืืืช, ืืคื ื ืืืขืืจ ืืชืืฆืืืช ืืืืืงืืช ืฉืืืฆืขื, ืืฉ ืฆืืจื ืืชืืจ ืืช ืืืืืืื ืืืฉืืขืืชืืื ืฉื ืชืฆืืจืืช ืืกืืืื. ืืขืืืื ืืื ืฉื ืืชื ืืืฉืชืืฉ ื-CS ืืืฆื ืืืืคืฉืจ ืืืืื ื ืชืื ืื. ืึธืึตื. ืื ืืืฉืจ ืจืง ืฉืจืช ืืื (ืฆืืืช) ืืืจืื ืขื ืื ืชืื ืื ืฉื ืืคืชื ืืกืืื, ืืื ืืกืืื ืืืฉืื ืืื ื ืืฉื, ืื ืืขืจื ืฉื ืืคืชื ืื ืืืื. ืขืืืจ ืืฉืืืืช ืจืืืช ืื ืื ืงืจืืื, ืืื ืขืืืจ ืืืืืจ ืืื ืงืื ืื ืืืืฆื ืื ืืืื ืืื ืืืื. ืืืงืจื ืฉืื ื, ืืฉืื ืืืืืืง ืืกืคืจ ืขืืชืงืื ืฉื ื ืชืื ืื ืืืืกืื ืืืื.
ืืื, ืจืง ืืฆื ืืืคืขืื ืฉื CS ืืืฆื ืฉืืคืื ืืฉืืืฉ ื ืืฉื, ืืืืืจ. ืืฆืืจืช ื-casespace ืืืฆืขื ืขื ืืคืจืืืจืื ืืืืื:
CREATE KEYSPACE ks WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3};
ืืืืจ ืืื, ืืฉื ื ืฉืชื ืืจืืื ืืืืืื ืืช ืจืืช ืืขืงืืืืช ืื ืืจืฉืช. ืืืง ืืืื:
NW + NR > RF
ืื ืฉืืืืจ ืฉืืกืคืจ ืืืืฉืืจืื ืืฆืืชืื ืืขืช ืืชืืื (NW) ืืชืืกืคืช ืืกืคืจ ืืืืฉืืจืื ืืฆืืชืื ืืขืช ืงืจืืื (NR) ืืืื ืืืืืช ืืืื ืืืงืื ืืฉืืคืื. ืืืงืจื ืฉืื ื, RF = 3, ืืืืืจ ืืืคืฉืจืืืืช ืืืืืช ืืชืืืืืช:
2 + 2 > 3
3 + 1 > 3
ืืืืืื ืฉืืฉืื ืื ื ืืืกืืื ืืืืกื ืืช ืื ืชืื ืื ืืฆืืจื ืืืืื ื ืืื ืืืคืฉืจ, ื ืืืจื ืกืืืช 3+1. ืื ืืกืฃ, HB ืขืืื ืขื ืขืืงืจืื ืืืื, ืืืืืจ. ืืฉืืืื ืืื ืชืืื ืืืื ืช ืืืชืจ.
ืืฉ ืืฆืืื ืฉ-DataStax ืขืฉื ืืช ืืืืคื ืืืืงืจ ืฉืืื, ืื ืงืืขื RF = 1 ืื ื-CS ืืื ื-HB (ืืืืจืื ืื ืขื ืืื ืฉืื ืื ืืืืจืืช HDFS). ืืื ืืืื ืืฉืื ืืืืช ืืืืืื ืฉืืืฉืคืขื ืขื ืืืฆืืขื CS ืืืงืจื ืื ืืื ืขืฆืืื. ืืืืืื, ืืชืืื ื ืืืื ืืฆืืื ืืช ืืขืืืื ืืืื ืืืจืืฉ ืืืขืื ืช ื ืชืื ืื ื-CS:
ืืื ืื ื ืจืืืื ืืช ืืืืจืื ืืืืื: ืืื ืฉืจืฉืืจืื ืืชืืจืื ืืืชืืื ื ืชืื ืื, ืื ืื ืืืงื ืืืชืจ ืืื. ืื ืืืขื, ืืื ืืฉืื ืฉืืืจืืื ืืืืฆืืขืื ืขืืืจ RF=3 ืชืืื ืืืืื ืืฉืืขืืชืืช. ืืืืืื ืืืจืืช, ืื ื ืืชืื 4 ืฉืจืฉืืจืื ื-5 ืืืืืืช ืื ืืืช (20 ืืกื ืืื), ืื RF=3 ืืืื ืืขืจื ืคื 2 (150 ืฉื ืืืช ืขืืืจ RF=3 ืืขืืืช 75 ืขืืืจ RF=1). ืืื ืื ื ืืืื ืืช ืืขืืืก ืขื ืืื ืืขืื ืช ื ืชืื ืื ื-8 ืืืืืืช ืขื 5 ืฉืจืฉืืจืื ืื ืืืช (40 ืืกื ืืื), ืื ืืืืืื ืฉื RF=3 ืืื ืืืจ ืคื 2,7 (375 ืฉื ืืืช ืืขืืืช 138).
ืืืื ืื ืืืืงื ืกืื ืืืืงืช ืืขืืืก ืืืืฆืืืช ืฉืืืฆืขื ืขื ืืื DataStax ืขืืืจ CS, ืื ืขืืืจ HB ืืืืื ืฉืื ื ืฉืื ืื ืืงืื ืืฉืืคืื ื-2 ื-3 ืื ืืฉืคืืข. ืึธืึตื. ืืืกืงืื ืืื ื ืฆืืืืจ ืืืงืืืง ืฉื HB ืขืืืจ ืืชืฆืืจื ืฉืื ื. ืขื ืืืช, ืืฉ ืืื ืืจืื ืืืืืืืช ืืืจืืช, ืื ืืฉ ืืฆืืื ืฉืืืจืกื ืฉืื ื ืฉื HB ืืืืชื ืืขื ืืชืืงื ืช ืืืฉืชื ืชื, ืืกืืืืืช ืฉืื ืืช ืืืืืืื ืืื'. ืืืื ืื ืืฆืืื ืฉืืืื ืื ื ืคืฉืื ืื ืืืืข ืืื ืืืืื CS ื ืืื ืืืฉ ืขืื ืืื ืืจืืื ืืขืืืืช ืืขืืื ืขื ืื, ืืื ื ืืงืืื ืฉื ืืื ืืช ืื ืืชืืืืืช. ืืื ืืืจ ืจืืฉืื.
ืื ืืืืืงืืช ืืืฆืขื ืขื ืืฉืืื ืืืืจื ืืืืจืื ื-4 ืฉืจืชืื, ืื ืืื ืขื ืืชืฆืืจื ืืืื:
ืืขืื: Xeon E5-2680 v4 @ 2.40GHz 64 ืคืชืืืื.
ืืืกืงืื: 12 ืืืงืื SATA HDD
ืืจืกืช java: 1.8.0_111
ืืจืกื CS: 3.11.5
ืคืจืืืจืื ืฉื cassandra.ymlnum_tokens: 256
hinted_handoff_enabled: ื ืืื
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_directory: /data10/cassandra/hints
hints_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
ืืืืช: AllowAllAuthenticator
ืืืฉืืจ: AllowAllAuthorizer
role_manager: CassandraRoleManager
ืชืคืงืืืื_ืชืืงืฃ_ืืืฉื ืืืช: 2000
ืืจืฉืืืช_ืชืืงืฃ_ืืืฉื ืืืช: 2000
credentials_validity_in_ms: 2000
ืืืืฆื: org.apache.cassandra.dht.Murmur3Partitioner
ืกืคืจืืืช_ืงืืืฅ_ื ืชืื ืื:
- /data1/cassandra/data # ืื ืกืคืจืืืช dataN ืืื ืืืกืง ื ืคืจื
- /data2/cassandra/data
- /data3/cassandra/data
- /data4/cassandra/data
- /data5/cassandra/data
- /data6/cassandra/data
- /data7/cassandra/data
- /data8/cassandra/data
commitlog_directory: /data9/cassandra/commitlog
cdc_enabled: false
disk_failure_policy: ืขืฆืืจ
commit_failure_policy: ืขืฆืืจ
ready_statements_cache_size_mb:
thrift_prepared_statements_cache_size_mb:
key_cache_size_in_mb:
key_cache_save_period: 14400
row_cache_size_in_mb: 0
row_cache_save_period: 0
counter_cache_size_in_mb:
counter_cache_save_period: 7200
Saved_caches_directory: /data10/cassandra/saved_caches
commitlog_sync: ืชืงืืคืชื
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
ืกืคืง_ืืจืขืื:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
ืคืจืืืจืื:
โ ืืจืขืื: "*,*"
concurrent_reads: 256 # ื ืืกื 64 - ืื ืืืืื ืืืืื
ืืืงืืื_ืืืชืืื: 256 # ื ืืกื 64 - ืื ืืืืื ืืืืื
concurrent_counter_writes: 256 # ื ืืกื 64 - ืื ืืืืื ืืืืื
ืื-ืืื ืืช_ืืืืจ_ืชืฆืืืช_ืืืชืืื: 32
memtable_heap_space_in_mb: 2048 # ื ืืกื 16 GB - ืื ืืื ืืืื ืืืชืจ
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: false
trickle_fsync_interval_in_kb: 10240
ืืฆืืืช_ืืืกืื: 7000
ssl_storage_port: 7001
ืืืื ื_ืืชืืืช: *
ืืชืืืช ืฉืืืืจ: *
ืืืื ื_ืืฉืืืืจ_ืืชืืืช: ื ืืื
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: ื ืืื
Native_transport_port: 9042
start_rpc: ื ืืื
rpc_address: *
rpc_port: 9160
rpc_keepalive: ื ืืื
rpc_server_type: ืกืื ืืจืื
thrift_framed_transport_size_in_mb: 15
incremental_backups: false
snapshot_before_compaction: ืฉืงืจ
auto_snapshot: ื ืืื
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
concurrent_compactors: 4
compaction_throughput_mb_per_sec: 1600
sstable_preemptive_open_interval_in_mb: 50
read_request_timeout_in_ms: 100000
range_request_timeout_in_ms: 200000
write_request_timeout_in_ms: 40000
counter_write_request_timeout_in_ms: 100000
cas_contention_timeout_in_ms: 20000
truncate_request_timeout_in_ms: 60000
request_timeout_in_ms: 200000
slow_query_log_timeout_in_ms: 500
cross_node_timeout: false
endpoint_snitch: GossipingPropertyFileSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
ืกืฃ_ืจืขืืช_ืืื ืืื_ืกื ืืฅ': 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
internode_encryption: ืืื
client_encryption_options:
ืืืคืขื: ืฉืงืจ
internode_compression: dc
inter_dc_tcp_nodelay: false
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: false
enable_scripted_user_defined_functions: false
windows_timer_interval: 1
transparent_data_encryption_options:
ืืืคืขื: ืฉืงืจ
ืกืฃ_ืืืืจื_ืืฆืื: 1000
ืกืฃ_ืืฉื_ืืฆืื: 100000
batch_size_warn_threshold_in_kb: 200
batch_size_fail_threshold_in_kb: 250
unlogged_batch_across_partitions_threshold: 10
compaction_large_partition_warning_threshold_mb: 100
gc_warn_threshold_in_ms: 1000
back_pressure_enabled: false
enable_materialized_views: ื ืืื
enable_sasi_indexes: true
ืืืืจืืช GC:
### ืืืืจืืช CMS-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=1
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSIinitiatingOccupancyOnly
-XX:CMSWaitDuration=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordAlways
-XX:+CMSClassUnloadingEnabled
ืืืืืจืื jvm.options ืืืงืฆื 16Gb (ื ืืกืื ื ืื 32Gb, ืื ืืืืื ื ืืืืื).
ืืืืืืืช ื ืืฆืจื ืขื ืืคืงืืื:
CREATE TABLE ks.t1 (id bigint PRIMARY KEY, title text) WITH compression = {'sstable_compression': 'LZ4Compressor', 'chunk_length_kb': 64};
ืืจืกืช HB: 1.2.0-cdh5.14.2 (ืืืืืงื org.apache.hadoop.hbase.regionserver.HRegion ืื ืืืื ื ืืช MetricsRegion ืฉืืืืืื ื-GC ืืืฉืจ ืืกืคืจ ืืืืืจืื ืืื ืืืชืจ ื-1000 ื-RegionServer)
ืคืจืืืจื HBase ืฉืืื ื ืืจืืจืช ืืืืzookeeper.session.timeout: 120000
hbase.rpc.timeout: 2 ืืงืืช
hbase.client.scanner.timeout.period: 2 ืืงืืช
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.period: 2 ืืงืืช
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.period: 4 ืฉืขืืช
hbase.regionserver.maxlogs: 200
hbase.hregion.memstore.flush.size: 1 GiB
hbase.hregion.memstore.block.multiplier: 6
hbase.hstore.compactionThreshold: 5
hbase.hstore.blockingStoreFiles: 200
hbase.hregion.majorcompaction: ืืื(ืื)
ืงืืข ืชืฆืืจื ืืชืงืื ืฉื ืฉืืจืืช HBase (ืฉืกืชืื ืืืืืืช) ืขืืืจ hbase-site.xml:
hbase.regionserver.wal.codecorg.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
hbase.master.namespace.init.timeout3600000
hbase.regionserver.optionalcacheflushinterval18000000
hbase.regionserver.thread.compaction.large12
hbase.regionserver.wal.enablecompressiontrue
hbase.hstore.compaction.max.size1073741824
hbase.server.compactchecker.interval.multiplier200
ืืคืฉืจืืืืช ืชืฆืืจื ืฉื Java ืขืืืจ HBase RegionServer:
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 ืืงืืช
hbase.snapshot.region.timeout: 2 ืืงืืช
hbase.snapshot.master.timeout.millis: 2 ืืงืืช
HBase REST Server ืืืื ืืืื ืืงืกืืืื: 100 MiB
ืฉืจืช HBase REST ืืืืืืื ืืงืกืืืืืื ืฉื ืงืืฆื ืืืื: 5
ืืืื ืืืื ืืงืกืืืื ืฉื HBase Thrift Server: 100 MiB
ืืืืืืื ืืงืกืืืืืื ืฉื ืงืืฆื ืืืื ืฉื HBase Thrift Server: 5
ืืืื ืืืื ืืจืื ืืืกืืจ: 100 MiB
ืืืืืืื ืืจืืืื ืฉื ืงืืฆื ืืืื: 5
ืืืื ืืืื ืืงืกืืืื ืฉื RegionServer: 100 MiB
RegionServer ืืงืกืืืื ืืืืืืื ืฉื ืงืืฆื ืืืื: 5
ืืืื HBase Active Master Detection: 4 ืืงืืช
dfs.client.hedged.read.threadpool.size: 40
dfs.client.hedged.read.threshold.millis: 10 ืืืคืืืช ืฉื ืืืช
hbase.rest.threads.min: 8
hbase.rest.threads.max: 150
ืืงืกืืืื ืืชืืจื ืงืืืฅ ืชืืืื: 180000
hbase.thrift.minWorkerThreads: 200
hbase.master.executor.openregion.threads: 30
hbase.master.executor.closeregion.threads: 30
hbase.master.executor.serverops.threads: 60
hbase.regionserver.thread.compaction.small: 6
hbase.ipc.server.read.threadpool.size: 20
ืฉืจืฉืืจื ืืขืืจืช ืืืืจืื: 6
ืืืื ืขืจืืืช ื'ืืืื ืฉื ืืงืื ืืืชืื: 1 GiB
ืงืืืฆืช ืืจืืจืช ืืืืื ืฉื ืฉืจืช HBase REST: 3 GiB
HBase Thrift Server Group ืืจืืจืช ืืืื: 3 GiB
ืืืื ืขืจืืืช Java ืฉื HBase Master ื-Bytes: 16 GiB
ืืืื ืขืจืืืช Java ืฉื HBase RegionServer ืืืชืื: 32 GiB
+ืฉืืืจ ืื ืืืืืช
maxClientCnxns: 601
maxSessionTimeout: 120000
ืืฆืืจืช ืืืืืืช:
hbase org.apache.hadoop.hbase.util.RegionSplitter ns:t1 UniformSplit -c 64 -f cf
ืฉื ื 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'GZ'}
ืืฉ ืืื ื ืงืืื ืืฉืืื ืืืช - ืืชืืืืจ ืฉื DataStax ืื ืืืืจ ืืืื ืืืืจืื ื ืขืฉื ืฉืืืืฉ ืืืฆืืจืช ืืืืืืช HB, ืืืจืืช ืฉืื ืงืจืืื ืขืืืจ ื ืคืืื ืืืืืื. ืืื, ืืืืืงืืช ื ืืืจื ืืืืช = 64 ืืืืคืฉืจืช ืืืกืื ืฉื ืขื 640 GB, ืืืืืจ. ืฉืืืื ืืืืื ืืื ืื ื.
ืืืื ืืืืืงื, ื-HBase ืืื 22 ืืืฃ ืืืืืืช ื-67 ืืืฃ ืืืืจืื (ืื ืืื ืงืืื ื ืขืืืจ ืืจืกื 1.2.0 ืืืืื ืืชืืงืื ืฉืืืืืจ ืืขืื).
ืขืืฉืื ืืงืื. ืืืืืื ืฉืื ืืื ืืจืืจ ืืืื ืชืฆืืจืืช ืืื ืืืขืืืืช ืืืชืจ ืขืืืจ ืืกื ื ืชืื ืื ืืกืืื, ืืืฆืขื ืืืืงืืช ืืฉืืืืืื ืฉืื ืื. ืึธืึตื. ืืืืง ืืืืืืงืืช, 4 ืืืืืืช ื ืืขื ื ืื ืืื ืืช (ืื 4 ืืฆืืชืื ืฉืืืฉื ืืืืืืจ). ืืืืืงืืช ืืืจืืช ืขืืื ื ืขื 8 ืืืืืืช ืฉืื ืืช. ืืืืง ืืืืงืจืื, ืืืื ืืืฆืืื ืืื 100, ืืืืจืื 200 (ืคืจืืืจ ืืฆืืื - ืจืื ืงืื ืืืื). ืืืื ืื ืชืื ืื ืขืืืจ ืขืจื ืืื 10 ืืชืื ืื 100 ืืชืื (dataSize). ืืกื ืืื, 5 ืืืืืื ืจืฉืืืืช ื ืืชืื ืืืืงืจืื ืืื ืืืื ืืื ืคืขื. ืืืงืืื, ืืื ืืืื ื ืืชืื/ืงืจืื 5 ืฉืจืฉืืจืื (ืืกืคืจ ืืื - thNum), ืฉืื ืืื ืืื ืืฉืชืืฉ ืืืืื ืืืงืฉืื ืฉืื (ืกืคืืจื = 1 ืืืืืื):
if (opType.equals("insert")) {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
StringBuilder sb = new StringBuilder("BEGIN BATCH ");
for (int i = 0; i < batch; i++) {
String value = RandomStringUtils.random(dataSize, true, true);
sb.append("INSERT INTO ")
.append(tableName)
.append("(id, title) ")
.append("VALUES (")
.append(key)
.append(", '")
.append(value)
.append("');");
key++;
}
sb.append("APPLY BATCH;");
final String query = sb.toString();
session.execute(query);
}
} else {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
StringBuilder sb = new StringBuilder("SELECT * FROM ").append(tableName).append(" WHERE id IN (");
for (int i = 0; i < batch; i++) {
sb = sb.append(key);
if (i+1 < batch)
sb.append(",");
key++;
}
sb = sb.append(");");
final String query = sb.toString();
ResultSet rs = session.execute(query);
}
}
ืืืชืื ืืื, ืคืื ืงืฆืืื ืืืืช ืืืื ืกืืคืงื ืขืืืจ HB:
Configuration conf = getConf();
HTable table = new HTable(conf, keyspace + ":" + tableName);
table.setAutoFlush(false, false);
List<Get> lGet = new ArrayList<>();
List<Put> lPut = new ArrayList<>();
byte[] cf = Bytes.toBytes("cf");
byte[] qf = Bytes.toBytes("value");
if (opType.equals("insert")) {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
lPut.clear();
for (int i = 0; i < batch; i++) {
Put p = new Put(makeHbaseRowKey(key));
String value = RandomStringUtils.random(dataSize, true, true);
p.addColumn(cf, qf, value.getBytes());
lPut.add(p);
key++;
}
table.put(lPut);
table.flushCommits();
}
} else {
for (Long key = count * thNum; key < count * (thNum + 1); key += 0) {
lGet.clear();
for (int i = 0; i < batch; i++) {
Get g = new Get(makeHbaseRowKey(key));
lGet.add(g);
key++;
}
Result[] rs = table.get(lGet);
}
}
ืืืืืื ืฉื-HB ืืืงืื ืืืื ืืืืื ืืคืืืืจ ืืืื ืฉื ืื ืชืื ืื, ืคืื ืงืฆืืืช ืืืืืช ืืืคืชื ื ืจืืชื ืื:
public static byte[] makeHbaseRowKey(long key) {
byte[] nonSaltedRowKey = Bytes.toBytes(key);
CRC32 crc32 = new CRC32();
crc32.update(nonSaltedRowKey);
long crc32Value = crc32.getValue();
byte[] salt = Arrays.copyOfRange(Bytes.toBytes(crc32Value), 5, 7);
return ArrayUtils.addAll(salt, nonSaltedRowKey);
}
ืขืืฉืื ืืืืง ืืืขื ืืื ืืืืชืจ - ืืชืืฆืืืช:
ืืืชื ืืืจ ืืฆืืจืช ืืจืฃ:
ืืืชืจืื ืฉื HB ืื ืื ืืคืชืืข ืฉืืฉ ืืฉื ืฉืืฉ ืืืืฉืื ืฆืืืืจ ืืงืืืง ืืืขืจื ื-CS. ืขื ืืืช, ืืืคืืฉ ืืืืื ืืืืคืืฉ ืืืจ ืืคืจืืืจืื ืืืจืืจืื ืืืืชืจ (ืืื Concurrent_writes ืื memtable_heap_space_in_mb) ืื ืืืืฅ ืืช ืืขื ืืื ืื. ืืื ืขื ืืืช, ืืืื ืืขืฅ ื ืงืืื ืืืื ื ืืงืืืื ืืืจ.
ืื ืชืื ืื ืืืคืฆื ืืืืคื ืฉืืื ืขื ืคื ื ืืฆืืชืื, ืืกืืืืกืืืงื ืืื ืืฆืืชืื ืืืืชื ืืขืจื ืืื.
ืื ื ืจืืืช ืกืืืืกืืืงืช ืืืืื ืืืื ืืฆืืชืืืืจืืื ืืงืฉืื: ks
ืกืคืืจืช ืงืจืืื: 9383707
ืืื ืงืจืืื: 0.04287025042448576 MS
ืืกืคืจ ืืชืืืืช: 15462012
ืืืืื ืืชืืื: 0.1350068438699957 MS
ืฉืืืคืืช ืืืืชื ื: 0
ืืืื: t1
ืกืคืืจืช SSTable: 16
ืฉืื ืฉืืืืฉ (ืื): 148.59 MiB
ืฉืื ืฉืืืืฉ (ืกื"ื): 148.59 MiB
ืฉืื ืืฉืืืืฉ ืขื ืืื ืฆืืืืื ืืฆื (ืกื"ื): 0 ืืชืื
ืฉืืืืฉ ืืืืืจืื Off Heap (ืกื"ื): 5.17 MiB
ืืืก ืืืืกื SSTable: 0.5720989576459437
ืืกืคืจ ืืืืฆืืช (ืืขืจืื): 3970323
ืกืคืืจืช ืชืืื ืืืืจื: 0
ืืืื ื ืชืื ืื ืืืืืจืื: 0 ืืชืื
Memtable ืืืืฅ ืืืืืจืื ืขืจืืื ืืฉืืืืฉ: 0 ืืชืื
ืกืคืืจืช ืืชืืื ืืืืืจืื: 5
ืกืคืืจืช ืงืจืืื ืืงืืืืช: 2346045
ืืื ืงืจืืื ืืงืืื: NaN ms
ืืกืคืจ ืืชืืืืช ืืงืืื: 3865503
ืืื ืืชืืื ืืงืืื: NaN ms
ืฉืืืคืืช ืืืืชื ื: 0
ืืืื ืชืืงืื: 0.0
ืืกื ื ืคืจืืื ืืืืื ืฉืืื: 25
ืืืก ืฉืืื ืืกื ื ืคืจืืื: 0.00000
ืฉืื ืืกื ื ืคืจืืื ืืฉืืืืฉ: 4.57 MiB
ืืกื ื ืคืจืืื ืฉื ืืืืจืื ืขืจืืื ืืฉืืืืฉ: 4.57 MiB
ืกืืืื ืืื ืืงืก ืืืืฅ ืืืืืจืื ืืขืจืืื ืืฉืืืืฉ: 590.02 KiB
ืืื ื ืชืื ืื ืฉื ืืืืกื ืืืืฅ ืืืืืจืื ืืขืจืืื ืืฉืืืืฉ: 19.45 KiB
ืืื ืืืื ืืชืื ืฉื ืืืืฆื ืืืืกื: 36
ืืงืกืืืื ืืชืื ืฉื ืืืืฆื ืืืืกื: 42
ืืืืฆื ืืืืกื ืืืืฆืข ืืชืื: 42
ืืืืฆืข ืชืืื ืืืื ืืคืจืืกื (ืืืฉ ืืงืืช ืืืจืื ืืช): NaN
ืืงืกืืืื ืชืืื ืืืื ืืื ืคืจืืกื (ืืืฉ ืืงืืช ืืืจืื ืืช): 0
ืืฆืืืช ืืืืฆืขืืช ืืคืจืืกื (ืืืฉ ืืงืืช ืืืจืื ืืช): NaN
ืืงืกืืืื ืืฆืืืช ืืคืจืืกื (ืืืฉ ืืงืืช ืืืจืื ืืช): 0
ืืืืฆืืืช ืฉื ืคืื: 0 ืืชืื
ื ืืกืืื ืืืงืืื ืืช ืืืื ืืืฆืืื (ืืคืืื ืืฉืืื ืืืชื ืื ืคืจื) ืื ืืฉืคืืข, ืืื ืจืง ืืืืืจ. ืืชืื ืฉืืืขืฉื ืืืืืจ ืืืืช ืืืืฆืืขืื ืืืงืกืืืืืื ืขืืืจ CS, ืฉืื ืืชืืฆืืืช ืืืชืงืืืืช ืขืืืจ CS ืืืืืช ืืืื ืืืชืงืืืืช ืขืืืจ DataStax โ ืืขืจื ืืืืช ืืืคื ืคืขืืืืช ืืฉื ืืื. ืื ืืกืฃ, ืื ื ืกืชืื ืขื ื ืืฆืื ืืฉืืืื, ื ืจืื ืฉ-CS ืืฉืชืืฉ ืืืจืื ืืืชืจ ืืขืื ืืืืกืงืื:
ืืืืืจ ืืฆืื ืืช ืืฉืืืืฉ ืืืืื ืืจืืฆื ืฉื ืื ืืืืืงืืช ืืจืฆืฃ ืขืืืจ ืฉื ื ืืกืื ืื ืชืื ืื.
ืืืื ืืชืจืื ืืงืจืืื ืืืืง ืฉื HB. ืืื ืืชื ืืืื ืืจืืืช ืฉืืฉื ื ืืกืื ืื ืชืื ืื, ื ืืฆืื ืืืืกืง ืืืืื ืืงืจืืื ื ืืื ืืืืชืจ (ืืืื ื ืงืจืืื ืื ืืืืง ืืืืจืื ืืืืืืจ ืืืืืงื ืฉื ืื ืืกื ื ืชืื ืื, ืืืฉื ืขืืืจ CS ืื ื-15:20 ืขื 15:40). ืืืงืจื ืฉื HB, ืืกืืื ืืจืืจื - ืจืื ืื ืชืื ืื ืชืืืืื ืืืืืจืื, ื-memstore, ืืืืงื ืืืืืกื ืื ื-blockcache. ืืืื CS, ืื ืืืื ืืจืืจ ืืื ืื ืขืืื, ืืื ืื ืืืืืืจ ืืืกืงืื ืื ื ืจืื ืืขืื, ืืื ืืืชืจ ืืืืืื, ื ืขืฉื ื ืืกืืื ืืืคืขืื ืืช ืืืืืื row_cache_size_in_mb = 2048 ืืืืืืืจ caching = {'keys': 'ALL', 'rows_per_partition': ' 2000000'}, ืืื ืื ืืืืืจ ืืช ืื ืขืื ืงืฆืช.
ืจืืื ืื ืืืืืืจ ืฉืื ื ืงืืื ืืฉืืื ืืืื ืืกืคืจ ืืืืืจืื ื-HB. ืืืงืจื ืฉืื ื, ืืขืจื ืฆืืื ื-64. ืื ืืคืืืชืื ืืืชื ืืืฉืืืื ืืืชื ืืืฉื ื-4, ืื ืืงืจืืื ืืืืืจืืช ืืืจืืช ืคื 2. ืืกืืื ืืื ืฉ-memstore ืืชืืื ืืืจ ืืืชืจ ืืืงืืฆืื ืืืฉืืคื ืืชืืืจืืช ืืืืื ืืืชืจ ืืืขืช ืืงืจืืื, ืืืื ืฆืืจื ืืขืื ืืืชืจ ืงืืฆืื, ืืื ืคืขืืื ืื ืืกืืืืช ืขืืืจ HB. ืืชื ืืื ืืืืชืืื, ื ืืชื ืืืคื ืืื ืขื ืืื ืืฉืืื ืืจื ืืกืืจืืืืืช ืคืืฆืื ืืืืืกื ืืจืืฉ; ืืคืจื, ืื ื ืืฉืชืืฉืื ืืืื ืขืืจ ืฉื ืืชื ืืขืฆืื ืฉืืืกืฃ ืืื ืืืืืก HFiles ืื ืืืื ืืจืงืข. ืืืืื ืืืชืื ืฉืืืืื ื DataStax ืื ืืงืฆื ืจืง ืืืืจ 1 ืืืืื (ืืื ืื ื ืืื) ืืื ืงืฆืช ืืืืืจ ืืืืข HB ืืื ืื ืื ื ืืืช ืืืืื ื ืืงืจืืื ืฉืืื.
ืืืื ืืืกืงืืช ืืืกืงื ืืช ืืืงืืืืืช ืืืืืช. ืืื ืื ืฉืื ื ืขืฉื ืืขืืืืช ืืืืืืช ืืืืื ืืืืืงื, ืื ืงืกื ืืจื ื ืจืืืช ืืื ืงืืืืกืืก ืขื ืจืืื ืืืืจ. ืืืชืจ ืืืืง, ืืืื ืฉืืื ืืชืืื ืช ืขื ืจืื ืืืช, ืืื ืืชืืื ื ืืชืืืืช ืืืชืื, ืืื ืืฆืืื ืชืืฆืืืช ืืืืืช ืืืกืืช, ืืื ืืงืจื ืืืืชื ืชื ืืื ืืื ืืคืกืืื ืืฉืจ. ืืืงืืื, ืชืื ืืชืืฉืืืช ืื ืืฆืื ืืืขืื ืื ืืื ืืืืืจื ืฉืื ื, ืืืื ื ืืฉืชืื ืฉื ื RegionServer HBs ืืื ืืืจื ืืืื ืืืคืื ื ืืช ืืืืฆืืขืื. ืึธืึตื. ืื ืืืงืืื ืืืฉืืื ืืช ื ืืฆืื ืืืฉืืืื, ืืืฆื ืฉื CS ืืื ืืคืืื ืืืชืจ ืืฆืขืจ.
ืืืืื, ืืืืืงืืช ืืืื ืื ืื ืกืื ืชืืืืช ืืืืืช ืื ืชืื ืื ืฉืืื ืื ืฉืืืืฉ ืืื ืฆื ืืขื ืืืกืืช. ืืชืื ืฉืื ื ืขืืืจ ืืืจื-ืืืื ืืืฆื ืืื ืฉืื ื, ืืื ืืขืื ืฉื-HB ื ืืื ืืืขืื ืืจื-ืืืื, ื-CS ืื ืืชืืจืจ ืืืขืืืชื. ืืขืชืื ืงืจืืืืช ืืื ืืจืง OperationTimedOutException ืืคืืื ืขื ื ืคืืื ืืื, ืืืจืืช ืฉืืคืจืืืจืื ืืืืชื ื ืืชืืืื ืืืจ ืืืืืื ืืกืคืจ ืคืขืืื ืืืฉืืืื ืืืจืืจืช ืืืืื.
ืื ื ืืงืืื ืฉืืืืฆืขืืช ืืืืฆืื ืืฉืืชืคืื ื ืืฆื ืืช ืฆืืืืจื ืืืงืืืง ืฉื CS ืืื ื ืืื ืืืืืฅ ืืืชื, ืื ืืกืืฃ ืืคืืกื ืืืืื ืืืกืืฃ ืืืืข ืขื ืืชืืฆืืืช ืืกืืคืืืช.
UPD: ืืืืืช ืืขืฆืืช ืฉื ืืืจืื, ืืฆืืืชื ืืืจื ืืช ืืงืจืืื. ืืื:
159 ืคืขืืืืช (644 ืืืืืืช, 4 ืืจืืื, ืืฆืืื 5).
ื ืืกืฃ ืขื ืืื:
.withLoadBalancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
ืืฉืืืงืชื ืขื ืืกืคืจ ืืฉืจืฉืืจืื. ืืชืืฆืื ืืื ืืืื:
4 ืืืืืืช, 100 ืฉืจืฉืืจืื, ืืฆืืื = 1 (ืืชืืื ืืืจ ืืชืืื): 301 ืคืขืืืืช
4 ืืืืืืช, 100 ืฉืจืฉืืจืื, ืืฆืืื = 10: 447 ืคืขืืืืช
4 ืืืืืืช, 100 ืฉืจืฉืืจืื, ืืฆืืื = 100: 625 ืคืขืืืืช
ืืืืฉื ืืืื ืขืฆืืช ืืืื ืื ืืืจืืช, ืืคืขืื ืืืืืจ ืืืืงื ืืื ืืืืกืืฃ ืืช ืืชืืฆืืืช ืืกืืฃ ืืคืืกื.
ืืงืืจ: www.habr.com