Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank

Hona ha se motlae, ho bonahala eka setšoantšo sena se bonts'a hantle bohlokoa ba lits'ebeletso tsena, 'me qetellong ho tla hlaka hore na ke hobane'ng:

Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank

Ho latela maemo a DB-Engines, li-database tse peli tse tsebahalang haholo tsa NoSQL ke Cassandra (kamora mona CS) le HBase (HB).

Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank

Ka thato ea bokamoso, sehlopha sa rona sa taolo ea ho jarolla data ho Sberbank se se se ntse se le teng kgale mme e sebetsa haufi-ufi le HB. Nakong ena, re ile ra ithuta matla le mefokolo ea eona hantle ’me ra ithuta ho e pheha. Leha ho le joalo, ho ba teng ha mofuta o mong ka sebōpeho sa CS kamehla ho ne ho re qobella ho itlhokofatsa hanyenyane ka lipelaelo: na re entse khetho e nepahetseng? Ho feta moo, liphello papiso, e entsoeng ke DataStax, ba boletse hore CS e otla HB habonolo ka hoo e ka bang palo e sithabetsang. Ka lehlakoreng le leng, DataStax ke motho ea thahasellang, 'me ha ua lokela ho nka lentsoe la bona bakeng sa eona. Hape re ile ra ferekanngoa ke boitsebiso bo fokolang haholo mabapi le maemo a tlhahlobo, kahoo re ile ra etsa qeto ea ho iphumanela hore na morena oa BigData NoSql ke mang, 'me liphetho tse fumanoeng li ile tsa e-ba monate haholo.

Leha ho le joalo, pele u fetela liphellong tsa liteko tse entsoeng, hoa hlokahala ho hlalosa likarolo tsa bohlokoa tsa tlhophiso ea tikoloho. 'Nete ke hore CS e ka sebelisoa ka mokhoa o lumellang tahlehelo ea data. Tseo. sena ke ha seva se le seng feela (node) se ikarabella bakeng sa lintlha tsa senotlolo se itseng, 'me haeba ka lebaka le itseng se hlōleha, joale boleng ba senotlolo sena bo tla lahleha. Bakeng sa mesebetsi e mengata sena ha se bohlokoa, empa bakeng sa lefapha la libanka sena ke mokhelo ho fapana le molao. Tabeng ea rona, ho bohlokoa ho ba le likopi tse 'maloa tsa data bakeng sa polokelo e tšepahalang.

Ka hona, ho ne ho nkoa feela mokhoa oa ho sebetsa oa CS ka mokhoa oa ho pheta-pheta makhetlo a mararo, ke hore. Ho thehoa ha sebaka sa casespace ho ile ha etsoa ka li-parameter tse latelang:

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

Ka mor'a moo, ho na le mekhoa e 'meli ea ho netefatsa boemo bo hlokahalang ba ho lumellana. Molao o akaretsang:
NW + NR > RF

Ho bolelang hore palo ea litiiso tse tsoang ho li-node ha u ngola (NW) hammoho le palo ea litiiso tse tsoang ho li-node ha u bala (NR) e tlameha ho ba kholo ho feta ntlha ea ho pheta-pheta. Tabeng ea rona, RF = 3, ho bolelang hore likhetho tse latelang li loketse:
2 + 2 > 3
3 + 1 > 3

Kaha ho bohlokoa haholo hore re boloke data ka mokhoa o ts'epahalang kamoo ho ka khonehang, ho ile ha khethoa leano la 3+1. Ho phaella moo, HB e sebetsa ka molao-motheo o tšoanang, i.e. papiso e joalo e tla ba e loketseng haholoanyane.

Hoa lokela ho hlokomeloa hore DataStax e entse se fapaneng thutong ea bona, ba beha RF = 1 bakeng sa CS le HB ka bobeli (bakeng sa ho qetela ka ho fetola litlhophiso tsa HDFS). Ena ke ntlha ea bohlokoa haholo hobane phello ea ts'ebetso ea CS tabeng ena e kholo. Mohlala, setšoantšo se ka tlase se bonts'a keketseho ea nako e hlokahalang ho kenya data ho CS:

Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank

Mona re bona tse latelang: ha likhoele tse qothisanang lehlokoa li ngola data, ho nka nako e telele. Sena ke sa tlhaho, empa ho bohlokoa hore ho senyeha ha ts'ebetso bakeng sa RF=3 ho phahame haholo. Ka mantsoe a mang, haeba re ngola likhoele tse 4 litafoleng tse 5 ka 'ngoe (20 ka kakaretso), RF=3 e lahleheloa ke makhetlo a ka bang 2 (metsotsoana e 150 bakeng sa RF=3 khahlano le 75 bakeng sa RF=1). Empa haeba re eketsa mojaro ka ho kenya data litafoleng tse 8 ka likhoele tse 5 ka 'ngoe (40 ka kakaretso), tahlehelo ea RF=3 e se e le makhetlo a 2,7 (metsotsoana e 375 khahlano le 138).

Mohlomong sena ke karolo ea sephiri sa tlhahlobo e atlehileng ea mojaro e entsoeng ke DataStax bakeng sa CS, hobane bakeng sa HB boemong ba rona ho fetola ntlha ea ho pheta-pheta ho tloha 2 ho ea ho 3 ho ne ho se na phello leha e le efe. Tseo. li-disk ha se bothata ba HB bakeng sa tlhophiso ea rona. Leha ho le joalo, ho na le maraba a mang a mangata mona, hobane ho lokela ho hlokomeloa hore mofuta oa rona oa HB o ne o lokisitsoe hanyenyane 'me o lokisoa, maemo a fapane ka ho feletseng, joalo-joalo. Hape ke habohlokoa ho hlokomela hore mohlomong ha ke tsebe ho lokisetsa CS ka nepo 'me ho na le litsela tse ling tse atlehang tsa ho sebetsa le eona,' me ke tšepa hore re tla fumana litlhaloso. Empa lintho tsa pele pele.

Liteko tsohle li entsoe ho sehlopha sa lisebelisoa tse nang le li-server tse 4, e 'ngoe le e' ngoe e na le tlhophiso e latelang:

CPU: Xeon E5-2680 v4 @ 2.40GHz 64 likhoele.
Li-disks: likotoana tse 12 tsa SATA HDD
mofuta oa java: 1.8.0_111

Phetolelo ea CS: 3.11.5

likarolo tsa cassandra.ymlpalo_tokens: 256
hinted_handoff_enabled: nnete
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
permits_validity_in_ms: 2000
credentials_validity_in_ms: 2000
mokhahlelo: org.apache.cassandra.dht.Murmur3Partitioner
data_file_directories:
- /data1/cassandra/data # bukana ka 'ngoe ea dataN ke disk e arohaneng
- /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: bohata
disk_falure_policy: emisa
itlama_leano: emisa
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: nako le nako
commitlog_sync_period_in_ms: 10000
commitlog_segment_size_in_mb: 32
peo_mofani:
- sehlopha_lebitso: org.apache.cassandra.locator.SimpleSeedProvider
paramethara:
— peo: "*,*"
concurrent_reads: 256 # lekile 64 - ha ho phapang e lemohileng
concurrent_writes: 256 # lekile 64 - ha ho phapang e lemohileng
concurrent_counter_writes: 256 # lekile 64 - ha ho phapang e lemohileng
concurrent_materialized_view_writes: 32
memtable_heap_space_in_mb: 2048 # e lekile 16 GB - e ne e lieha
memtable_allocation_type: heap_buffers
index_summary_capacity_in_mb:
index_summary_resize_interval_in_metsotso: 60
trickle_fsync: bohata
trickle_fsync_interval_in_kb: 10240
polokelo_boema-kepe: 7000
ssl_storage_port: 7001
mamela_aterese: *
Aterese_ea_haso: *
mamela_ho_ho phatlalatsoa_aterese: 'nete
internode_authenticator: org.apache.cassandra.auth.AllowAllInternodeAuthenticator
start_native_transport: nnete
native_transport_port: 9042
start_rpc: 'nete
rpc_aterese: *
rpc_port: 9160
rpc_keepalive: 'nete
rpc_server_type: sync
thrift_framed_transport_size_in_mb: 15
incremental_backups: bohata
snapshot_before_compaction: bohata
auto_snapshot: nnete
kholomo_index_size_in_kb: 64
kholomo_index_cache_size_in_kb: 2
concurrent_compactors: 4
compaction_throughput_mb_per_sec: 1600
sstable_preemptive_open_interval_in_mb: 50
bala_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: bohata
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
dikgetho_tsa_encryption_server:
internode_encryption: ha ho letho
client_encryption_options:
nolofalloa: bohata
internode_compression: dc
inter_dc_tcp_nodelay: bohata
tracetype_query_ttl: 86400
tracetype_repair_ttl: 604800
nolofalletsa_user_defined_functions: bohata
enable_scripted_user_defined_functions: bohata
windows_timer_interval: 1
transparent_data_encryption_options:
nolofalloa: bohata
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: bohata
enable_materialized_views: 'nete
enable_sasi_indexes: nnete

Litlhophiso tsa GC:

### Litlhophiso tsa CMS-XX:+SebelisaParNewGC
-XX:+UseConcMarkSweepGC
-XX:+CMSParallelRemarkEnabled
-XX:Karolo ea Pholoho=8
-XX:MaxTenuringThreshold=1
-XX:CMSInitiatingOccupancyFraction=75
-XX:+SebelisaCMSInitiatingOccupancyFeela
-XX:CMSWaitDuration=10000
-XX:+CMSParallelInitialMarkEnabled
-XX:+CMSEdenChunksRecordKamehla
-XX:+CMSClassUnloadingEnabled

Mohopolo oa jvm.options o ne o abetsoe 16Gb (re ile ra boela ra leka 32 Gb, ha ho phapang e ileng ea hlokomeloa).

Litafole li entsoe ka taelo:

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 (ka tlelaseng org.apache.hadoop.hbase.regionserver.HRegion ha rea ​​kenyelletsa MetricsRegion e lebisitseng ho GC ha palo ea libaka e ne e feta 1000 ho RegionServer)

Li-parameter tsa HBase tseo e seng tsa kamehlazookeeper.session.timeout: 120000
hbase.rpc.timeout: metsotso e 2
hbase.client.scanner.timeout.period: metsotso e 2
hbase.master.handler.count: 10
hbase.regionserver.lease.period, hbase.client.scanner.timeout.nako: metsotso e 2
hbase.regionserver.handler.count: 160
hbase.regionserver.metahandler.count: 30
hbase.regionserver.logroll.nako: lihora tse 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: 1 (matsatsi)
Snippet ea Tlhophiso e Tsoetseng Pele ea Ts'ebeletso ea HBase (Valve ea Tšireletso) bakeng sa 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
Likhetho tsa Tlhophiso ea Java bakeng sa HBase RegionServer:
-XX:+SebelisaParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=70 -XX:+CMSParallelRemarkEnabled -XX:ReservedCodeCacheSize=256m
hbase.snapshot.master.timeoutMillis: metsotso e 2
hbase.snapshot.region.timeout: metsotso e 2
hbase.snapshot.master.timeout.millis: metsotso e 2
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 Size: 100 MiB
Li-backups tsa Faele ea Mafaele a Phahameng ka ho Fetisisa: 5
RegionServer Max Log Size: 100 MiB
Li-backups tsa Faele ea Sebaka sa Server e phahameng haholo: 5
HBase Active Master Detection Window: 4 metsotso(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
Boholo ba Litlhaloso tsa Faele ea Ts'ebetso: 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.nnyane: 6
hbase.ipc.server.read.threadpool.size: 20
Likhoele Tsa Sebaka: 6
Client Java Heap Size ka Byte: 1 GiB
HBase REST Sehlopha sa Kameho sa Seva: 3 GiB
HBase Thrift Server Default Group: 3 GiB
Java Heap Boholo ba HBase Master ka li-Byte: 16 GiB
Java Heap Size ea HBase RegionServer ka Bytes: 32 GiB

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

Ho na le ntlha e le 'ngoe ea bohlokoa mona - tlhaloso ea DataStax ha e bolele hore na ho sebelisitsoe libaka tse kae ho theha litafole tsa HB, le hoja sena se le bohlokoa bakeng sa li-volume tse kholo. Ka hona, bakeng sa liteko, palo = 64 e khethiloe, e lumellang ho boloka ho fihlela ho 640 GB, i.e. tafole ea boholo bo mahareng.

Nakong ea tlhahlobo, HBase e ne e e-na le litafole tse likete tse 22 le libaka tse likete tse 67 (sena se ka be se bolaile mofuta oa 1.2.0 haeba e se bakeng sa patch e boletsoeng ka holimo).

Joale bakeng sa khoutu. Kaha ho ne ho sa hlaka hore na ke litlhophiso life tse neng li le molemo ho database e itseng, liteko li ile tsa etsoa ka metsoako e fapaneng. Tseo. litekong tse ling, litafole tse 4 li ne li kentsoe ka nako e le 'ngoe (li-node tsohle tse 4 li ne li sebelisetsoa ho hokahanya). Litekong tse ling re ile ra sebetsa le litafole tse 8 tse fapaneng. Maemong a mang, boholo ba batch e ne e le 100, ho ba bang 200 (batch parameter - bona khoutu e ka tlase). Boholo ba data bakeng sa boleng ke li-byte tse 10 kapa 100 byte (dataSize). Ka kakaretso, lirekoto tse limilione tse 5 li ile tsa ngoloa le ho baloa tafoleng ka 'ngoe nako le nako. Ka nako e ts'oanang, likhoele tse 5 li ne li ngotsoe / li baloa tafoleng e 'ngoe le e' ngoe (nomoro ea khoele - thNum), e 'ngoe le e' ngoe e sebelisitse mefuta ea eona ea linotlolo (palo = 1 milione):

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

Ka hona, ts'ebetso e ts'oanang e ile ea fanoa bakeng sa 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);
    }
}

Kaha ho HB moreki o tlameha ho hlokomela kabo e tšoanang ea data, ts'ebetso ea bohlokoa ea salting e ne e shebahala tjena:

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

Hona joale karolo e khahlisang haholo - liphetho:

Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank

Ntho e tšoanang ka sebopeho sa graph:

Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank

Molemo oa HB oa makatsa hoo ho nang le pelaelo ea hore ho na le mofuta o itseng oa botlolo ho setupong sa CS. Leha ho le joalo, Googling le ho batla liparamente tse hlakileng (joaloka concurrent_writes kapa memtable_heap_space_in_mb) ha lia ka tsa potlakisa lintho. Ka nako e ts'oanang, lifate li hloekile 'me ha li hlapanye ka letho.

Lintlha li ne li ajoa ka ho lekana ho pholletsa le li-node, lipalo-palo tse tsoang ho li-node tsohle li ne li batla li lekana.

Sena ke kamoo lipalo-palo tsa tafole li shebahalang kateng ho tsoa ho e 'ngoe ea li-nodeSebaka sa bohlokoa: ks
Bala Palo: 9383707
Nako ea ho Bala: 0.04287025042448576 ms
Palo ea ho ngola: 15462012
Ngola Latency: 0.1350068438699957 ms
Li-Flushes tse Emetseng: 0
Lethathamo: t1
Palo e tsitsitseng: 16
Sebaka se sebelisitsoeng (phela): 148.59 MiB
Sebaka se sebelisitsoeng (kakaretso): 148.59 MiB
Sebaka se sebelisoang ke li-snapshots (kakaretso): li-byte tse 0
Mehopolo e tsoang ho qubu e sebelisitsoeng (kakaretso): 5.17 MiB
SSTable Compression Ratio: 0.5720989576459437
Palo ea likarolo (khakanyo): 3970323
Palo ea lisele tse ka lebalehang: 0
Boholo ba data bo ka bolokoang: li-byte tse 0
Memori e ka bolokoang e sebelisitsoeng: li-byte tse 0
Palo ea li-switches tse ka lebalehang: 5
Palo ea libaka tse baloang: 2346045
Nako ea ho baloa sebakeng sa heno: NaN ms
Palo ea ho ngola ea lehae: 3865503
Nako ea ho ngola ea lehae: NaN ms
Li-flushes tse ntseng li emetse: 0
Liphesente tse lokisitsoeng: 0.0
Sefefo sa Bloom se fosahetseng: 25
Karo-karolelano ea bohata ea "Bloom filter": 0.00000
Sebaka sa sesefa sa Bloom se sebelisitsoeng: 4.57 MiB
Filter ea Bloom e tima mohopolo oa qubu o sebelisitsoeng: 4.57 MiB
Kakaretso ea index ea memori ea qubu e sebelisitsoeng: 590.02 KB
Metadata ea khatello ea mohopolo oa qubu e sebelisitsoeng: 19.45 KB
Bonyane ba karohano ba li-byte: 36
Karolo e kholo ea karohano ea li-byte: 42
Karohano e kopanetsoeng e bolela li-byte: 42
Karolelano ea lisele tse phelang selae se seng le se seng (metsotso e mehlano e fetileng): NaN
Boholo ba lisele tse phelang ka selae ka seng (metsotso e mehlano e fetileng): 0
Karolelano ea majoe a mabitla ka selae (metsotso e mehlano e fetileng): NaN
Boholo ba majoe a mabitla ka selae ka seng (metsotso e mehlano e fetileng): 0
Liphetoho tse lahliloeng: li-byte tse 0

Boiteko ba ho fokotsa boholo ba batch (esita le ho bo romella ka bomong) bo ne bo se na phello, bo ile ba mpefala le ho feta. Ho ka etsahala hore ha e le hantle sena ke ts'ebetso e phahameng ea CS, kaha liphetho tse fumanoeng bakeng sa CS li tšoana le tse fumanoang bakeng sa DataStax - hoo e ka bang likete tse makholo tsa ts'ebetso ka motsotsoana. Ntle le moo, ha re sheba ts'ebeliso ea lisebelisoa, re tla bona hore CS e sebelisa CPU le li-disk tse ngata haholo:

Ntoa ea yakozuna tse peli, kapa Cassandra vs HBase. Phihlelo ea sehlopha sa Sberbank
Palo e bonts'a ts'ebeliso ha ho etsoa liteko tsohle ka tatellano bakeng sa database ka bobeli.

Mabapi le monyetla o matla oa ho bala oa HB. Mona u ka bona hore bakeng sa li-database ka bobeli, tšebeliso ea disk nakong ea ho bala e tlaase haholo (liteko tsa ho bala ke karolo ea ho qetela ea potoloho ea liteko bakeng sa database e 'ngoe le e' ngoe, mohlala bakeng sa CS sena ke ho tloha 15:20 ho 15:40). Tabeng ea HB, lebaka le hlakile - boholo ba data bo leketlile mohopolong, memstore, 'me tse ling li bolokiloe ka har'a blockcache. Ha e le CS, ha e hlake hantle hore na e sebetsa joang, empa disk recycling le eona ha e bonahale, empa feela haeba ho ka etsahala, ho ile ha etsoa boiteko ba ho nolofalletsa cache row_cache_size_in_mb = 2048 le ho beha caching = {'linotlolo': 'ALL', 'rows_per_partition': '2000000'}, empa seo se ile sa mpefatsa le ho feta.

Hape ke habohlokoa ho bolela hape ntlha ea bohlokoa mabapi le palo ea libaka tsa HB. Tabeng ea rona, boleng bo ne bo boleloa e le 64. Haeba u e fokotsa 'me ue etsa hore e lekane le, mohlala, 4, joale ha u bala, lebelo le theoha ka makhetlo a 2. Lebaka ke hore memstore e tla tlala kapele 'me lifaele li tla hlatsuoa khafetsa,' me ha ho baloa, lifaele tse ngata li tla hloka ho sebetsoa, ​​​​e leng ts'ebetso e rarahaneng bakeng sa HB. Maemong a sebele, sena se ka phekoloa ka ho nahana ka leano la ho penta le ho kopanya; haholo-holo, re sebelisa sesebelisoa se ingoletseng se bokellang litšila le ho hatella HFiles kamehla ka morao. Hoa khoneha hore bakeng sa liteko tsa DataStax ba fane ka sebaka sa 1 feela tafoleng (e seng e nepahetse) 'me sena se ne se tla hlakisa hore na ke hobane'ng ha HB e ne e le tlaase haholo litekong tsa bona tsa ho bala.

Liqeto tse latelang tsa selelekela li nkuoe ho sena. Ho nka hore ha ho liphoso tse kholo tse entsoeng nakong ea teko, joale Cassandra e shebahala joaloka colossus e nang le maoto a letsopa. Ha e le hantle, ha a ntse a leka-lekanya leoto le le leng, joaloka setšoantšong se qalong ea sehlooho sena, o bontša liphello tse batlang li le ntle, empa ntoeng tlas'a maemo a tšoanang o lahleheloa ka ho feletseng. Ka nako e ts'oanang, re ela hloko ts'ebeliso e tlase ea CPU ho lisebelisoa tsa rona, re ithutile ho lema li-HB tse peli tsa RegionServer ka moamoheli 'me kahoo ra eketsa ts'ebetso habeli. Tseo. Ha ho nahanoa ka tšebeliso ea lisebelisoa, boemo ba CS bo mpe le ho feta.

Ehlile, liteko tsena ke tsa maiketsetso 'me palo ea data e sebelisitsoeng mona e batla e itekanetse. Ho ka etsahala hore haeba re fetohela ho li-terabyte, boemo bo ne bo tla fapana, empa ha bakeng sa HB re ka kenya li-terabyte, ho CS sena se ile sa fetoha bothata. E ne e atisa ho lahlela OperationTimedOutException leha e na le li-volumes tsena, le hoja mekhahlelo ea ho emela karabo e ne e se e eketsehile ka makhetlo a mangata ha e bapisoa le ea kamehla.

Ke tšepa hore ka boiteko bo kopanetsoeng re tla fumana li-bottlenecks tsa CS 'me haeba re ka e potlakisa, joale qetellong ea poso ka sebele ke tla eketsa tlhahisoleseding mabapi le liphello tsa ho qetela.

UPD: Ka lebaka la likeletso tsa ma-comrades, ke khonne ho potlakisa ho bala. E ne e le:
159 ops (litafole tse 644, melapo e 4, sehlopha sa 5).
E kentsoe:
.withLoadBancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
'Me ke ile ka bapala ka palo ea likhoele. Sephetho ke se latelang:
litafole tse 4, likhoele tse 100, batch = 1 (sekoto ka seng): 301 ops
litafole tse 4, likhoele tse 100, batch = 10: 447 ops
litafole tse 4, likhoele tse 100, batch = 100: 625 ops

Hamorao ke tla sebelisa malebela a mang a tokiso, ke tsamaise potoloho e felletseng ea liteko ebe ke eketsa liphetho qetellong ea poso.

Source: www.habr.com

Eketsa ka tlhaloso