ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank

ื–ื• ืืคื™ืœื• ืœื ื‘ื“ื™ื—ื”, ื ืจืื” ืฉื”ืชืžื•ื ื” ื”ืกืคืฆื™ืคื™ืช ื”ื–ื• ืžืฉืงืคืช ื‘ืฆื•ืจื” ื”ืžื“ื•ื™ืงืช ื‘ื™ื•ืชืจ ืืช ื”ืžื”ื•ืช ืฉืœ ืžืื’ืจื™ ื”ืžื™ื“ืข ื”ืœืœื•, ื•ื‘ืกื•ืคื• ืฉืœ ื“ื‘ืจ ื™ื”ื™ื” ื‘ืจื•ืจ ืžื“ื•ืข:

ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank

ืœืคื™ ื“ื™ืจื•ื’ DB-Engines, ืฉื ื™ ืžืกื“ื™ ื”ื ืชื•ื ื™ื ื”ืขืžื•ื“ื•ืช ื”ืคื•ืคื•ืœืจื™ื™ื ื‘ื™ื•ืชืจ ืฉืœ NoSQL ื”ื Cassandra (ืœื”ืœืŸ CS) ื•-HBase (HB).

ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank

ืœืคื™ ืจืฆื•ืŸ ื”ื’ื•ืจืœ, ืฆื•ื•ืช ื ื™ื”ื•ืœ ื˜ืขื™ื ืช ื”ื ืชื•ื ื™ื ืฉืœื ื• ื‘-Sberbank ื›ื‘ืจ ืขืฉื” ื–ืืช ะดะฐะฒะฝะพ ื•ืขื•ื‘ื“ ื‘ืฉื™ืชื•ืฃ ืคืขื•ืœื” ื”ื“ื•ืง ืขื HB. ื‘ืžื”ืœืš ืชืงื•ืคื” ื–ื•, ืœืžื“ื ื• ื”ื™ื˜ื‘ ืืช ื™ืชืจื•ื ื•ืชื™ื• ื•ื—ื•ืœืฉื•ืชื™ื• ื•ืœืžื“ื ื• ื›ื™ืฆื“ ืœื‘ืฉืœ ืื•ืชื•. ืขื ื–ืืช, ื ื•ื›ื—ื•ืชื” ืฉืœ ืืœื˜ืจื ื˜ื™ื‘ื” ื‘ื“ืžื•ืช CS ืชืžื™ื“ ืื™ืœืฆื” ืื•ืชื ื• ืœื™ื™ืกืจ ืืช ืขืฆืžื ื• ืžืขื˜ ื‘ืกืคืงื•ืช: ื”ืื ื‘ื—ืจื ื• ื ื›ื•ืŸ? ื™ืชืจ ืขืœ ื›ืŸ, ื”ืชื•ืฆืื•ืช ื”ืฉื•ื•ืื•ืช, ื‘ื‘ื™ืฆื•ืข ืฉืœ DataStax, ื”ื ืืžืจื• ืฉ-CS ืžื ืฆื— ื‘ืงืœื•ืช ืืช HB ืขื ื ื™ืงื•ื“ ื›ืžืขื˜ ืžื•ื—ืฅ. ืžืฆื“ ืฉื ื™, DataStax ื”ื•ื ืฆื“ ืžืขื•ื ื™ื™ืŸ, ื•ืืชื” ืœื ืฆืจื™ืš ืœืงื‘ืœ ืืช ื”ืžื™ืœื” ืฉืœื”ื. ื”ืชื‘ืœื‘ืœื ื• ื’ื ืžื›ืžื•ืช ื”ืžื™ื“ืข ื”ืงื˜ื ื” ืœืžื“ื™ ืขืœ ืชื ืื™ ื”ื‘ื“ื™ืงื”, ืื– ื”ื—ืœื˜ื ื• ืœื‘ืจืจ ืœื‘ื“ ืžื™ื”ื• ื”ืžืœืš ืฉืœ BigData NoSql, ื•ื”ืชื•ืฆืื•ืช ืฉื”ืชืงื‘ืœื• ื”ืชื‘ืจืจื• ื›ืžืขื ื™ื™ื ื•ืช ืžืื•ื“.

ืขื ื–ืืช, ืœืคื ื™ ื”ืžืขื‘ืจ ืœืชื•ืฆืื•ืช ื”ื‘ื“ื™ืงื•ืช ืฉื‘ื•ืฆืขื•, ื™ืฉ ืฆื•ืจืš ืœืชืืจ ืืช ื”ื”ื™ื‘ื˜ื™ื ื”ืžืฉืžืขื•ืชื™ื™ื ืฉืœ ืชืฆื•ืจื•ืช ื”ืกื‘ื™ื‘ื”. ื”ืขื•ื‘ื“ื” ื”ื™ื ืฉื ื™ืชืŸ ืœื”ืฉืชืžืฉ ื‘-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:

ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank

ื›ืืŸ ืื ื• ืจื•ืื™ื ืืช ื”ื“ื‘ืจื™ื ื”ื‘ืื™ื: ื›ื›ืœ ืฉืจืฉื•ืจื™ื ืžืชื—ืจื™ื ื›ื•ืชื‘ื™ื ื ืชื•ื ื™ื, ื›ืš ื–ื” ืœื•ืงื— ื™ื•ืชืจ ื–ืžืŸ. ื–ื” ื˜ื‘ืขื™, ืื‘ืœ ื—ืฉื•ื‘ ืฉื”ื™ืจื™ื“ื” ื‘ื‘ื™ืฆื•ืขื™ื ืขื‘ื•ืจ 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);
}

ืขื›ืฉื™ื• ื”ื—ืœืง ื”ืžืขื ื™ื™ืŸ ื‘ื™ื•ืชืจ - ื”ืชื•ืฆืื•ืช:

ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank

ืื•ืชื• ื“ื‘ืจ ื‘ืฆื•ืจืช ื’ืจืฃ:

ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank

ื”ื™ืชืจื•ืŸ ืฉืœ 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 ืžืฉืชืžืฉ ื‘ื”ืจื‘ื” ื™ื•ืชืจ ืžืขื‘ื“ ื•ื“ื™ืกืงื™ื:

ืงืจื‘ ืฉืชื™ ื™ืืงื•ื–ื•ื ื”, ืื• ืงืกื ื“ืจื” ื ื’ื“ HBase. ื ื™ืกื™ื•ืŸ ื‘ืฆื•ื•ืช Sberbank
ื”ืื™ื•ืจ ืžืฆื™ื’ ืืช ื”ืฉื™ืžื•ืฉ ื‘ืžื”ืœืš ื”ืจื™ืฆื” ืฉืœ ื›ืœ ื”ื‘ื“ื™ืงื•ืช ื‘ืจืฆืฃ ืขื‘ื•ืจ ืฉื ื™ ืžืกื“ื™ ื”ื ืชื•ื ื™ื.

ืœื’ื‘ื™ ื™ืชืจื•ืŸ ื”ืงืจื™ืื” ื”ื—ื–ืง ืฉืœ 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

ื”ื•ืกืคืช ืชื’ื•ื‘ื”