áá áááľ áĽááłá á áá°áá ᣠáá áአááľá á¨áĽááá á á¨ááἠááłáá˝ ááááľ á áľááá á¨ááŤáááŁáá áááľáá ᣠáĽá á áá¨á¨áťá ááá áĽáá°áá ááá áááá-
á á˛á˘-á˘ááááŽá˝ á°á¨á á á°áŁáĽ áá á¨áľáŁ áááą á áŁá áłááááš á¨NoSQL áááľ áłáłá¤ááá˝ áŤáłááľáŤ (á¨áá
á áá CS) áĽá HBase (HB) áá¸áá˘
á áĽáŁ áááłá á¨áĽá á¨ááἠáááľ á áľá°áłá°á áĄáľá á Sberbank ááľááá á ááá˘
ááá áá, áá° á°á°á¨ááľ á¨áá°ááá˝ áá¤áśá˝ á¨ááá áá á ááľ, á¨á áŤáŁá˘áŤá á ááááŽá˝á ááá
áá˝áłáá˝ áááá˝ á áľááá áá. áĽáááłá áá á˛á¤áľ á¨ááἠááĽááľá á ááá
áľ áááł áá áá ááťáá. áĽáááŤá˘ áá
áá ááľ á¨á°áá°á ááá ááἠá ááľ á áááá (ááľ) áĽáť á°á áŤá á áááá áľ áá áá ᣠáĽá á áá ááááŤáľ áŤáá°áłáŤ ᣠá¨á፠á¨áá
ááá áá áá ááᢠááĽá á°ááŁáŤáľ áá
ááłá á áá°áá, ááá áá ááŁáá á´áá°á áá
á¨á°áᥠááá
áአáá. á áĽá áááł, ááłáá áá¨ááť áĽá á
ááá˝ ááአá áľááá áá.
áľááá , á¨áśáľáľáŽá˝ ááŁááľ áááł á¨á˛á¤áľ áŚááŹá˛áá áááł áĽáť áá á¨áłá°á á, áááľá. á¨ááłá áŚáł ááá á á áá¨á°ááľ áááŞáŤáá˝ á°áŤááˇáá˘
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 á á°ááłáłá ááá áá áá°áŤá, áááľá. áĽáá˛á ááááą áá˝á˝á á¨á áá ááľáá áááá.
áłáłáľáłááľ á áĽááłá¸á ááľáĽ á°ááŤááá áĽááłá°á¨á áἠááŁá áááŁá ᣠááááąá CS áĽá HB (áááá°áá ᨠHDFS á ááĽáŽá˝á á ááá¨á) RF = 1 á ááá á°áá ᢠá áá ááłá áá á á˛á¤áľ á áááá áá áŤáá á°á˝áĽá á áŁá áľáá áľááá áá á áŁá á áľááá áá˝áł áá. áááłáᣠá¨áłá˝ áŤáá ááľá áááĽá áá° á˛á¤áľ áááŤá á¨áááááá áá áá¨áá áŤáłáŤááĄ-
áĽáá
á¨áá¨á°ááá áĽááŤááᥠáĽá á°ááŤáŤáŞ ááŽá˝ ááἠá˛á˝áᣠáĽá áá áááľáłáᢠáá
á°ááĽáŻá áá, ááá áá á RF = 3 á¨á áááá ááľááľ á áŁá á¨á áŤá ááá á áľááá áá. á áá á áááá áĽáŤááłááłá¸á 4 ááŽá˝ á 5 á°áá á¨áŚá˝ (á á á ááá 20) á¨áťáá, á¨ááŤá RF=3 á 2 áá áŤá
á áá¸ááá (150 á°á¨ááľ á RF = 3 áĽá 75 á RF=1). ááá áá áá¨áá áá° 8 á á¨á´ááá˝ á ááŤá áĽáŤááłááąá 5 ááŽá˝ (á á á ááá 40) á¨á¨ááá ᨠRF=3 áŞáłáŤ ááľááá 2,7 áá áá (375 á´áŽáᾠᨠ138 áá)á˘
ááááŁáľ áá á áłáłáľáłááľ á CS á¨á°á°á¨áá á¨á°áłáŤ á¨ááľ áá¨áŤ ááľáĽáŠ á á¨áá ááᣠááááŤáąá HB á áĽá á áá ᨠ2 áá° 3 á¨ááŁááľ áááłá áááἠááá áá¤áľ á áááŁáᢠáĽáááŤá˘ á˛áľáŽá˝ áá áá á¨áľ ᨠHB ááá á áá°ááᢠááá ááᣠáĽáá áĽá ááá˝ ááĽááśá˝ á áᣠááááŤáąá á¨áĽá á¨HB áĽáľá á áľááš á°áľá°áŤáá áĽá á°áľá°áŤááá ᣠá áŤáŁá˘ááš áá á áá á¨á°ááŤáŠ áá¸á ᣠááá°. áĽáá˛áá ááááŁáľ CSá á áľááá áĽáá´áľ áááááľ áĽááłááĽá á ááá á áĽá á¨áĽáą áá áááľáŤáľ á ááłááľ á°á¨á᪠áá¤áłá ááááśá˝ áĽááłá áἠááŁá á¨áááŁá áá, áĽá á á áľá°áŤá¨áśáš ááľáĽ áĽáá°áááá á°áľá á á°áááá. áá ááááŞáŤ áááŽá˝ ááááŞáŤá˘
ááá áá¨áŤáá˝ á¨á°á¨ááááľ 4 á ááááŽá˝á áŁáá á¨áááľáá áááľá°á áá ááᣠáĽáŤááłááłá¸á á¨áá¨á°áá áá á á áá¸áá˘
á˛ááŠáĄ Xeon E5-2680 v4 @ 2.40GHz 64 ááŽá˝á˘
á˛áľáŽá˝: 12 áááĽáŤáŽá˝ SATA HDD
á፠áľáŞáľ: 1.8.0_111
CS áľáŞáľ: 3.11.5
cassandra.yml áááŞáŤáá˝ááĽá_áśá¨áá˝áĄ 256
ááá_áĽá
_á¨ááᥠáĽáááľ
ááá_á¨á°á°á _áááśá_áľáŽáľá_á áŞáŁáĄ 1024
á¨áá°á_ááá_ááľá¨áľ_ááŽá˝áĄ 2
hints_directory: /data10/cassandra/hints
ááá_ááłá˝_áá_á áá´áĄ10000
á¨áá°á_ááá_á¨ááá_áá á_á ááŁáĄ 128
áŁá˝áá_áľáá_áľáŽáľá_á áŞáŁáĄ 1024
á á¨áááᥠAllowAll á á¨ááá
á°áŤá˛áĄ AllowAllAuthorizer
áá_á áľá°áłáłáŞáĄ CassandraRoleManager
áááá˝_áľááááááľ_á áá´áĄ 2000
á¨áááśá˝_áľááááááľ_á áá´áĄ 2000
ááľááááśá˝_áľááááááľ_á áá´áĄ 2000
áááááᥠorg.apache.cassandra.dht.Murmur3ááááá
á¨áááĽ_ááá_áłááŹááśáŞáá˝áĄ-
- /áłáł1/áŤáłááľáŤ/áłáł # áĽáŤááłááą áłáłá¤á áá፠á¨á°áᨠá˛áľá ááá˘
- /áłáł2/áŤáłááľáŤ/áłáł
- /áłáł3/áŤáłááľáŤ/áłáł
- /áłáł4/áŤáłááľáŤ/áłáł
- /áłáł5/áŤáłááľáŤ/áłáł
- /áłáł6/áŤáłááľáŤ/áłáł
- /áłáł7/áŤáłááľáŤ/áłáł
- /áłáł8/áŤáłááľáŤ/áłáł
Committeelog_directory: /data9/cassandra/commitlog
cdc_á¨ááᥠáá°áľ
á¨á˛áľá_á áááłáŤáľ_áááŞáŤáĄ á áá
á¨ááľááľá_áááŞáŤ ááá¸áᥠááá
á¨á°ááá_ááááŤáá˝_áá¸ááŤ_áá á_mbáĄ
á áá áŁ_á¨á°ááá_ááááŤáá˝_áá¸ááŤ_áá á_ááŁáĄ-
á¨ááá_áá¸ááŤ_áá á_á ááŁáĄ
á¨ááá_áá¸ááŤ_ááłá_ááᥠ14400
á¨á¨áľá_áá¸ááŤ_áá á_á ááŁáĄ0
á¨áľá_áá¸ááŤ_á¨ááłá_ááᥠ0
ááŁáŞ_áá¸ááŤ_áá á_á ááŁáĄ
ááŁáŞ_áá¸ááŤ_ááłá_ááᥠ7200
á¨á°ááá _áá¸ááŤ_áłááŹááśáŞáĄ /data10/cassandra/saved_caches
ááá áááľ_sync: áá
áłá
áŽááá_sync_period_in_ms: 10000
á¨áŽáá˝á_ááá_áá á_á ááŁáĄ 32
áá_á á
áŤá˘
- ááá_áľá: org.apache.cassandra.locator.SimpleSeed á á
áŤá˘
áááŞáŤáá˝
- ááŽá˝: "*,*"
concurrent_reads: 256 # ááá¨áá 64 - ááá ááŠááľ á ááłá¨á
á á ááľ áá_áá˝ááᥠ256 # áááŻá 64 - ááá ááŠááľ á ááłá¨áá˘
á á ááľ áá_ááŁáŞ_áá˝ááᥠ256 # áááŻá 64 - ááá ááŠááľ á ááłá¨áá˘
á á ááľ áá_ááłá_áááł_áá˝ááᥠ32
á¨áááááłááľ_ááá_áŚáł_á ááŁáĄ 2048 # 16 áᣠáááŻá - áááá áá á
á¨áááááłááľ_ááá°áĽ_á áááľáĄ ááá_ááááŤáá˝
áá¨á á áá_áá áááŤ_á á
á_á ááŁáĄ-
á˘áá´ááľ_áá áááŤ_á¨áá á_á¨áá_á°ááᥠ60
trickle_fsync: áá¸áľ
trickle_fsync_interval_in_kb: 10240
á¨áá¨ááť_áá°áĽ: 7000
á¤áľá¤áľá¤á_áá¨ááť_áá°áĽáĄ 7001
áŤáłááĄ_á áľáŤáťáĄ*
á¨áľáááľ_á áľáŤáťáĄ *
á áľáááľ_á áľáŤáť_áŤáłááĄáĄ áĽáááľ
internode_authenticatorᥠorg.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_ááááŁáĄ áĽáááľ
á¤á°á_áľáŤááľáááľ_áááľáĄ 9042
start_rpc: áĽáááľ
á ááá˛_á áľáŤáťáĄ*
á ááá˛_áááľáĄ 9160
rpc_keepalive: áĽáááľ
rpc_server_typeᥠáááłá°á
ááŁá˘_ááŹáľ_á¨áľáŤááľáááľ_áá á_á ááŁáĄ 15
á°á¨ááŞ_ááľáŹáá˝áĄ áá°áľ
á
á˝á áłá_ááś_á ááľ_áááá
áĄ- áá°áľ
auto_snapshot: áĽáááľ
á¨á ááľ_á˘áá´ááľ_áá á_á áŞáŁáĄ 64
á ááľ_á˘áá´ááľ_á¨áá¸ááŤ_áá á_á áŞáŁáĄ 2
á°ááłá_áŽáááá°áŽá˝áĄ 4
compaction_throughput_mb_per_sec: 1600
á¨á°á¨áá_á
áľá_áááľ_áááľ_áá_á ááŁáĄ 50
á¨ááá áĽ_áĽáŤá_áá_áá_á áá°áĄ100000
ááá_á¨áĽáŤá_áá_áá_á áá°áĄ200000
áťá_request_timeout_in_ms: 40000
á á¸áá_ááťá_áĽáŤá_áá_á áá°áĄ100000
á¨ááľ_ááľáľá_áá_á áá´_ááľáĽáĄ 20000
ááá¨áŤ_áĽáŤá_áá_á áá´_ááľáĽáĄ60000
á¨áĽáŤá_áá_áá_á áá´áĄ 200000
slow_query_log_timeout_in_ms: 500
ááľááá ááááľ_áá á áááᥠáá°áľ
endpoint_snitch: GossipingPropertyFileSnitch
á°áááá_snitch_ááá_interval_in_ms: 100
á°áááá_snitch_reset_interval_in_ms: 600000
á°áááá_áľáá˝_ááĽá_á°á¨áᥠ0.1
request_scheduler: org.apache.cassandra.scheduler.NoScheduler
á¨á áááá_ááľá áŤ_á ááŤáŽá˝áĄ-
internode_encryption: á¨áá
á¨á°áá á_ááľá áŤ_á ááŤáŽá˝áĄ-
á¨ááᥠáá¸áľ
internode_compression: dc
inter_dc_tcp_nodelayᥠáá°áľ
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
á áá_á°á áá_á¨á°áááš_á°ááŁáŤáľáĄ áá°áľ
á áá_áľááŞááľ_á á°á áá_á¨á°áááš_á°ááŁáŤáľáĄ áá°áľ
windows_timer_interval: 1
ááá˝_á¨áááĽ_ááľá áŤ_á ááŤáŽá˝áĄ-
á¨ááᥠáá¸áľ
á¨áááĽá_áľááá_á áľá áá
á
_á°á¨áᥠ1000
á¨áááĽá_áľáááŤ_ááľááľ_á°á¨áᥠ100000
áŁá˝_áá á_áŤáľá áá
áá_á°á¨á_á áŞáŁáĄ 200
áŁá˝_áá á_ááľááľ_á°á¨á_á áŞáŁáĄ 250
áŤáá°ááááĄ_áŁá˝_á á ááŤá_áááááŽá˝_áŤáľá áá
ááᥠ10
á¨áłáá_áľáá
_ááááá_á¨ááľá ááááŤ_áŁáŤ_mbᥠ100
gc_ááľá ááááŤ_áá°áĽ_á áá°áĄ 1000
á¨áá_áááľ_áá
áˇáᥠáá°áľ
á¨ááłááľ_áááłáá˝á á ááᥠáĽáááľ
á áá_sasi_indexesᥠáĽáááľ
á¨áᲠá ááĽáŽá˝áĄ-
### á¨á˛á¤áá¤áľ á
áá
áśá˝-XX:+ParNewGC áá áá
-XX:+ConcMarkSweepGC áá áá
-XXáĄ+CMSParallelRemark áá
áˇáá˘
-XXáĄSurvivorRatio=8
-XXáĄMaxTenuringThreshold=1
-XXáĄCMSIniitiatingOccupancyFraction=75
-XXáĄ+ááá፠áĽáť á°á áá
-XXáĄCMSWwaitDuration=10000
-XXáĄ+CMSparallelá¨ááááŞáŤ ááááľ á¨áá
-XX:+CMSEdenChunks áááἠáááá
-XXáĄ+CMSClass ááá¨áľ áá
áˇáá˘
ᨠjvm.options áá á°á¨ áľááľáł 16Gb á°ááľá§á (á á°á¨ááŞá 32 Gb ááá¨áá, ááá ááŠááľ á ááłá¨á).
á áá á¨áŚáš á¨á°áá áŠáľ á áľáĽáá áááĄ-
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 áĽá ááá á áááá áá ᨠ1000 á áá á áá á¨á áľ áá GC áŤá°á¨á°áá MetricsRegion á ááá)
ááŁáŞ áŤááá á¨HBase áááŞáŤáá˝zookeeper.session.áá ááĽááŤáĄ 120000
hbase.rpc.áá ááĽááŤáĄ 2 á°áá(áá˝)
hbase.client.scanner.timeout.periodᥠ2 á°áá(áá˝)
hbase.master.handler.ááĽáᥠ10
hbase.regionserver.lease.periodᣠhbase.client.scanner.timeout.periodᥠ2 á°áá(áá˝)
hbase.regionserver.handler.ááĽáᥠ160
hbase.regionserver.metahandler.ááĽáᥠ30
hbase.regionserver.logroll.period: 4 á°ááśá˝
hbase.regionserver.maxlogs: 200
hbase.hregion.memstore.flush.áá á: 1 áá˘
hbase.hregion.memstore.block.multiplierᥠ6
hbase.hstore.compaction á°á¨áᥠ5
hbase.hstore.blockingá¨áá°áĽá áááá˝áĄ 200
hbase.hregion.majorcompactionᥠ1 áá(áá˝)
HBase á áááááľ á¨áá áá
á á
ááŁá˘ (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.áľáá
12
hbase.regionserver.wal.enablecompressiontrue
hbase.hstore.compaction.max.size1073741824
hbase.server.compactchecker.interval.multiplier200
áHBase RegionServer á¨á፠áá
á á ááŤáŽá˝áĄ-
-XX:+ParNewGC -XX:+ConcMarkSweepGC -XX:CMSinitiatingOccupancyFraction=70 -XX:+CMSparallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeout áááľáĄ 2 á°áá(áá˝)
hbase.snapshot.region.áá á áááᥠ2 á°áá(áá˝)
hbase.snapshot.master.timeout.millisᥠ2 á°áá(áá˝)
HBase REST á áááá á¨áá°á á¨áááἠááľáłááť áá áᥠ100 áá˘
HBase REST á áááá á¨áá°áá á¨áááἠááľáłááť ááá ááľáŹáá˝áĄ 5
á¨HBase Thrift á áááá á¨áá°á á¨áááἠááľáłááť áá áᥠ100 áá˘
á¨HBase Thrift á áááá á¨áá°áá á¨áááἠááľáłááť ááá ááľáŹáá˝áĄ 5
ááľá°á á¨áá°á á¨áááἠááľáłááť áá á: 100 áá˘
áá á¨áá°á á¨áááἠááľáłááť ááá ááľáŹáá˝áĄ 5
á¨ááá á áááá á¨áá°á á¨áááἠááľáłááť áá áᥠ100 áá˘
á¨ááá á áááá á¨áá°áá á¨áááἠááľáłááť ááá ááľáŹáá˝áĄ 5
HBase áá ááľá°á ááá፠ááľáŽáľáĄ 4 á°áá(áá˝)
dfs.client.hedged.read.threadpool.áá áᥠ40
dfs.client.hedged.read.threshold.áááľáĄ 10 ááá°á¨ááľ(á°)
hbase.rest.strings.min: 8
hbase.rest.strings.max: 150
á¨áá°áá á¨áá°áľ ááá áááᥠ180000
hbase.thrift.min WorkerThreads: 200
hbase.master.executor.openregion.threadsᥠ30
hbase.master.executor.closeregion.threadsᥠ30
hbase.master.executor.serverops.threadsᥠ60
hbase.regionserver.thread.compaction.mallᥠ6
hbase.ipc.server.read.threadpool.áá áᥠ20
á¨ááá á áááłáá˝ ááŽá˝áĄ 6
á¨á°áá á á፠ááá áá á á áŁááľáĄ 1 áá˘
HBase REST á áááá ááŁáŞ áĄáľáᥠ3 áá˘
HBase Thrift á áááá ááŁáŞ áĄáľá: 3 GiB
á¨HBase ááľá°á á¨á፠ááá áá á á áŁááľáĄ 16 áá˘
á¨HBase Region á áááá á¨á፠ááá áá á á áŁááľáĄ 32 áá˘
+ ZooKeeper
maxClientCnxns: 601
maxSessionTimeout: 120000
á á¨á´ááá˝á ááá á;
hbase org.apache.hadoop.hbase.util.ááá Splitter ns:t1 UniformSplit -c 64 -f cf
alter 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'ááŁá_DIFF'ᣠCOMPRESSION => 'GZ'}
áĽáá á ááľ á áľááá ááĽáĽ á á - ᨠDataStax ááá፠ᨠHB á°áá á¨áŚá˝á áááá á áá áŤá á áááá˝ áĽá á áá áĽáá°áá á áááá˝á, ááá áĽááłá áá ááľáá áĽáŤáá˝ ááłá áá. áľááá , ááá°ááá˝, áĽááľ = 64 á°ááá§á, áá á áĽáľá¨ 640 áᢠáá¨áá¸áľ áŤáľá˝áá, áááľá. ááŤá¨áá áá á áŤáá á á¨á´á.
á áá°áá áá HBase 22 áşá á á¨á´ááá˝ áĽá 67 áşá áááá˝ (áá á¨áá áá°á áá°á áááľá°á áŤááá á 1.2.0 áľáŞáľ ááłá áááá).
á áá ááŽáąá˘ áá ááľ á¨á°áá°á á¨ááἠááł á¨áľááš á ááááŽá˝ á¨á áá áĽá á áĽááłáá¸á ááá˝ áľáááá áá¨áŤáá˝ á á°ááŤáŠ áá áśá˝ á°áŤáá°ááᢠáĽáááŤá˘ á á ááłááľ áá¨áŤáá˝ 4 á á¨á´ááá˝ á á ááľ áá á°áááá (ááá 4 ááśá˝ ááááááľ áĽá á áá áááá)ᢠá ááá˝ áá¨áŤáὠᨠ8 á¨á°ááŤáŠ á á¨á´ááá˝ áá á áá°áá. á á ááłááľ áááłáá˝, á¨áá á áá á 100, ááá˝ 200 (á¨áŁá˝ áááŞáŤ - á¨áłá˝ áŤááá áŽáľ áááá¨áą). á¨ááá á¨ááἠáá á 10 áŁááľ ááá 100 áŁááľ (á¨ááἠáá á) ááᢠá á á ááá 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 áĽá
á á áŁá á¨ááŤáľá°áá
áá, á á˛á¤áľ áááá áŞáŤ ááľáĽ á ááľ ááááľ ááá á á á¨áá áĽááŁáŹ á á. ááá áá á áŁá ááá
á¨áááľá áááááá˝ (áĽáá° concurrent_writes or memtable_heap_space_in_mb) áááá áááŠá á ááá áááᢠá á°ááłáłá áá, ááááŚáš áášá
áá¸á áĽá ááá ááá á ááłá°áĄ.
áá¨áá á ááľááá ááááśáš áá á áĽáŠá áá á á°á°áŤááˇáᣠá¨ááá á áááá˝ á¨á°ááá áľáłá˛áľá˛ááľ á áááľ á°ááłáłá áá áá˘
á¨á áá á¨áĽ áľáłá˛áľá˛ááľ á¨á áá°áá á áááá˝ á¨áááľáá áá
ááááá áŚáł: ks
á¨á°áá á ááĽá: 9383707
áááá¨áľ á ááĽáĽáĄ 0.04287025042448576 áá´
á¨á°áťá ááĽá: 15462012
áááá¨áľ ááťáᥠ0.1350068438699957 áá´
á áá áŁá á
áá áŤá ááłážá˝áĄ 0
á á¨á´áᥠt1
á¨á°á¨áá ááĽá: 16
áŤáááá áŚáł (á ááĽáł): 148.59 áá˘
áĽá
á áá á¨áá áŚáł (á á
áá): 148.59 áá˘
á á
á˝á á°-ááśáá˝ áĽá
á áá á¨áá áŚáł (á á
áá)ᥠ0 áŁááľ
áĽá
á áá á¨áá á¨á á ááá áá
á°á¨ áľááľáł (á á
áá): 5.17 áá˘
SSTable Compression áŹážáĄ 0.5720989576459437
á¨áááá˝ áĽááľ (áááľ): 3970323
á¨áááááłááľ á¨áááľ áĽááľáĄ 0
á¨áááááłááľ á¨ááἠáá áᥠ0 áŁááľ
áĽá
á áá á¨ááá á¨áááááłááľ ááá áá
á°á¨ áľááľáłáĄ 0 áŁááľ
á¨áááááłááľ ááá¨áŞáŤ áĽááľáĄ 5
á¨ááá ááľáĽ á¨á°áá á ááĽáᥠ2346045
á¨á áŤáŁá˘ ááŁáĽ áááá¨áľáĄ áá¤á ms
á¨ááá ááľáĽ á¨á˝áá áĽááľáĄ 3865503
á¨á áŤáŁá˘ á¨ááťá áááá¨áľáĄ áá¤á ms
á áá áŁá á
áá áŤá ááá°áťáá˝áĄ 0
á ááśá á°áľá°áŤáááᥠ0.0
á¨áĽá ááŁáŞáŤ á¨áá¸áľ á áááłá áá¤áśá˝áĄ 25
á¨áĽá ááŁáŞáŤ á¨áá¸áľ áŹážáĄ 0.00000
áĽá
á áá á¨ááá á¨á á ᣠááŁáŞáŤ áŚáł: 4.57 áá˘
áĽá
á áá á¨ááá á¨ááá áá
á°á¨ áľááľáłá ááĽááľ á¨áĽá ááŁáŞáŤ: 4.57 áá˘
áĽá
á áá á¨ááá á¨ááá áá
á°á¨ áľááľáł áá áááŤáĄ 590.02 áŞá˘
áĽá
á áá á¨ááá á¨ááá፠ááłáłáł á¨ááá áá
á°á¨ áľááľáł: 19.45 áŞá˘
á¨áłáá ááááá áá
á°á áŁááľáĄ 36
á¨áłáá ááááá á¨áá°á áŁááľáĄ 42
á¨áłáá ááááá á ááŤá áŁááľáĄ 42
á ááŤá á¨ááĽáł áááłáľ á á ááľ ááŤá (áŤáááľ á ááľáľ á°áááá˝)ᥠá¤á.á¤á
á á ááľ ááŤá á¨áááá°á á¨áá°á á¨ááĽáł áááłáľ (áŤáááľ á ááľáľ á°áááá˝)ᥠ0
á ááŤá á¨áááĽá áľááá á á ááľ ááŤá (áŤáááľ á ááľáľ á°áááá˝)ᥠá¤á.á¤á
á á ááľ ááŤá á¨áá°áá á¨áááĽá áľááá (áŁáááľ á ááľáľ á°áááá˝)ᥠ0
á¨á°áŁá ááá´á˝áᥠ0 áŁááľ
á¨áĄáľáá áá á áááááľ á¨á°á°á¨áá áá¨áŤ (á á°áá á ááá áĽááłá) ááá áá¤áľ á áááŁá, á¨á áá áĽá¨áŁá° áááłá. á CS á¨á°ááá áá¤áľ á DataStax á¨á°ááá áá á°ááłáłá áľááá á áĽáááą áá á CS á¨áá°áá á áááá ááá áá˝áá - á á°á¨ááľ á ááś áşáá˝ á¨ááá አáŚááŹá˝áá˝á˘ á á°á¨ááŞáᣠá¨ááĽáľ á á áááá á¨á°ááá¨áľáᣠá˛á¤áľ áĽá á˛áአáĽá á˛áľáŽá˝ áĽáá°áá áá áĽááŤááá˘
áľáá ááááąá á¨ááἠááłáá˝ á á°á¨áłáłá á¨áááá áá¨áŤáá˝ á áŠáŤ áá
áľ á á áááá áŤáłáŤáá˘
á¨HB áááá á¨ááá ἠáĽá áá á á°ááá¨á°á˘ áĽáá ááááąá á¨áá¨á ááśá˝ á ááŁáĽ áá á¨á˛áľá á á ááá áĽá á á áŁá áá á°á áááá áá¨áľ áá˝áá (á¨ááá ἠáá°ááá˝ ááĽáŤááłááą á¨ááἠááł á¨áá¨áŤ áá°áľ á¨áá¨á¨áť ááá áá¸á ᣠáááłá á CS áá ᨠ15: 20 áĽáľá¨ 15: 40 áá)ᢠá HB ááłá áá ááááŤáą ááá˝ áá - á áĽááá áá¨á á áá á°á¨ áľááľáł ááľáĽ, á ááľáłááť áá¨ááť ááľáĽ, áĽá á ááłááśáš á áĽáááŤáź ááľáĽ á°á°áĽááá. á˛á¤áľá á á°ááá¨á°áŁ áĽáá´áľ áĽáá°áá°áŤ ááá˝ á áá°ááᣠááá áá á¨á˛áľá áááś áĽá á áá áááá áĽáá˛á á ááłááᣠááá áá áĽáá°á፠á¨ááᣠáá¸ááŤáá row_cache_size_in_mb = 2048 áááááľ áĽá áá¸á፠= {'keys': 'ALL' áááľá¨á á°áááŻáᢠ'á¨áľáá˝_á ááá'ᥠ'2000000'}ᣠáá ፠áľáá˝ á¨á¨á á áľáááłáá˘
á HB ááľáĽ áľááá á¨áááá˝ áĽááľ á ááľ á áá ááĽáĽ á áľáá ááĽááľ á°áᢠááᢠá áĽá áááł, áĽá´áą á 64 ááľáĽ á°áááżá. áĽááááľ áĽá áĽáŠá áŤá°á¨áá, áááłá, 4, á¨ááŤá á ááá ἠáá, ááĽááą á 2 áĽáĽá ááááłá. ááááŤáą áááľáśá á ááĽááľ áááá áĽá áááá˝ áĽá áá ááłá áŁá áĽá á ááŤááĄá áľ áá áĽá áááá˝ áá¨ááá á ááŁá¸á ᣠáá á á HB á áŁá á¨á°ááłá°á á á°áŤá ááᢠá á°á¨áŁá áááłáá˝áŁ áá á á áľá ááá áľ áĽá áá áá፠áľááľ á áá°áĽ ááłá¨á áá˝ááᣠá á°áááᣠááťáťá á¨áá°á áľáĽ áĽá HFilesá áŤáááá¨áĽ á¨á áľá°ááᣠá¨áá¨áá á áŤáľ á¨á°áťá áááá፠áĽáá ááááᢠááłáłáľáłááľ áá°ááá˝ á á°áá á¨áĽ 1 ááá áĽáť ááľá áá (áá á áľááá á áá°áá) áĽá áá ááá HB á ááŁáĽ áá°áá¸á áá á°á áĽáá°áá á á á°áá°á á°á¨á ááá˝ áŤá°ááááá˘
á¨áá¨á°ááľ á¨ááááŞáŤ áá°áá°ááŤáá˝ á¨áá á°ááľá°áá. á áá°á áá áľ ááá á áááľ áľáá áľá á°áľ áĽááłáá°á°áŤ á áá°áĽ áŤáłááľáŤ á¨á¸áá áĽáá áŤáá áŽáá°áľ áááľááᢠá áľááá ᣠá á ááľ áĽáአáá ááá áľáľáá ᣠá á áááš ááááŞáŤ áá á áĽáá áá áĽáá°ááłá¨á ᣠá á áááŤáááľ áĽáŠ áá¤áśá˝á áłáłáŤáὠᣠáá á á°ááłáłá áááł ááľáĽ á áá°á¨áá áá፠áá á áá áłáŁáá˝á˘ á á°ááłáłá ááᣠá áĽá áááľáá áá áŤááá áá á°á á¨á˛áአá á áááá á¨áááľ ááľáĽ á ááľááŁáľ á á ááľ á áľá°ááá áááľ RegionServer HBs ááľá¨áá á°áá¨áá áĽá á ááááá á áĽáĽá á¨ááᢠáĽáááŤá˘ á¨ááĽáľ á á áááá á¨áááľ ááľáĽ á ááľááŁáľ á¨á˛á¤áľ áááł á¨á áá á áłáá áá.
á áĽááἠáĽááá áá¨áŤáá˝ á°á á áŤá˝ áá¸á áĽá áĽáá áĽá á áá á¨ááá á¨ááἠáá á á á ááťáŤá áááł áá áá áá. áá° á´áŤáŁááľ á¨áá¨áá áááłá ââââá¨á°áᨠááá áá˝áá ááá áá áá¤á˝.á˘. áá á´áŤáŁááľ ááŤá áĽáá˝ááá, á CS áá á˝áá ááá áłá. áĽá áá á áĽááá áĽáŤáá˝á á˘áá OperationTimedOutExceptioná ááĽááᣠááá áĽááłá ááá˝á ááá á á áááŞáŤáá˝ á¨ááŁáŞá áá á˛áááአáĽá áá á¨áá¨ááá˘
á á፠áĽá¨áśá˝ á¨á˛á¤áľ ááááá˝á áĽááááá áĽá ááá á á¨áťáá á á˝áá áá¨á¨áť áá á áĽááá áááľ áľá áá¨á¨áťá áá¤áľ áá¨á áĽá¨ááŤáá áĽáŹ á°áľá á á°áááá á˘
UPD: ááŁáá°á¨áŁáá˝ ááá ááľáá áááŁáá ááŁáĄá ááá á áťááŠá˘ áá ááĄ
159 ops (644 á°áá á¨áŚá˝áŁ 4 áĽá¨áśá˝áŁ áŁá˝ 5)á˘
á°á¨ááŻá á
.á LoadBalancing ááá˛(á á˛áľ TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
áĽá á áá áĽááľ á°áŤááľáŠáᢠáá¤áą á¨áá¨á°áá ááá˘
4 á á¨á´ááá˝áŁ 100 ááŽá˝áŁ áŁá˝ = 1 (ááŤá á ááá): 301 ops
4 á á¨á´ááá˝áŁ 100 ááŽá˝áŁ áŁá˝ = 10: 447 ops
4 á á¨á´ááá˝áŁ 100 ááŽá˝áŁ áŁá˝ = 100: 625 ops
á áá ááá˝ á¨ááľá°áŤá¨áŤ áááŽá˝á áĽá áááá, áá á¨áá¨áŤ áá°áľ á ááľ áĽá áá¤áśášá á á˝áá áá¨á¨áť áá áĽá¨ááŤáá.
ááá: hab.com