แแก แฎแฃแแ แแแแช แแ แแ แแ แแก, แ แแแแ แช แฉแแแก, แแก แแแแแ แแขแฃแแ แกแฃแ แแแ แงแแแแแแ แแฃแกแขแแ แแกแแฎแแแก แแ แแแแแชแแแแ แแแแแแแก แแ แกแก แแ แกแแแแแแแ แแแแ แแแแแ, แ แแขแแ:
DB-Engines Ranking-แแก แแแฎแแแแแ, แแ แ แงแแแแแแ แแแแฃแแแ แฃแแ NoSQL แกแแแขแแแแแ แแแแแชแแแแ แแแแแ Cassandra (แจแแแแแแแจแ CS) แแ HBase (HB).
แแแแแก แแแแแ, แกแแแ แแแแแจแ แแแแแชแแแแ แฉแแขแแแ แแแแก แฉแแแแแ แแฃแแแแ แฃแแแ แแแแแแแ
แแฃแแชแ, แกแแแแ แจแแกแ แฃแแแแฃแแ แขแแกแขแแแแก แจแแแแแแแแ แแแแแแแแแแแ, แแฃแชแแแแแแแแ แแแ แแแแก แแแแคแแแฃแ แแชแแแก แแแแจแแแแแแแแแ แแกแแแฅแขแแแแก แแฆแฌแแ แ. แคแแฅแขแแ, แ แแ CS แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แ แแแแแจแ, แ แแแแแแช แแซแแแแ แแแแแชแแแแ แแแแแ แแแแก แกแแจแฃแแแแแแก. แแแแ. แแก แแแจแแ, แ แแแแกแแช แแฎแแแแ แแ แแ แกแแ แแแ แ (แแแแแซแ) แแ แแก แแแกแฃแฎแแกแแแแแแแ แแแ แแแแฃแแ แแแกแแฆแแแแก แแแแแชแแแแแแ แแ แแฃ แ แแแแ แแแแแแแ แแก แแแ แแแฎแแ แฎแแ, แแแจแแ แแ แแแกแแฆแแแแก แแแแจแแแแแแแ แแแแแแ แแแแ. แแแแ แ แแแแชแแแแกแแแแก แแก แแ แแ แแก แแ แแขแแแฃแแ, แแแแ แแ แกแแแแแแ แกแแฅแขแแ แแกแแแแก แแก แแ แแก แแแแแแแแแแกแ แแ แแ แ แฌแแกแ. แฉแแแแก แจแแแแฎแแแแแจแ แแแแจแแแแแแแแแแ แแแแแชแแแแ แ แแแแแแแแ แแกแแแก แแ แกแแแแแ แกแแแแแแ แจแแแแฎแแแกแแแแก.
แแแแขแแ แแแแแฎแแแแแแแ แแฎแแแแ CS แแแแ แแชแแฃแแ แ แแแแแ แกแแแแแแ แ แแแแแแแชแแแก แ แแแแแจแ, แ.แ. แกแแฅแแแแแแก แกแแแ แชแแก แจแแฅแแแ แแแแฎแแ แชแแแแแ แจแแแแแแ แแแ แแแแขแ แแแแ:
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.40 GHz 64 แซแแคแแแ.
แแแกแแแแ: 12 แชแแแ SATA HDD
java แแแ แกแแ: 1.8.0_111
CS แแแ แกแแ: 3.11.5
cassandra.yml แแแ แแแแขแ แแแแแแขแแแแแแก_แ แแแแแแแแ: 256
hinted_handoff_enabled: แแแ แแแแแ
hinted_handoff_throttle_in_kb: 1024
max_hints_delivery_threads: 2
hints_directory: /data10/cassandra/hints
แแแแแจแแแแแแ_flush_period_in_ms: 10000
max_hints_file_size_in_mb: 128
batchlog_replay_throttle_in_kb: 1024
แแแแแแขแแคแแแแขแแ แ: AllowAllAuthenticator
แแแขแแ แแแแขแแ แ: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
permissions_validity_in_ms: 2000
credentials_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- /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
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
แแแ แแแแขแ แแแแ:
- แแแกแแ: "*,*"
แแแ แแแแแฃแ แแ_แฌแแแแแฎแฃแแ: 256 # แกแชแแแ 64 - แแแแกแฎแแแแแแ แแ แจแแแแฉแแแแ
concurrent_แฌแแ แก: 256 # แชแแแแแแแ 64 - แแแแกแฎแแแแแแ แแ แจแแแแฉแแแแ
concurrent_counter_write: 256 # แชแแแแแแแ 64 - แแแแกแฎแแแแแแ แแ แจแแแแฉแแแแ
concurrent_materialized_view_แฌแแ แก: 32
memtable_heap_space_in_mb: 2048 # แกแชแแแ 16 แแ - แฃแคแ แ แแแแ แแงแ
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_แฌแฃแแแแจแ: 60
trickle_fsync: แแชแแแ แ
trickle_fsync_interval_in_kb: 10240
แจแแแแฎแแแก_แแแ แขแ: 7000
ssl_storage_port: 7001
listen_address: *
แแแแแชแแแแก_แแแกแแแแ แแ: *
listen_on_broadcast_address: แแแ แแแแแ
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: แแแ แแแแแ
แแจแแแแแฃแ แ_แขแ แแแกแแแ แขแ_แแแ แขแ: 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: false
auto_snapshot: แแแ แแแแแ
column_index_size_in_kb: 64
column_index_cache_size_in_kb: 2
แแแแแฎแแแแ_ แแแแแแฅแขแแ แแแ: 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: แแชแแแ แ
endpoint_snitch: GossipingPropertyFileSnitch
dynamic_snitch_update_interval_in_ms: 100
dynamic_snitch_reset_interval_in_ms: 600000
dynamic_snitch_badness_threshold: 0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
server_encryption_options:
internode_encryption: แแ แชแแ แแ
client_encryption_options:
แฉแแ แแฃแแแ: แงแแแแ
internode_compression: dc
inter_dc_tcp_nodelay: แแชแแแ แ
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_warn_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:+แแแแแแงแแแConcMarkSweepGC
-XX:+CMSParallelRemark แฉแแ แแฃแแแ
-XX:Survivor Ratio=8
-XX:MaxTenuringThreshold=1
-XX:CMSInitiating OccupancyFraction=75
-XX:+UseCMSInitiating OccupancyOnly
-XX:CMSWaitDuration=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordAlways
-XX:+CMSClassUnloadingEnabled
jvm.options แแแฎแกแแแ แแแแก แแแแแแ 16 แแ (แฉแแแแช แแชแแแแ 32 แแ, แแแแกแฎแแแแแแ แแ แจแแแแฉแแแแ).
แชแฎแ แแแแแ แจแแแฅแแแ แแ แซแแแแแแ:
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.แแแ แแแแ: 2 แฌแฃแแ
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.แแแ แแแแ: 2 แฌแฃแแ
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.แแแ แแแแ: 4 แกแแแแ
hbase.regionserver.maxlogs: 200
hbase.hregion.memstore.flush.แแแแ: 1 แแแแแแขแ
hbase.hregion.memstore.block.multiplier: 6
hbase.hstore.compactionThreshold: 5
hbase.hstore.blockingStoreFiles: 200
hbase.hregion.major compaction: 1 แแฆแ(แแแ)
HBase Service Advanced Configuration Snippet (Safety Valve) 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:+CMSParallelRemark แฉแแ แแฃแแแ -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 แฌแฃแแ
hbase.snapshot.region.timeout: 2 แฌแฃแแ
hbase.snapshot.master.timeout.millis: 2 แฌแฃแแ
HBase REST แกแแ แแแ แแก แแแฅแกแแแแแฃแ แ แแฃแ แแแแแก แแแแ: 100 MiB
HBase REST แกแแ แแแ แแก แแแแแก แคแแแแแก แแแฅแกแแแแแฃแ แ แกแแ แแแแ แแ แแกแแแแ: 5
HBase Thrift Server Max Log แแแแ: 100 MiB
HBase Thrift แกแแ แแแ แแก แแแแแก แคแแแแแก แแแฅแกแแแแแฃแ แ แกแแ แแแแ แแ แแกแแแแ: 5
Master Max Log แแแแ: 100 MiB
แแแแแก แคแแแแแก แกแแแแแแกแขแ แ แแแฅแกแแแแแฃแ แ แแแฅแกแแแแแฃแ แ แกแแ แแแแ แแ แแกแแแแ: 5
RegionServer Max Log แแแแ: 100 MiB
RegionServer แแแฅแกแแแแแฃแ แ แแฃแ แแแแแก แคแแแแแแแก แกแแ แแแแ แแ แแกแแแแ: 5
HBase Active Master Detection Window: 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
แแแแแแขแแก Java Heap แแแแ แแแแขแแแจแ: 1 แแแแแแขแ
HBase REST แกแแ แแแ แแก แแแแฃแแแกแฎแแแแ แฏแแฃแคแ: 3 แแแแแแขแ
HBase Thrift แกแแ แแแ แแก แแแแฃแแแกแฎแแแแ แฏแแฃแคแ: 3 แแแแแแขแ
Java Heap HBase Master-แแก แแแแ แแแแขแแแจแ: 16 แแแแแแขแ
Java Heap HBase RegionServer-แแก แแแแ แแแแขแแแจแ: 32 แแแแแแขแ
+ZooKeeper
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 แแ-แแแ แจแแแแฎแแแก แกแแจแฃแแแแแแก, แ.แ. แกแแจแฃแแแ แแแแแก แแแแแแ.
แขแแกแขแแก แแ แแก HBase-แก แฐแฅแแแแ 22 แแแแกแ แชแฎแ แแแ แแ 67 แแแแกแ แ แแแแแแ (แแก แกแแกแแแแแแแ แแฅแแแแแแ 1.2.0 แแแ แกแแแกแแแแก, แ แแ แแ แ แแแแแ แแแฎแกแแแแแ แแแขแฉแ).
แแฎแแ แแแแแกแแแแก. แแแแก แแแแ, แ แแ แแแฃแ แแแแแแแ แแงแ, แ แแแแแ แแแแคแแแฃแ แแชแแแแ แแงแ แฃแคแ แ แแแแแแแแแแ แแแแแ แแขแฃแแ แแแแแชแแแแ แแแแแกแแแแก, แขแแกแขแแแ แฉแแขแแ แแ แกแฎแแแแแกแฎแแ แแแแแแแแชแแแแจแ. แแแแ. แแแแแแ แ แขแแกแขแจแ แแ แแแ แแฃแแแ แฉแแแขแแแ แแ 4 แชแฎแ แแแ (แแแแแแจแแ แแแแกแแแแก แแแแแงแแแแแฃแแ แแงแ แแแฎแแแ แแแแแซแ). แกแฎแแ แขแแกแขแแแจแ แฉแแแ แแแแฃแจแแแแ 4 แกแฎแแแแแกแฎแแ แชแฎแ แแแแ. แแแแแแ แ แจแแแแฎแแแแแจแ, แกแแ แแแก แแแแ แแงแ 8, แแแแจแ 100 (แแแ แขแแแก แแแ แแแแขแ แ - แแฎแแแแ แแแแ แฅแแแแแ). แแแแจแแแแแแแแกแแแแก แแแแแชแแแแ แแแแ แแ แแก 200 แแแแขแ แแ 10 แแแแขแ (dataSize). แกแแแ แแ แฏแแแจแ, แงแแแแ แฏแแ แแ 100 แแแแแแแ แฉแแแแฌแแ แ แแฌแแ แแแแแ แแ แแแแแฎแแแแแ แแแแแแฃแ แชแฎแ แแแจแ. แแแแแแ แแฃแแแ, แแแแแแฃแ แแแแแแแแ แแแแฌแแ แ/แฌแแแแแแฎแ 5 แแแแ (แซแแคแแก แแแแแ แ - thNum), แ แแแแแแแแแ แแแแแแฃแแแ แแแแแแงแแแ แแแกแแฆแแแแแแก แกแแแฃแแแ แ แแแแแแแแแ (แแแแ = 5 แแแแแแแ):
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-แแก แแแกแขแแแแชแแแจแ แแ แแก แ แแแแ แกแแฎแแก แจแแคแแ แฎแแแ. แแฃแแชแ, Google-แแ แแ แงแแแแแแ แแจแแแ แ แแแ แแแแขแ แแแแก แซแแแแแ (แ แแแแ แแชแแ concurrent_writes แแ memtable_heap_space_in_mb) แแ แแแแฉแฅแแ แ แแแแแแแแแ. แแแแแแ แแฃแแแ, แแแ แแแ แกแฃแคแแแ แแ แแ แแคแแ แแ แแแคแแชแแแ.
แแแแแชแแแแแ แแแแแแ แแ แแแแแแแฌแแแแ แแแแแซแแแจแ, แกแขแแขแแกแขแแแ แงแแแแ แแแแแซแแแแ แแแแฎแแแแแแ แแ แแแแแ แ แแงแ.
แแกแ แแแแแแงแฃแ แแแ แชแฎแ แแแแก แกแขแแขแแกแขแแแ แแ แ-แแ แแ แแแแแซแแแแKeyspace: ks
แฌแแแแแฎแแแก แ แแแแแแแแ: 9383707
แฌแแแแแฎแแแก แจแแงแแแแแแ: 0.04287025042448576 ms
แฉแแฌแแ แแก แ แแแแแแแแ: 15462012
แฉแแฌแแ แแก แจแแงแแแแแแ: 0.1350068438699957 ms
แแแแแแแแแ แแแแแฌแฃแ แแแแ: 0
แชแฎแ แแแ: t1
SST-แแก แ แแแแแแแแ: 16
แแแแแงแแแแแฃแแ แคแแ แแ (แแแแแจแ): 148.59 MiB
แแแแแงแแแแแฃแแ แคแแ แแ (แกแฃแ): 148.59 MiB
แกแแแแจแแขแแแแก แแแแ แแแแแงแแแแแฃแแ แกแแแ แชแ (แกแฃแ): 0 แแแแขแ
แแแแแงแแแแแฃแแ แแแแแ แแฃแแ แแแฎแกแแแ แแแ (แกแฃแ): 5.17 MiB
SSTable แจแแแฃแแจแแแก แแแแคแแชแแแแขแ: 0.5720989576459437
แแแแแงแแคแแแแก แ แแแแแแแแ (แจแแคแแกแแแ): 3970323
Memtable แฃแฏแ แแแแแแก แ แแแแแแแแ: 0
Memtable แแแแแชแแแแ แแแแ: 0 แแแแขแ
แแแแแงแแแแแฃแแ Memtable off heap แแแฎแกแแแ แแแ: 0 แแแแขแ
Memtable แแแแแแ แแแแแแก แ แแแแแแแแ: 5
แฌแแแแแฎแแแก แแแแแแแแ แแแ แ แแแแแแแแ: 2346045
แแแแแแฃแ แ แฌแแแแแฎแแแก แจแแงแแแแแแ: NaN ms
แแแแแแแแ แแแ แฉแแฌแแ แแก แ แแแแแแแแ: 3865503
แฉแแฌแแ แแก แแแแแแฃแ แ แจแแงแแแแแแ: NaN ms
แแแแแแแแแ แแแแแฌแฃแ แแแแ: 0
แแ แแชแแแขแ แแแ แแแแแขแแแฃแแ: 0.0
Bloom filter แชแ แฃ แแแแแแแแ: 25
แแงแแแแแแแก แคแแแขแ แแก แชแ แฃ แแแแแคแแ แแแแ: 0.00000
แแแแแงแแแแแฃแแ Bloom แคแแแขแ แแก แกแแแ แชแ: 4.57 MiB
Bloom filter off heap memory แแแแแงแแแแแฃแแ: 4.57 MiB
แแแแแงแแแแแฃแแ แแ แแแแก แแแฎแกแแแ แแแแก แแแแแฅแกแแก แจแแฏแแแแแ: 590.02 KiB
แแแแแงแแแแแฃแแ แจแแแฃแแจแแแก แแแขแแแแแแชแแแแแแก แแแแแ แแแแก แแ แแแแก แแแฎแกแแแ แแแ: 19.45 KiB
แแแแแแฅแขแฃแ แ แแแแแงแแคแแก แแแแแแแแฃแ แ แแแแขแ: 36
แแแแแแฅแขแฃแ แ แแแแแงแแคแแก แแแฅแกแแแแแฃแ แ แแแแขแ: 42
แแแแแแฅแขแฃแ แ แแแแแงแแคแแก แกแแจแฃแแแ แแแแขแ: 42
แกแแจแฃแแแ แชแแชแฎแแแ แฃแฏแ แแแแแ แแแแ แแแญแแ แแ (แแแแ แฎแฃแแ แฌแฃแแ): NaN
แชแแชแฎแแแ แฃแฏแ แแแแแแก แแแฅแกแแแแแฃแ แ แ แแแแแแแแ แแแแ แแแญแแ แแ (แแแแ แฎแฃแแ แฌแฃแแ): 0
แกแแจแฃแแแ แกแแคแแแแแก แฅแแแแ แแแแ แแแญแแ แแ (แแแแ แฎแฃแแ แฌแฃแแ): NaN
แกแแคแแแแแก แฅแแแแแก แแแฅแกแแแแแฃแ แ แ แแแแแแแแ แแแแ แแแญแแ แแ (แแแแ แฎแฃแแ แฌแฃแแ): 0
แแแแแแ แแแแแ แแฃแขแแชแแแแ: 0 แแแแขแ
แฏแแฃแคแแก แแแแแก แจแแแชแแ แแแแก แแชแแแแแแแ (แแฃแแแแช แแแแแแแแฃแแแฃแ แแ แแแแแแแแ) แจแแแแแ แแ แแแฐแงแแแแ, แแก แแฎแแแแ แแแฃแแ แแกแแ. แจแแกแแซแแแแแแแ, แ แแ แกแแแแแแแแแแจแ แแก แแ แแก แแแ แแแแช แแแฅแกแแแแแฃแ แ แจแแกแ แฃแแแแ CS-แกแแแแก, แ แแแแแ CS-แกแแแแก แแแฆแแแฃแแ แจแแแแแแแ แแกแแแแกแแ DataStax-แแกแแแแก แแแฆแแแฃแแแก - แแแแฎแแแแแแ แแกแแแแ แแแแกแ แแแแ แแชแแ แฌแแแจแ. แแแ แแ แแแแกแ, แแฃ แแแแแแฎแแแแแ แ แแกแฃแ แกแแแแก แแแแแงแแแแแแก, แแแแแแแฎแแแ, แ แแ CS แแงแแแแแก แแแแ แแ แแแข CPU-แก แแ แแแกแแแแก:
แคแแแฃแ แแจแ แแแฉแแแแแแแ แแแแแแแ แงแแแแ แขแแกแขแแก แแแแแงแแแแแ แแ แแแ แแแแแชแแแแ แแแแแกแแแแก.
แ แแช แจแแแฎแแแ HB-แแก แแซแแแแ แแแแฎแแแก แฃแแแ แแขแแกแแแแก. แแฅ แฎแแแแแ, แ แแ แแ แแแ แแแแแชแแแแ แแแแแกแแแแก, แแแกแแแก แแแแแงแแแแแ แแแแฎแแแก แแ แแก แฃแแแแฃแ แแกแแ แแแแแแแ (แฌแแแแแฎแแแก แขแแกแขแแแ แแ แแก แขแแกแขแแ แแแแก แชแแแแแก แแแแ แแแฌแแแ แแแแแแฃแแ แแแแแชแแแแ แแแแแกแแแแก, แแแแแแแแแ CS-แกแแแแก แแก แแ แแก 15:20-แแแ 15:40-แแแ). HB-แแก แจแแแแฎแแแแแจแ แแแแแแ แแแกแแแแแแ โ แแแแแชแแแแแแก แฃแแแขแแกแแแ แแแฎแกแแแ แแแแจแ, memstore-แจแ แแแแแ, แแแฌแแแ แแ แฅแแจแแ แแแฃแแแ แแแแแฅแแจแจแ. แ แแช แจแแแฎแแแ CS-แก, แแ แช แแกแ แแแแแแแ, แ แแแแ แแฃแจแแแแก, แแแแ แแ แแแกแแแก แแแแแแฃแจแแแแแ แแกแแแ แแ แฉแแแก, แแแแ แแ แงแแแแแ แจแแแแฎแแแแแกแแแแก, แแชแแแแแแ แแงแ แฉแแ แแแ แฅแแจแ row_cache_size_in_mb = 2048 แแ แแแแงแแแแ แฅแแจแแ แแแ = {'keys': 'ALL', 'rows_per_partition': '2000000'}, แแแแ แแ แแแแ แแแแแ แฃแคแ แ แแแแฃแแ แแกแ.
แแกแแแ, แแแแแ แแ แแฎแแ แฃแแแ แแฆแแแแจแแแก แแแแจแแแแแแแแแ แฌแแ แขแแแ HB-แจแ แ แแแแแแแแแก แ แแแแแแแแแก แจแแกแแฎแแ. แฉแแแ แจแแแแฎแแแแแจแ, แแแแจแแแแแแแ แแงแ แแแแแแแแฃแแ, แ แแแแ แช 64. แแฃ แแฅแแแ แจแแแแชแแ แแแ แแ แแแฃแขแแแแแ, แแแแแแแแแ, 4-แก, แแแจแแ แฌแแแแแฎแแแกแแก แกแแฉแฅแแ แ แแชแแ แแแแ 2-แฏแแ . แแแแแแ แแก แแ แแก, แ แแ memstore แฃแคแ แ แกแฌแ แแคแแ แแแกแแแ แแ แคแแแแแแ แฃแคแ แ แฎแจแแ แแ แแ แแชแฎแแแ แแ แฌแแแแแฎแแแกแแก แแแขแ แคแแแแแก แแแแฃแจแแแแแ แแฅแแแแ แกแแญแแ แ, แ แแช แกแแแแแแ แ แแฃแแ แแแแ แแชแแแ HB-แกแแแแก. แ แแแแฃแ แแแ แแแแแจแ, แแแแก แแแแแแ แแแ แจแแกแแซแแแแแแแ แฌแแแแกแฌแแ แแแงแแคแแกแ แแ แแแแแแฅแขแแแแชแแแก แกแขแ แแขแแแแแก แแแแแงแแแแแแ; แแแ แซแแ, แฉแแแ แแแงแแแแแ แแแแแแแฌแแ แก, แ แแแแแแช แแแ แแแแแก แแแแแแก แแ แแแฃแแจแแแก HFiles แแฃแแแแแแ แคแแแแ. แกแแแกแแแแ แจแแกแแซแแแแแแแ, แ แแ DataStax แขแแกแขแแแแกแแแแก แแแ แแแแแแงแแ แแฎแแแแ 1 แ แแแแแแ แแแแ แชแฎแ แแแแ (แ แแช แแ แแ แแก แกแฌแแ แ) แแ แแก แแแ แแแแฃแแฌแแแแ แแแแแแ แขแแแก, แแฃ แ แแขแแ แแงแ HB แแกแ แแแแแแ แแแแฎแแแก แขแแกแขแแแจแ.
แแฅแแแแ แแแแแแแแแแ แแแแก แจแแแแแแ แฌแแแแกแฌแแ แ แแแกแแแแแแ. แแฃ แแแแแ แแฃแแแแ, แ แแ แขแแกแขแแ แแแแก แแ แแก แแแแจแแแแแแแแแ แจแแชแแแแแแ แแ แแแจแแแแฃแแ, แแแจแแ แแแกแแแแ แ แฐแแแแก แแแแแกแก แแแฎแแก แขแแ แคแแแแ. แฃแคแ แ แแฃแกแขแแ, แ แแแแกแแช แแก แแ แ แคแแฎแแ แแแแแแกแก แแแแแแแก, แ แแแแ แช แกแขแแขแแแก แแแกแแฌแงแแกแจแ แกแฃแ แแแแ, แจแแแแ แแแแ แแแ แ แจแแแแแก แแฉแแแแแแก, แแแแ แแ แแแแแ แแแ แแแแแจแ แฉแฎแฃแแแก แแ แแก แแก แแจแแแ แแ แแแแแก. แแแแแแ แแฃแแแ, แฉแแแแก แแแแ แแขแฃแ แแแ CPU-แแก แแแแแแ แแแแแงแแแแแแก แแแแแแแแกแฌแแแแแแ, แแแกแฌแแแแแ แแ แ RegionServer HB-แแก แแแงแแแแแ แแแแ แฐแแกแขแแ แแ แแแแ แแแแแแ แแแแแ แจแแกแ แฃแแแแ. แแแแ. แ แแกแฃแ แกแแแแก แแแแแกแแแแก แแแแแแแแกแฌแแแแแแ, 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