Tsy vazivazy akory izany, fa ity sary manokana ity dia hita taratra tsara indrindra ny maha-zava-dehibe ireo tahiry ireo, ary amin'ny farany dia ho mazava ny antony:

Araka ny filazan'ny DB-Engines Ranking, ny angon-drakitra tsanganana NoSQL roa malaza indrindra dia Cassandra (manaraka CS) sy HBase (HB).

Araka ny sitrapon'ny anjara, ny ekipan'ny fitantanana ny angon-drakitra ao amin'ny Sberbank dia efa nisy ary miara-miasa akaiky amin'ny HB. Nandritra izany fotoana izany dia nandinika tsara ny tanjany sy ny fahalemeny izahay ary nianatra nahandro azy. Na izany aza, ny fisian'ny safidy hafa amin'ny endrika CS dia nanery anay hampijaly tena kely amin'ny fisalasalana: nanao safidy tsara ve izahay? Ankoatra izany, ny vokatra , nataon'ny DataStax, nilaza izy ireo fa ny CS dia mandresy mora foana ny HB amin'ny isa saika manapotika. Amin'ny lafiny iray, ny DataStax dia antoko liana, ary tsy tokony handray ny teniny amin'izany ianao. Very hevitra ihany koa izahay tamin'ny fampahalalam-baovao kely momba ny fepetra fitsapana, ka nanapa-kevitra ny hamantatra samirery hoe iza no mpanjakan'ny BigData NoSql, ary ny vokatra azo dia tena mahaliana.
Na izany aza, alohan'ny hirosoana amin'ny valin'ny fitsapana natao dia ilaina ny mamaritra ny lafiny manan-danja amin'ny fanamafisana ny tontolo iainana. Ny zava-misy dia ny CS dia azo ampiasaina amin'ny fomba mamela ny fahaverezan'ny angona. Ireo. Izany dia rehefa mpizara iray ihany (node) no tompon'andraikitra amin'ny angon-drakitra amin'ny fanalahidy iray, ary raha toa ka tsy mahomby izany, dia ho very ny sandan'ity fanalahidy ity. Ho an'ny asa maro dia tsy manakiana izany, fa ho an'ny sehatry ny banky dia izany no maningana fa tsy fitsipika. Amin'ity tranga ity, zava-dehibe ny manana kopia maromaro ho fitahirizana azo antoka.
Noho izany, ny fomba fiasa CS amin'ny fomba famerenan'ny telo ihany no nodinihina, i.e. Ny famoronana ny casespace dia natao miaraka amin'ireto parameter manaraka ireto:
CREATE KEYSPACE ks WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3}; Manaraka, misy fomba roa hiantohana ny haavon'ny tsy fitoviana ilaina. Fitsipika ankapobeny:
NW + NR > RF
Midika izany fa ny isan'ny fanamafisana avy amin'ny nodes rehefa manoratra (NW) miampy ny isan'ny fanamafisana avy amin'ny nodes rehefa mamaky (NR) dia tsy maintsy lehibe noho ny replication factor. Amin'ny tranga misy antsika, RF = 3, izay midika fa mety ireto safidy manaraka ireto:
2 + 2 > 3
3 + 1 > 3
Satria tena zava-dehibe ho antsika ny mitahiry ny angon-drakitra araka izay azo atao, dia voafidy ny rafitra 3+1. Ankoatra izany, ny HB dia miasa amin'ny fitsipika mitovy, i.e. ny fampitahana toy izany dia ho ara-drariny kokoa.
Marihina fa ny DataStax dia nanao ny mifanohitra amin'izany tamin'ny fianarany, nametraka RF = 1 ho an'ny CS sy HB izy ireo (ho an'ny farany amin'ny fanovana ny fikandrana HDFS). Lafiny tena manan-danja tokoa izany satria lehibe ny fiantraikany amin'ny fahombiazan'ny CS amin'ity tranga ity. Ohatra, ny sary etsy ambany dia mampiseho ny fitomboan'ny fotoana ilaina hampidirana angona ao amin'ny CS:

Eto isika dia mahita ireto manaraka ireto: arakaraka ny fizotry ny fifanintsanana manoratra angona, ny ela kokoa. Ara-boajanahary izany, saingy zava-dehibe ny fanimbana ny fahombiazan'ny RF=3 dia avo kokoa. Raha lazaina amin'ny teny hafa, raha manoratra kofehy 4 amin'ny latabatra 5 tsirairay (20 amin'ny fitambarany), dia very in-3 eo ho eo ny RF=2 (150 segondra ho an'ny RF=3 versus 75 ho an'ny RF=1). Fa raha mampitombo ny enta-mavesatra isika amin'ny famenoana ny angona amin'ny tabilao 8 misy kofehy 5 avy (40 amin'ny fitambarany), dia efa in-3 ny fahaverezan'ny RF=2,7 (375 segondra mifanohitra amin'ny 138).
Angamba izany no ampahany ny tsiambaratelon'ny fitsapana entana mahomby nataon'ny DataStax ho an'ny CS, satria ho an'ny HB eo amin'ny toerana misy anay dia tsy nisy vokany ny fanovana ny fatran'ny replication avy amin'ny 2 ka hatramin'ny 3. Ireo. disks dia tsy ny HB bottleneck ho an'ny konfigurasi. Mbola betsaka koa anefa ny fandrika hafa eto, satria marihina fa ny version HB misy antsika dia nopetahana kely sy nasiana tweak, hafa tanteraka ny environnement sns. Tsara ihany koa ny manamarika fa angamba tsy haiko ny manomana tsara ny CS ary misy fomba mahomby kokoa hiarahana amin'izany, ary manantena aho fa ho hitantsika ao amin'ny fanehoan-kevitra. Fa ny zavatra voalohany aloha.
Ny fitsapana rehetra dia natao tamin'ny cluster hardware misy mpizara 4, izay samy manana ny rafitra manaraka:
CPU: Xeon E5-2680 v4 @ 2.40GHz 64 kofehy.
Kapila: 12 sekely SATA HDD
java version: 1.8.0_111
CS Version: 3.11.5
cassandra.yml parametersisa_token: 256
voasokitra_handoff_enabled: marina
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
authenticator: AllowAllAuthenticator
mpanoratra: 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 # ny lahatahiry dataN tsirairay dia kapila mitokana
- /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: diso
disk_failure_policy: atsaharo
commit_failure_policy: atsaharo
prepared_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: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
mpamatsy_voa:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
masontsivana:
- masomboly: "*,*"
concurrent_reads: 256 # nanandrana 64 - tsy nisy fahasamihafana hita
concurrent_writes: 256 # nanandrana 64 - tsy nisy fahasamihafana hita
concurrent_counter_writes: 256 # nanandrana 64 - tsy nisy fahasamihafana hita
concurrent_materialized_view_writes: 32
memtable_heap_space_in_mb: 2048 # nanandrana 16 GB - miadana kokoa izany
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: diso
trickle_fsync_interval_in_kb: 10240
storage_port: 7000
ssl_storage_port: 7001
mihaino_adiresy:*
adiresy_famoahana: *
mihaino_amin'ny_adiresy_broadcast: marina
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: marina
native_transport_port: 9042
start_rpc: marina
adiresy_rpc: *
rpc_port: 9160
rpc_keepalive: marina
rpc_server_type: sync
famatsiam-bola_fitaterana_haben'ny_mb: 15
incremental_backups: diso
snapshot_before_compaction: diso
auto_snapshot: marina
tsanganana_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: diso
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: tsy misy
client_encryption_options:
azo atao: diso
internode_compression: dc
inter_dc_tcp_nodelay: diso
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: diso
enable_scripted_user_defined_functions: diso
windows_timer_interval: 1
transparent_data_encryption_options:
azo atao: diso
tombstone_warn_threshold: 1000
tombstone_failure_threshold: 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: diso
enable_materialized_views: marina
enable_sasi_indexes: marina
Fikirana GC:
### Fikirana CMS-XX:+UseParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=1
-XX:CMSInitiatingOccupancyFraction=75
-XX:+UseCMSInitiatingOccupancyOnly
-XX:CMSWaitDuration=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordAlways
-XX:+CMSClassUnloadingEnabled
Ny fahatsiarovana jvm.options dia nomena 16Gb (nanandrana 32 Gb ihany koa izahay, tsy nisy fahasamihafana).
Ny tabilao dia noforonina tamin'ny baiko:
CREATE TABLE ks.t1 (id bigint PRIMARY KEY, title text) WITH compression = {'sstable_compression': 'LZ4Compressor', 'chunk_length_kb': 64};HB version: 1.2.0-cdh5.14.2 (ao amin'ny class org.apache.hadoop.hbase.regionserver.HRegion dia nesorinay ny MetricsRegion izay nitarika ho amin'ny GC raha mihoatra ny 1000 ny isan'ny faritra ao amin'ny RegionServer)
Ireo masontsivana HBase tsy defaultzookeeper.session.timeout: 120000
hbase.rpc.time out: 2 minitra
hbase.client.scanner.timeout.period: 2 minitra
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.period: 2 minitra
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.period: 4 ora
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: 1 andro
HBase Service Advanced Configuration Snippet (Safety Valve) ho an'ny 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
Safidy fanamboarana Java ho an'ny HBase RegionServer:
-XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 minitra
hbase.snapshot.region.timeout: 2 minitra
hbase.snapshot.master.timeout.millis: 2 minitra
HBase REST Server Max Log Size: 100 MiB
HBase REST Server Backups File Log Maximum: 5
HBase Thrift Server Max Log Size: 100 MiB
HBase Thrift Server Backups File Log ambony indrindra: 5
Haben'ny Log Master Max: 100 MiB
Famerenana rakitra Log ambony indrindra: 5
RegionServer Max Haben'ny Log: 100 MiB
RegionServer Famerenana rakitra Log ambony indrindra: 5
HBase Active Master Detection Window: 4 minitra(s)
dfs.client.hedged.read.threadpool.habe: 40
dfs.client.hedged.read.threshold.millis: 10 milisegondra
hbase.rest.threads.min: 8
hbase.rest.threads.max: 150
Famaritana fisie farany ambony indrindra: 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
Kodiaran'ny Faritra: 6
Haben'ny Java Heap mpanjifa amin'ny Bytes: 1 GiB
HBase REST Server Default Group: 3 GiB
HBase Thrift Server Default Group: 3 GiB
Haben'ny Java Heap an'ny HBase Master in Bytes: 16 GiB
Haben'ny Java Heap an'ny HBase RegionServer in Bytes: 32 GiB
+ZooKeeper
maxClientCnxns: 601
maxSessiontimeout: 120000
Mamorona tabilao:
hbase org.apache.hadoop.hbase.util.RegionSplitter ns:t1 UniformSplit -c 64 -f cf
manova 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'GZ'}
Misy teboka iray manan-danja eto - ny famaritana DataStax dia tsy milaza hoe firy ny faritra nampiasaina hamoronana ny latabatra HB, na dia tena ilaina aza izany ho an'ny boky be. Noho izany, ho an'ny fitsapana dia nofidina ny habetsahana = 64, izay ahafahana mitahiry hatramin'ny 640 GB, i.e. latabatra antonony.
Tamin'ny fotoana nanaovana ny fitsapana dia nanana latabatra 22 arivo sy faritra 67 arivo i HBase (mety ho nahafaty ny version 1.2.0 izany raha tsy noho ny patch voalaza etsy ambony).
Ho an'ny kaody izao. Satria tsy fantatra mazava hoe iza amin'ireo rindrankajy no mahasoa kokoa ho an'ny angon-drakitra manokana, dia natao tamin'ny fitambarana isan-karazany ny fitsapana. Ireo. amin'ny fitsapana sasany, latabatra 4 no napetaka niaraka (nampiasaina ho an'ny fifandraisana daholo ny node 4). Tamin'ny fitsapana hafa dia niara-niasa tamin'ny latabatra 8 samihafa izahay. Amin'ny toe-javatra sasany, ny haben'ny batch dia 100, amin'ny hafa 200 (parameter batch - jereo ny code etsy ambany). Ny haben'ny angona ho an'ny sanda dia 10 bytes na 100 bytes (dataSize). Raha atambatra, firaketana 5 tapitrisa no nosoratana sy novakiana isaky ny latabatra. Nandritra izany fotoana izany, kofehy 5 no nosoratana / novakiana isaky ny latabatra (numera - thNum), izay samy nampiasa ny fanalahidiny manokana (isa = 1 tapitrisa):
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);
}
}
Noho izany, ny fiasa mitovy amin'izany dia nomena ho an'ny 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);
}
}
Koa satria ao amin'ny HB ny mpanjifa dia tsy maintsy mikarakara ny fizarana fanamiana ny angon-drakitra, dia toy izao ny fiasan'ny salting:
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);
}
Ankehitriny ny ampahany mahaliana indrindra - ny vokatra:

Toy izany koa amin'ny endrika grafika:

Ny tombony amin'ny HB dia mahagaga fa misy ny ahiahy fa misy karazana bottleneck amin'ny fananganana CS. Na izany aza, ny Googling sy ny fikarohana ireo masontsivana miharihary indrindra (toy ny concurrent_writes na memtable_heap_space_in_mb) dia tsy nanafaingana ny zava-drehetra. Amin'izay fotoana izay ihany, madio ny hazo ary tsy mianiana na inona na inona.
Ny angon-drakitra dia nozaraina mitovy amin'ny nodes, ny antontan'isa avy amin'ny nodes rehetra dia mitovy.
Toy izao ny endrik'ireo antontan'isa tabilao avy amin'ny iray amin'ireo nodesToerana fanalahidy: ks
Isan'ny laharana : 9383707
Fampitandremana mamaky: 0.04287025042448576 ms
Isan'ny fanoratana: 15462012
Soraty ny fahatarana: 0.1350068438699957 ms
Fikarakarana miandry: 0
latabatra: t1
Isan'ny SST: 16
Habe ampiasaina (miaina): 148.59 MiB
Habe ampiasaina (total): 148.59 MiB
Espace ampiasain'ny snapshots (total): 0 bytes
Fahatsiarovana eny an-tokotany ampiasaina (total): 5.17 MiB
SSTable Compression ratio: 0.5720989576459437
Isan'ny fizarana (tombanana): 3970323
Isan'ny sela metable: 0
Haben'ny angon-drakitra azo alaina: 0 bytes
Fahatsiarovana amboara azo ampiasaina: 0 bytes
Isan'ny switch metable: 5
Ny isan'ny vakiana eo an-toerana: 2346045
Famaritana eo an-toerana: NaN ms
Isan'ny soratra eo an-toerana: 3865503
Fametrahana fanoratana eo an-toerana: NaN ms
Fikarakarana miandry: 0
Isan-jaton'ny fanamboarana: 0.0
Bloom filters diso positives: 25
Bloom filter false ratio: 0.00000
Ny habaka sivana Bloom ampiasaina: 4.57 MiB
Sivana mivolombolamena eny amin'ny fitadidiana amboara ampiasaina: 4.57 MiB
Famintinana fanondro amin'ny fitadidiana amboara ampiasaina: 590.02 KiB
Metadata famoretana avy amin'ny fitadidiana amboara ampiasaina: 19.45 KiB
Fizarana marim-pototra kely indrindra: 36
Fisaraham-baravarankely faran'izay bitika: 42
Fizarana mitovitovy amin'ny bytes: 42
Salan'ny sela velona isaky ny silaka (dimy minitra farany): NaN
Ny sela velona ambony indrindra isaky ny silaka (dimy minitra farany): 0
Vato fasana salan'isa isaky ny silaka (dimy minitra farany): NaN
Vato fasana ambony indrindra isaky ny silaka (dimy minitra farany): 0
Fiovana nilatsaka: 0 bita
Tsy nisy vokany ny fikasana hampihena ny haben'ny andiany (na dia alefa tsirairay aza) fa vao mainka niharatsy izany. Azo inoana fa raha ny marina dia io no tena fampisehoana ambony indrindra ho an'ny CS, satria ny vokatra azo ho an'ny CS dia mitovy amin'ny azo amin'ny DataStax - eo ho eo amin'ny asa an-jatony isan-tsegondra. Ho fanampin'izany, raha mijery ny fampiasana loharano isika dia ho hitantsika fa mampiasa CPU sy kapila bebe kokoa ny CS:

Ny tarehimarika dia mampiseho ny fampiasana mandritra ny fandehan'ny fitsapana rehetra misesy ho an'ny angona roa.
Mikasika ny tombony amin'ny famakiana mahery vaika an'ny HB. Eto ianao dia afaka mahita fa ho an'ny angon-drakitra roa, ny fampiasana kapila mandritra ny famakiana dia ambany dia ambany (ny andrana mamaky no ampahany farany amin'ny tsingerin'ny fitsapana ho an'ny tahiry tsirairay, ohatra ho an'ny CS izany dia manomboka amin'ny 15:20 hatramin'ny 15:40). Raha ny momba ny HB, mazava ny antony - ny ankamaroan'ny angona dia mihantona ao amin'ny fitadidiana, ao amin'ny memstore, ary ny sasany dia voatahiry ao amin'ny blockcache. Raha ny momba ny CS dia tsy dia mazava loatra ny fomba fiasany, fa ny recycling kapila koa dia tsy hita, fa raha sanatria, dia nisy ezaka natao mba hahafahan'ny cache row_cache_size_in_mb = 2048 ary mametraka caching = {'keys': 'ALL', 'rows_per_partition': ' 2000000'}, saingy vao mainka niharatsy izany.
Tsara ihany koa ny manonona teboka iray manan-danja momba ny isan'ny faritra ao amin'ny HB. Amin'ity tranga ity, ny sandany dia voatondro ho 64. Raha ahenao izany ary atao mitovy amin'ny, ohatra, 4, dia rehefa mamaky dia mihena in-2 ny hafainganam-pandeha. Ny antony dia hameno haingana kokoa ny memstore ary hosasana matetika ny rakitra ary rehefa mamaky dia mila asiana rakitra bebe kokoa, izay asa sarotra ho an'ny HB. Amin'ny toe-javatra tena izy, dia azo tsaboina izany amin'ny alàlan'ny tetikady presplitting sy compactification, indrindra indrindra, mampiasa fitaovana nosoratan'ny tena isika izay manangona fako sy manindry ny HFiles tsy tapaka. Azo atao tsara fa ho an'ny fitsapana DataStax dia faritra 1 isaky ny latabatra ihany no nozarainy (izay tsy marina) ary izany dia manazava ny antony nahatonga ny HB ho ambany indrindra tamin'ny fitsapana namaky azy ireo.
Ireto fehin-kevitra savaranonando ireto no raisina avy amin’izany. Raha heverina fa tsy nisy lesoka lehibe natao nandritra ny fitsapana, dia toy ny colossus manana tongotra tanimanga i Cassandra. Ny marimarina kokoa, raha mandanjalanja amin'ny tongotra iray izy, toy ny eo amin'ny sary eo am-piandohan'ny lahatsoratra, dia mampiseho vokatra tsara izy, fa amin'ny ady amin'ny toe-javatra mitovy amin'izany dia resy tanteraka izy. Mandritra izany fotoana izany, raha jerena ny fampiasana CPU ambany amin'ny fitaovanay, dia nianatra namboly HBs RegionServer roa isaky ny mpampiantrano izahay ary nampitombo avo roa heny ny fampisehoana. Ireo. Raha jerena ny fampiasana ny loharanon-karena, dia vao mainka mampalahelo ny toe-javatra ho an'ny CS.
Mazava ho azy fa tena synthetic ireo fitsapana ireo ary somary maotina ny habetsaky ny angona nampiasaina teto. Mety ho raha mifindra terabytes isika dia mety ho hafa ny toe-javatra, fa raha ho an'ny HB kosa dia afaka mitondra terabytes, ho an'ny CS dia lasa olana izany. Matetika izy io no nanipy OperationTimedOutException na dia tamin'ireo boky ireo aza, na dia efa nitombo imbetsaka aza ny mari-pamantarana hiandry valiny raha oharina amin'ny mahazatra.
Manantena aho fa amin'ny alàlan'ny fiaraha-miasa dia hahita ny bottleneck amin'ny CS isika ary raha afaka manafaingana izany isika, amin'ny faran'ny lahatsoratra dia hampiditra fampahalalana momba ny vokatra farany aho.
UPD: Noho ny torohevitr'ireo namako dia nahavita nanafaingana ny famakiana aho. dia:
159 ops (tabilao 644, renirano 4, andiany 5).
Nampian'i:
.withLoadBalancingPolicy(TokenAwarePolicy vaovao(DCAwareRoundRobinPolicy.builder().build()))
Ary nilalao ny isan'ny kofehy aho. Ny vokany dia izao manaraka izao:
latabatra 4, kofehy 100, batch = 1 (ampahany tsirairay): 301 ops
latabatra 4, kofehy 100, batch = 10: 447 ops
latabatra 4, kofehy 100, batch = 100: 625 ops
Aorian'izay dia hampihatra toro-hevitra hafa aho amin'ny fampifanarahana, hanao tsingerin'ny fitsapana feno ary ampio ny valiny amin'ny faran'ny lahatsoratra.
Source: www.habr.com
