Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko

Uku hakusi kuseka, zvinoita sekunge mufananidzo uyu unonyatso ratidza kukosha kweiyo dhatabhesi, uye pakupedzisira zvichave pachena kuti nei:

Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko

Zvinoenderana neDB-Engines Chinzvimbo, maviri anonyanya kufarirwa NoSQL columnar dhatabhesi ndiCassandra (pano CS) uye HBase (HB).

Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko

Nekuda kwekupedzisira, timu yedu yekurodha data kuSberbank yatove Π΄Π°Π²Π½ΠΎ uye inoshanda padhuze neHB. Munguva iyi, takadzidza kusimba kwayo uye kusasimba kwayo zvakanaka uye takadzidza kuibika. Zvisinei, kuvapo kweimwe nzira muchimiro cheCS nguva dzose kwaitimanikidza kuti tizvitambudze pachedu zvishoma nokusava nechokwadi: takaita chisarudzo chakanaka here? Uyezve, migumisiro kuenzanisa, yakaitwa neDataStax, vakataura kuti CS inorova nyore HB nechinenge chibodzwa chekupwanya. Kune rimwe divi, DataStax inofarira bato, uye haufanirwe kutora izwi ravo pazviri. Isu takavhiringikawo nehuwandu hudiki hweruzivo nezve mamiriro ekuyedzwa, saka takafunga kutsvaga isu tega kuti ndiani mambo weBigData NoSql, uye mhedzisiro yakawanikwa yakave inonakidza.

Nekudaro, usati waenderera kune zvakabuda zvebvunzo dzakaitwa, zvinodikanwa kutsanangura zvakakosha zvemamiriro ekunze. Ichokwadi ndechokuti CS inogona kushandiswa mune imwe nzira inobvumira kurasikirwa kwedata. Avo. iyi ndiyo nguva imwe chete sevha (node) inotarisira data yeimwe kiyi, uye kana nokuda kwechimwe chikonzero ichikundikana, ipapo kukosha kwekiyi iyi kucharasika. Kune akawanda mabasa izvi hazvisi zvakakosha, asi kune bhangi chikamu ichi ndicho chinosiyana pane mutemo. Muchiitiko chedu, zvakakosha kuti tive nemakopi akawanda e data yekuchengetedza yakavimbika.

Naizvozvo, iyo chete CS inoshanda modhi mumatatu ekudzokorora modhi yakatariswa, i.e. Kugadzirwa kwenzvimbo yekesi kwakaitwa nematanho anotevera:

CREATE KEYSPACE ks WITH REPLICATION = {'class' : 'NetworkTopologyStrategy', 'datacenter1' : 3};

Tevere, kune nzira mbiri dzekuvimbisa chiyero chinodiwa chekuenderana. General mutemo:
NW + NR > RF

Zvinoreva kuti nhamba yezvisimbiso kubva kumanodhi paunenge uchinyora (NW) pamwe nenhamba yezvisimbiso kubva kumanodhi paunenge uchiverenga (NR) inofanira kunge yakakura kupfuura chinhu chekudzokorora. Kwatiri, RF = 3, zvinoreva kuti zvinotevera sarudzo dzakakodzera:
2 + 2 > 3
3 + 1 > 3

Sezvo zvakakosha kuti isu tichengetedze data nekuvimbika sezvinobvira, chirongwa che3 + 1 chakasarudzwa. Mukuwedzera, HB inoshanda pamutemo wakafanana, i.e. kuenzanisa kwakadaro kuchava kwakarurama.

Zvinofanira kucherechedzwa kuti DataStax yakaita zvinopesana mukudzidza kwavo, vakaisa RF = 1 kune ese CS uye HB (yekupedzisira nekushandura HDFS marongero). Ichi chinhu chakakosha chaizvo nekuti maitiro ekuita kweCS munyaya iyi akakura. Semuenzaniso, mufananidzo uri pazasi unoratidza kuwedzera kwenguva inodiwa kurodha data muCS:

Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko

Pano tinoona zvinotevera: tambo dzinokwikwidza dzinonyora data, iyo inotora nguva yakareba. Izvi ndezvakasikwa, asi zvakakosha kuti kuderedzwa kwekuita kweRF = 3 kwakakwira zvakanyanya. Mune mamwe mazwi, kana tikanyora shinda 4 mumatafura mana imwe neimwe (5 pamwe chete), ipapo RF=20 inorasikirwa nekaviri nguva (3 masekonzi eRF=2 maringe ne150 yeRF=3). Asi kana isu tikawedzera mutoro nekurodha data mumatafura masere ane 75 tambo imwe neimwe (1 yakazara), ipapo kurasikirwa kweRF = 8 kwatove 5 times (40 seconds maringe ne3).

Zvichida ichi chikamu chakavanzika chekubudirira kwekuyedzwa kwemutoro wakaitwa neDataStax yeCS, nokuti yeHB panzvimbo yedu kushandura chinhu chekudzokorora kubva ku2 kusvika ku3 chakanga chisina kukanganisa. Avo. dhisiki haisi iyo HB bhodhoro rekugadzirisa kwedu. Nekudaro, kune mamwe akawanda makomba pano, nekuti zvinofanirwa kucherechedzwa kuti vhezheni yedu yeHB yakadhindwa zvishoma uye yakakwenenzverwa, nharaunda dzakasiyana zvachose, nezvimwe. Zvakakoshawo kuziva kuti zvichida ini handizivi kuti ndingagadzirira sei CS zvakarurama uye kune dzimwe nzira dzinoshanda dzekushanda nayo, uye ndinovimba tichawana mumashoko. Asi zvinhu zvekutanga kutanga.

Maedzo ese akaitwa pane Hardware cluster ine maseva mana, imwe neimwe ine inotevera gadziriro:

CPU: Xeon E5-2680 v4 @ 2.40GHz 64 threads.
Madhisiki: 12 zvidimbu SATA HDD
java shanduro: 1.8.0_111

CS Shanduro: 3.11.5

cassandra.yml parametersnhamba_tokens: 256
hinted_handoff_enabled: chokwadi
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
authenticator: AllowAllAuthenticator
authorizer: AllowAllAuthorizer
role_manager: CassandraRoleManager
roles_validity_in_ms: 2000
mvumo_validity_in_ms: 2000
credentials_validity_in_ms: 2000
partitioner: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- /data1/cassandra/data # imwe neimwe dataN dhairekitori idhisiki rakasiyana
- /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: nhema
disk_failure_policy: mira
commit_failure_policy: mira
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
save_caches_directory: /data10/cassandra/saved_caches
commitlog_sync: periodic
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
seed_provider:
- class_name: org.apache.cassandra.locator.SimpleSeedProvider
paramita:
β€” mbeu: "*,*"
concurrent_reads: 256 # vakaedza 64 - hapana mutsauko wakaonekwa
concurrent_writes: 256 # vakaedza 64 - hapana mutsauko wakaonekwa
concurrent_counter_writes: 256 # vakaedza 64 - hapana mutsauko wakaonekwa
concurrent_materialized_view_writes: 32
memtable_heap_space_in_mb: 2048 # yakaedza 16 GB - yainonoka
memtable_allocation_type: murwi_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_minutes: 60
trickle_fsync: nhema
trickle_fsync_interval_in_kb: 10240
storage_port: 7000
ssl_storage_port: 7001
teerera_kero: *
nhepfenyuro_kero: *
teerera_pa_panhepfenyuro_kero: chokwadi
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: chokwadi
native_transport_port: 9042
start_rpc: chokwadi
rpc_address: *
rpc_port: 9160
rpc_keepalive: chokwadi
rpc_server_type: sync
thrift_framed_transport_size_in_mb: 15
incremental_backups: nhema
snapshot_before_compaction: nhema
auto_snapshot: chokwadi
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: nhema
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: hapana
client_encryption_options:
akagoneswa: nhema
internode_compression: dc
inter_dc_tcp_nodelay: nhema
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
enable_user_defined_functions: nhema
enable_scripted_user_defined_functions: nhema
windows_timer_interval: 1
transparent_data_encryption_options:
akagoneswa: nhema
tombstone_warn_threshold: 1000
tombstone_falure_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: nhema
enable_materialized_views: chokwadi
enable_sasi_indexes: chokwadi

GC Settings:

### CMS Zvirongwa-XX:+ShandisaParNewGC
-XX:+ShandisaConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:SurvivorRatio=8
-XX:MaxTenuringThreshold=1
-XX:CMSInitiatingOccupancyFraction=75
-XX:+ShandisaCMSIinitiatingOccupancyOnly
-XX:CMSWaitDuration=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordNguva dzose
-XX:+CMSClassUnloadingEnabled

Iyo jvm.options memory yakagoverwa 16Gb (takaedzawo 32 Gb, hapana musiyano wakaonekwa).

Matafura akagadzirwa nemurairo:

CREATE TABLE ks.t1 (id bigint PRIMARY KEY, title text) WITH compression = {'sstable_compression': 'LZ4Compressor', 'chunk_length_kb': 64};

HB vhezheni: 1.2.0-cdh5.14.2 (mukirasi org.apache.hadoop.hbase.regionserver.HRegion takabvisa MetricsRegion iyo yakatungamira kuGC apo huwandu hwematunhu hwaipfuura 1000 paRegionServer)

Non-default HBase parameterszookeeper.session.timeout: 120000
hbase.rpc.timeout: 2 miniti(s)
hbase.client.scanner.timeout.period: 2 miniti(s)
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.period: 2 miniti(s)
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.period: 4 awa(s)
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 zuva(s)
HBase Service Advanced Configuration Snippet (Safety Valve) yehbase-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 Configuration Sarudzo dzeHBase RegionServer:
-XX:+ShandisaParNewGC -XX:+ShandisaConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: 2 miniti(s)
hbase.snapshot.region.timeout: 2 miniti(s)
hbase.snapshot.master.timeout.millis: 2 miniti(s)
HBase REST Server Max Log Size: 100 MiB
HBase REST Server Maximum Log File Backups: 5
HBase Thrift Server Max Log Size: 100 MiB
HBase Thrift Server Maximum Log File Backups: 5
Master Max Log Saizi: 100 MiB
Master Maximum Log File Backups: 5
RegionServer Max Log Size: 100 MiB
RegionServer Maximum Log File Backups: 5
HBase Active Master Detection Window: 4 maminetsi (s)
dfs.client.hedged.read.threadpool.size: 40
dfs.client.hedged.read.threshold.millis: 10 millisecond(s)
hbase.rest.threads.min: 8
hbase.rest.threads.max: 150
Maximum Process File Descriptors: 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
Dunhu Mover Threads: 6
Mutengi Java Murwi Saizi muBytes: 1 GiB
HBase REST Server Default Group: 3 GiB
HBase Thrift Server Default Group: 3 GiB
Java Heap Saizi yeHBase Master muBytes: 16 GiB
Java Heap Saizi yeHBase RegionServer mumaBytes: 32 GiB

+ZooKeeper
maxClientCnxns: 601
maxSessionTimeout: 120000
Kugadzira matafura:
hbase org.apache.hadoop.hbase.util.RegionSplitter ns:t1 UniformSplit -c 64 -f cf
alter 'ns:t1', {NAME => 'cf', DATA_BLOCK_ENCODING => 'FAST_DIFF', COMPRESSION => 'GZ'}

Pane imwe pfungwa yakakosha pano - iyo DataStax tsananguro haitauri kuti mangani matunhu akashandiswa kugadzira HB matafura, kunyangwe izvi zvakakosha kune makuru mavhoriyamu. Nokudaro, nokuda kwezviedzo, nhamba = 64 yakasarudzwa, iyo inobvumira kuchengetedza kusvika ku640 GB, i.e. tafura yehukuru hwepakati.

Panguva yekuedzwa, HBase yaive nezviuru makumi maviri nezviviri zvematafura uye 22 zviuru zvematunhu (izvi zvingadai zvakauraya kune shanduro 67 kana zvisiri zvechigamba chataurwa pamusoro).

Iye zvino kune kodhi. Sezvo zvaive zvisina kujeka kuti ndedzipi masisitimu ainyanya kubatsira kune imwe dhatabhesi, bvunzo dzakaitwa mumisanganiswa dzakasiyana. Avo. mune mamwe maedzo, matafura mana akaiswa panguva imwe chete (ese ma node mana akashandiswa kubatanidza). Mune mimwe miedzo takashanda nematafura masere akasiyana. Mune zvimwe zviitiko, saizi yebatch yaive zana, mune vamwe 4 (batch parameter - ona kodhi pazasi). Saizi yedata yekukosha i4 bytes kana 8 bytes (dataSize). Pamwe chete, marekodhi emamiriyoni mashanu akanyorwa uye akaverengerwa patafura yega yega. Panguva imwecheteyo, shinda 100 dzakanyorwa/kuverengerwa tafura yega yega (thread nhamba - thNum), imwe neimwe yaishandisa makiyi ayo (kuverenga = miriyoni imwe):

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);
    }
}

Naizvozvo, kushanda kwakafanana kwakapihwa 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);
    }
}

Sezvo muHB mutengi achifanira kutarisira kugovera yunifomu yedata, kiyi yekuisa salting yaitaridzika seizvi:

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);
}

Iye zvino chikamu chinonyanya kufadza - mhedzisiro:

Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko

Chinhu chimwe chete mune girafu fomu:

Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko

Kubatsira kweHB kunoshamisa zvekuti pane fungidziro yekuti pane imwe mhando yebhodhoro mukuseta kweCS. Zvakadaro, Googling nekutsvaga ma parameter ari pachena (seconcurrent_writes or memtable_heap_space_in_mb) hazvina kukurumidzira zvinhu. Panguva imwecheteyo, matanda akachena uye haatuki chero chinhu.

Iyo data yakagoverwa zvakaenzana kumativi ose, nhamba kubva kumanodhi ese aive akafanana.

Izvi ndizvo zvakaita nhamba dzetafura dzinotaridzika kubva kune imwe yemanodhiNzvimbo huru: ks
Verenga Nhamba: 9383707
Verenga Latency: 0.04287025042448576 ms
Nyora Nhamba: 15462012
Nyora Latency: 0.1350068438699957 ms
Yakamirira Flushes: 0
Tafura: t1
SSTable kuverenga: 16
Nzvimbo yakashandiswa (kurarama): 148.59 MiB
Nzvimbo yakashandiswa (yakazara): 148.59 MiB
Nzvimbo inoshandiswa nesnapshots (yakazara): 0 bytes
Off murwi ndangariro yakashandiswa (yakazara): 5.17 MiB
SSTable Compression Ratio: 0.5720989576459437
Nhamba yezvikamu (inofungidzirwa): 3970323
Memtable cell count: 0
Memtable data size: 0 bytes
Memtable kubva murwi ndangariro inoshandiswa: 0 bytes
Memtable switch count: 5
Nhamba yekuverenga yemunharaunda: 2346045
Kunonoka kuverenga kwemunharaunda: NaN ms
Nhamba yekunyora yemunharaunda: 3865503
Local kunyora latency: NaN ms
Inomirira flushes: 0
Percent yakagadziridzwa: 0.0
Bloom sefa yenhema positives: 25
Bloom sefa reshiyo yenhema: 0.00000
Bloom sefa nzvimbo inoshandiswa: 4.57 MiB
Bloom sefa kubva murwi ndangariro yakashandiswa: 4.57 MiB
Index pfupiso kubva murwi ndangariro yakashandiswa: 590.02 KB
Kudzvanya metadata kubva murwi ndangariro yakashandiswa: 19.45 KB
Yakasanganiswa partition mashoma mabhaiti: 36
Compacted partition maximum bytes: 42
Compact partition zvinoreva ma byte: 42
Avhareji yemasero mhenyu pachidimbu (maminitsi mashanu ekupedzisira): NaN
Maseru mapenyu pachidimbu (maminetsi mashanu ekupedzisira): 0
Avhareji yematombo emakuva pachidimbu (maminitsi mashanu ekupedzisira): NaN
Makuru ematombo emakuva pachidimbu (maminetsi mashanu ekupedzisira): 0
Kudonha Kuchinja: 0 bytes

Kuedza kuderedza saizi yebhechi (kunyangwe kuitumira yega) haina mhedzisiro, yakawedzera kuipa. Zvinogoneka kuti chokwadi ichi ndicho chaicho chikuru chekuita kweCS, sezvo mhedzisiro yakawanikwa yeCS yakafanana neyakawanikwa yeDataStax - anenge mazana ezviuru zvekushanda pasekondi. Mukuwedzera, kana tikatarisa kushandiswa kwezviwanikwa, tichaona kuti CS inoshandisa yakawanda CPU uye disks:

Hondo yembiri yakozuna, kana Cassandra vs HBase. Sberbank timu chiitiko
Iyo nhamba inoratidza kushandiswa panguva yekumhanyisa bvunzo dzese mumutsara kune ese ari maviri dhatabhesi.

Nezve HB ine simba rekuverenga mukana. Pano iwe unogona kuona kuti kune ese ari maviri dhatabhesi, dhisiki kushandiswa panguva yekuverenga kwakadzikira zvakanyanya (yekuverenga bvunzo ndiyo yekupedzisira yekutenderera kutenderera kune yega dhatabhesi, semuenzaniso kune CS iyi kubva 15:20 kusvika 15:40). Munyaya yeHB, chikonzero chakajeka - yakawanda yedata inorembera mundangariro, mu memstore, uye imwe yakavharirwa mu blockcache. Kana iri CS, haina kunyatsojeka kuti inoshanda sei, asi disk recycling haioneki, asi kana zvikaitika, kuedza kwakaitwa kugonesa cache row_cache_size_in_mb = 2048 uye kuisa caching = {'makiyi': 'ZVESE', 'rows_per_partition': '2000000'}, asi izvo zvakaita kuti zvinyanye kuipa.

Izvo zvakakoshawo kutaura zvakare chinhu chakakosha nezvehuwandu hwematunhu muHB. Muchiitiko chedu, kukosha kwakatsanangurwa se 64. Kana iwe ukaideredza uye uchiita kuti ienzane, semuenzaniso, 4, zvino pakuverenga, kukurumidza kunodonha ne2 nguva. Chikonzero ndechekuti memstore inozadza nekukasira uye mafaera anogezwa kakawanda uye pakuverenga, mafaera akawanda anozoda kugadziriswa, inova mashandiro akaomarara eHB. Mumamiriro ezvinhu chaiwo, izvi zvinogona kurapwa nekufunga kuburikidza nepresplitting uye compactization zano; kunyanya, isu tinoshandisa-yega chinyorwa chinounganidza marara uye kumanikidza HFiles nguva dzose kumashure. Zvinogoneka kuti kune bvunzo dzeDataStax vakagovera dunhu 1 chete patafura (iyo isiri iyo) uye izvi zvingangojekesa kuti nei HB yaive yakaderera mukuyedza kwavo kuverenga.

Mhedziso dzekutanga dzinotevera dzinotorwa kubva pane izvi. Tichifunga kuti hapana zvikanganiso zvakakura zvakaitwa panguva yekuyedzwa, ipapo Cassandra inoita senge colossus ine tsoka dzevhu. Kunyanya, nepo achienzanisa negumbo rimwe chete, sepamufananidzo uri pakutanga kwechinyorwa, anoratidza migumisiro yakanaka, asi mukurwisana mumamiriro ezvinhu akafanana anorasikirwa zvachose. Panguva imwecheteyo, tichifunga nezve yakaderera CPU kushandiswa pane yedu Hardware, takadzidza kudyara maviri RegionServer HBs pamuenzi uye nekudaro takawedzera kuita kwakapetwa kaviri. Avo. Tichifunga nezvekushandiswa kwezviwanikwa, mamiriro eCS anotonyanya kusiririsa.

Ehe, bvunzo idzi dzakanyatsogadzirwa uye huwandu hwe data hwakashandiswa pano hune mwero. Zvinogoneka kuti kana tikachinjira kuma terabytes, mamiriro acho angave akasiyana, asi nepo kuHB tichigona kurodha materabytes, kune CS izvi zvakazonetsa. Yaiwanzokandira OperationTimedOutException kunyangwe nemavhoriyamu aya, kunyangwe maparamita ekumirira mhinduro aive atowedzerwa kakawanda kana zvichienzaniswa neayo.

Ndinovimba kuti kuburikidza nekuedza pamwe chete tichawana mabhodhoro eCS uye kana tikakwanisa kukurumidza, ipapo pakupera kwechinyorwa ini ndichanyatso wedzera ruzivo nezvemhedzisiro yekupedzisira.

UPD: Nekuda kwezano remakomuredhi, ndakakwanisa kukurumidza kuverenga. Waive:
159 ops (matafura mana, 644 hova, batch zana).
Wedzera:
.neLoadBancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().kuvaka()))
Uye ndakatamba ndichitenderera nenhamba yeshinda. Mhedzisiro yacho ndeiyi:
4 matafura, 100 shinda, batch = 1 (chidimbu nechidimbu): 301 ops
4 matafura, zana shinda, batch = 100: 10 ops
4 matafura, zana shinda, batch = 100: 100 ops

Gare gare ini ndichashandisa mamwe matipi ekugadzirisa, mhanyisa yakazara bvunzo kutenderera uye nekuwedzera mhinduro pakupera kweposvo.

Source: www.habr.com

Voeg