Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Ịrụ ọrụ dị elu bụ otu n'ime isi ihe achọrọ mgbe ị na-arụ ọrụ na nnukwu data. N'ime ngalaba ntinye data na Sberbank, anyị na-ebufe ihe fọrọ nke nta ka ọ bụrụ azụmahịa niile n'ime igwe ojii data dabere na Hadoop ma yabụ na-emeso nnukwu ozi. Dị ka o kwesịrị ịdị, anyị na-achọ ụzọ iji meziwanye arụmọrụ, ma ugbu a, anyị chọrọ ịgwa gị otu anyị siri mee patch RegionServer HBase na onye ahịa HDFS, ekele maka nke anyị nwere ike ịbawanye ọsọ nke ọrụ ọgụgụ.
Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Agbanyeghị, tupu ịga n'ihu n'isi nke mmelite ndị a, ọ bara uru ikwu maka mmachi na, n'ụkpụrụ, enweghị ike ịgbagha ma ọ bụrụ na ịnọ ọdụ na HDD.

Ihe kpatara HDD na ngwa ngwa agụ Random Access ekwekọghị
Dị ka ị maara, HBase, na ọtụtụ ọdụ data ndị ọzọ, na-echekwa data na ngọngọ nke ọtụtụ iri puku kilobytes n'ogo. Site na ndabara ọ bụ ihe dịka 64 KB. Ugbu a, ka anyị were ya na anyị kwesịrị ịnweta naanị 100 bytes ma anyị rịọ HBase ka o nye anyị data a site na iji igodo ụfọdụ. Ebe ọ bụ na nha ngọngọ na HFiles bụ 64 KB, arịrịọ ahụ ga-abụ ugboro 640 (naanị otu nkeji!) karịa mkpa.

Na-esote, ebe ọ bụ na arịrịọ ahụ ga-agafe HDFS na usoro nchekwa metadata ya ShortCircuitCache (nke na-enye ohere ịnweta faịlụ ozugbo), nke a na-eduga n'ịgụ 1 MB na diski. Otú ọ dị, a pụrụ imezi nke a na paramita dfs.client.agụ.shortcircuit.buffer.size na n'ọtụtụ ọnọdụ ọ bụ ihe ezi uche dị na ya iji belata uru a, dịka ọmụmaatụ na 126 KB.

Ka anyị kwuo na anyị na-eme nke a, ma na mgbakwunye, mgbe anyị na-amalite ịgụ data site na java api, dị ka ọrụ dị ka FileChannel.read ma rịọ sistemụ arụmọrụ ka ọ gụọ ọnụọgụ data akọwapụtara, ọ na-agụ "dị nnọọ ka" ugboro 2 ọzọ. , i.e. 256 KB n'ọnọdụ anyị. Nke a bụ n'ihi na java enweghị ụzọ dị mfe iji tọọ ọkọlọtọ FADV_RANDOM iji gbochie omume a.

N'ihi ya, iji nweta 100 bytes anyị, a na-agụ ugboro 2600 karịa n'okpuru mkpuchi. Ọ ga-adị ka ihe ngwọta ahụ doro anya, ka anyị belata ngọngọ ngọngọ na kilobyte, tọọ ọkọlọtọ a kpọtụrụ aha ma nweta nnukwu nghọta ngwa ngwa. Mana nsogbu bụ na site n'ibelata nha ngọngọ site ugboro abụọ, anyị na-ebelata ọnụ ọgụgụ bytes na-agụ kwa nkeji oge site na ugboro abụọ.

Enwere ike nweta ụfọdụ uru site na ịtọọ ọkọlọtọ FADV_RANDOM, mana ọ bụ naanị site na eriri multi-threading dị elu yana nke nwere oke mgbochi nke 128 KB, mana nke a kacha nke pasentị iri abụọ:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Emere ule na faịlụ 100, nke ọ bụla 1 GB n'ogo ma dị na 10 HDDs.

Ka anyị gbakọọ ihe anyị nwere ike, n'ụkpụrụ, dabere na ọsọ a:
Ka anyị kwuo na anyị na-agụ site na diski iri na ọsọ nke 10 MB / sk, i.e. 280 nde ugboro 3 bytes. Mana dị ka anyị na-echeta, data anyị chọrọ bụ ugboro 100 erughị ihe a na-agụ. Ya mere, anyị na-ekewa nde 2600 site na 3 wee nweta Ndekọ 1100 kwa nkeji.

Na-akụda mmụọ, ọ́ bụghị ya? Nke ahụ bụ ọdịdị Nnweta Random ịnweta data na HDD - n'agbanyeghị nha ngọngọ. Nke a bụ oke anụ ahụ nke ịnweta enweghị usoro na enweghị nchekwa data nwere ike ịpụpụ karịa n'okpuru ọnọdụ ndị dị otú ahụ.

Kedu ka ọdụ data si enweta ọsọ ọsọ dị elu? Iji zaa ajụjụ a, ka anyị leba anya n'ihe na-eme na foto a:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

N'ebe a, anyị na-ahụ na maka nkeji ole na ole mbụ ọsọ ahụ bụ n'ezie ihe dị ka otu puku ndekọ kwa nkeji. Otú ọ dị, n'ihu, n'ihi na a na-agụ ọtụtụ ihe karịa ka a rịọrọ, data ahụ na-ejedebe na buff / cache nke sistemụ arụmọrụ (linux) na ọsọ na-abawanye ruo 60 puku puku kwa sekọnd.

Ya mere, n'ihu, anyị ga-eleba anya na ịnweta ngwa ngwa naanị data dị na cache OS ma ọ bụ dị na SSD/NVMe nchekwa ngwaọrụ nke ohere ịnweta ngwa ngwa.

N'ọnọdụ anyị, anyị ga-eme ule na bench nke sava 4, nke ọ bụla n'ime ha na-akwụ ụgwọ dị ka ndị a:

CPU: Xeon E5-2680 v4 @ 2.40GHz 64 eri.
Ebe nchekwa: 730 GB.
ụdị java: 1.8.0_111

Na ebe a isi ihe bụ ọnụọgụ data dị na tebụl nke kwesịrị ịgụ. Nke bụ eziokwu bụ na ọ bụrụ na ị gụọ data sitere na tebụl nke etinyere kpamkpam na cache HBase, mgbe ahụ ọ gaghị abịa na-agụ site na buff/cache sistemụ arụmọrụ. N'ihi na HBase na ndabara na-ekenye 40% nke ebe nchekwa na nhazi akpọrọ BlockCache. N'ụzọ bụ isi, nke a bụ ConcurrentHashMap, ebe igodo bụ aha faịlụ + mbelata nke ngọngọ, yana uru ya bụ data n'ezie na nkwụghachi a.

Ya mere, mgbe ị na-agụ naanị site na usoro a, anyị anyị na-ahụ ọmarịcha ọsọ, dị ka otu nde arịrịọ kwa sekọnd. Ma ka anyị were ya na anyị enweghị ike ịkenye narị gigabytes nke ebe nchekwa naanị maka mkpa nchekwa data, n'ihi na enwere ọtụtụ ihe ndị ọzọ bara uru na-agba ọsọ na sava ndị a.

Dịka ọmụmaatụ, n'ọnọdụ anyị, olu BlockCache na otu RS bụ ihe dịka 12 GB. Anyị rutere RS abụọ n'otu ọnụ, i.e. A na-ekenye 96 GB maka BlockCache na ọnụ ụzọ niile. Na enwere ọtụtụ data karịa, dịka ọmụmaatụ, ka ọ bụrụ tebụl 4, mpaghara 130 nke ọ bụla, nke faịlụ dị 800 MB n'ogo, nke FAST_DIFF gbakọtara, i.e. ngụkọta nke 410 GB (nke a bụ data dị ọcha, ya bụ, na-eburu n'uche ihe ngbanwe).

Ya mere, BlockCache bụ naanị ihe dịka 23% nke mkpokọta data na nke a dị nso na ezigbo ọnọdụ nke ihe a na-akpọ BigData. Ma nke a bụ ebe ihe ọchị na-amalite - n'ihi na o doro anya na obere cache na-akụda, na-akawanye njọ. E kwuwerị, ọ bụrụ na ị na-atụ uche, ị ga-arụ ọtụtụ ọrụ - i.e. gbadaa na-akpọ usoro ọrụ. Agbanyeghị, enweghị ike izere nke a, yabụ ka anyị leba anya n'akụkụ dị iche - gịnị na-eme data dị n'ime oghere ahụ?

Ka anyị mee ka ọnọdụ ahụ dị mfe ma chee na anyị nwere cache nke dabara naanị otu ihe. Nke a bụ ọmụmaatụ nke ihe ga-eme mgbe anyị nwara iji olu data rụọ ọrụ ugboro atọ karịa cache, anyị ga-emerịrị:

1. Tinye ngọngọ 1 na cache
2. Wepu ngọngọ 1 na cache
3. Tinye ngọngọ 2 na cache
4. Wepu ngọngọ 2 na cache
5. Tinye ngọngọ 3 na cache

Emechara omume 5! Agbanyeghị, enweghị ike ịkpọ ọnọdụ a nkịtị; n'ezie, anyị na-amanye HBase ka ọ rụọ ụyọkọ ọrụ na-abaghị uru. Ọ na-agụkarị data sitere na cache OS, tinye ya na BlockCache, naanị ịtụfu ya ozugbo n'ihi na akụkụ data ọhụrụ abịala. Ihe ngosi na mmalite nke post ahụ na-egosi isi ihe kpatara nsogbu ahụ - Onye na-anakọta ahịhịa na-apụ apụ, ikuku na-ekpo ọkụ, obere Greta dị anya na Sweden na-ekpo ọkụ na-ewe iwe. Ma anyị ndị IT adịghị amasị ya mgbe ụmụaka na-enwe mwute, ya mere anyị na-amalite iche echiche banyere ihe anyị nwere ike ime banyere ya.

Gịnị ma ọ bụrụ na ị na-etinye ọ bụghị ihe niile blocks na cache, ma ọ bụ naanị ụfọdụ pasent n'ime ha, nke mere na cache adịghị ejupụta? Ka anyị bido site na ịgbakwunye naanị ahịrị koodu ole na ole na mmalite nke ọrụ maka itinye data na BlockCache:

  public void cacheBlock(BlockCacheKey cacheKey, Cacheable buf, boolean inMemory) {
    if (cacheDataBlockPercent != 100 && buf.getBlockType().isData()) {
      if (cacheKey.getOffset() % 100 >= cacheDataBlockPercent) {
        return;
      }
    }
...

Isi ihe ebe a bụ ihe ndị a: nkwụsị bụ ọnọdụ nke ngọngọ na faịlụ ahụ na ọnụọgụ ikpeazụ ya na-enweghị usoro na nkesa site na 00 ruo 99. Ya mere, anyị ga-awụpụ naanị ndị dabara na nso anyị chọrọ.

Dịka ọmụmaatụ, tọọ cacheDataBlockPercent = 20 wee hụ ihe na-eme:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Nsonaazụ doro anya. Na eserese ndị dị n'okpuru ebe a, ọ bịara doo anya ihe kpatara mmụba dị otú ahụ - anyị na-echekwa ọtụtụ ihe onwunwe GC n'emeghị ọrụ Sisyphean nke itinye data na cache naanị iji tụba ya ozugbo na nsị nke nkịta Martian:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

N'otu oge ahụ, ojiji CPU na-abawanye, mana ọ dị obere karịa nrụpụta:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Ọ dịkwa mma ịmara na ngọngọ echekwara na BlockCache dị iche. Ọtụtụ, ihe dịka 95%, bụ data n'onwe ya. Ndị ọzọ bụ metadata, dị ka Bloom filter ma ọ bụ LEAF_INDEX na wdg.. Data a ezughị, mana ọ bara uru nke ukwuu, n'ihi na tupu ịnweta data ozugbo, HBase tụgharịrị na meta iji ghọta ma ọ dị mkpa ịchọ ebe a n'ihu ma, ọ bụrụ otú ahụ, ebe kpọmkwem ngọngọ nke mmasị dị.

Ya mere, na koodu anyị na-ahụ ọnọdụ nlele buf.getBlockType().isData() na ekele maka meta a, anyị ga-ahapụ ya na cache n'ọnọdụ ọ bụla.

Ugbu a, ka anyị mụbaa ibu ahụ ma mee ka njirimara ahụ dị ntakịrị n'otu oge. N'ime ule mbụ anyị mere pasentị cutoff = 20 na BlockCache adịchaghị etinyere ya. Ugbu a, ka anyị dobe ya na 23% ma tinye 100 eri kwa nkeji ise ọ bụla iji hụ ebe saturation na-eme:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

N'ebe a, anyị na-ahụ na mbụ mbipute fọrọ nke nta ozugbo akụ n'uko na banyere 100 puku arịrịọ kwa sekọnd. Ebe patch na-enye ihe osooso nke ruo 300 puku. N'otu oge ahụ, o doro anya na ọganihu ọzọ abụghịzi "n'efu"; ojiji CPU na-abawanye.

Otú ọ dị, nke a abụghị ihe ngwọta mara mma, ebe ọ bụ na anyị amaghị tupu oge pasent nke blocks kwesịrị ka echekwa ya, ọ dabere na profaịlụ ibu. Ya mere, etinyere usoro iji dozie oke a na-akpaghị aka dabere na ọrụ nke ịgụ akwụkwọ.

agbakwunyere nhọrọ atọ iji jikwaa nke a:

hbase.lru.cache.oke.eviction.count.limit - na-esetịpụ ugboro ole usoro ịchụpụ data na cache kwesịrị ịgba ọsọ tupu anyị amalite iji njikarịcha (ya bụ, ịwụpụ ngọngọ). Site na ndabara ọ hà MAX_INT = 2147483647 na n'ezie pụtara na njirimara agaghị amalite ịrụ ọrụ na uru a. N'ihi na usoro nchụpụ na-amalite ọ bụla 5 - 10 sekọnd (ọ dabere na ibu) na 2147483647 * 10/60/60/24/365 = 680 afọ. Agbanyeghị, anyị nwere ike ịtọ oke a ka ọ bụrụ 0 wee mee ka njirimara ahụ rụọ ọrụ ozugbo emechara ya.

Agbanyeghị, enwerekwa ụgwọ ọrụ na oke a. Ọ bụrụ na ibu anyị dị ka nke na-agụ oge dị mkpirikpi (na-ekwu n'ụbọchị) na ogologo oge na-agụ (n'abalị) na-ejikọta ya mgbe niile, mgbe ahụ, anyị nwere ike ijide n'aka na a na-agbanye njirimara ahụ naanị mgbe ogologo ọrụ na-agụ ogologo oge na-aga n'ihu.

Dịka ọmụmaatụ, anyị maara na ọgụgụ dị mkpirikpi na-adịkarị ihe dịka 1 nkeji. Ọ dịghị mkpa na-amalite na-atụba si blocks, cache agaghị enwe oge ịghọ ihe mgbe ochie na mgbe ahụ anyị nwere ike ịtọ a oke nhata, dịka ọmụmaatụ, 10. Nke a ga-eduga n'eziokwu na njikarịcha ga-amalite na-arụ ọrụ naanị mgbe ogologo- Okwu ịgụ ihe n'ọrụ amalitela, ya bụ. na 100 sekọnd. Ya mere, ọ bụrụ na anyị nwere ọgụgụ dị mkpirikpi, mgbe ahụ, ihe mgbochi niile ga-abanye na cache ma dị (ma e wezụga ndị a ga-achụpụ site na ọkọlọtọ algọridim). Ma mgbe anyị na-agụ ogologo oge, a na-agbanye atụmatụ ahụ ma anyị ga-enwe arụmọrụ dị elu.

hbase.lru.cache.oke.mpupu.mb.size.limit - na-esetịpụ megabytes ole anyị ga-achọ itinye na cache (na, n'ezie, ịchụpụ) na 10 sekọnd. Njirimara ga-anwa iru uru a ma debe ya. Isi ihe bụ nke a: ọ bụrụ na anyị atụba gigabytes n'ime cache, mgbe ahụ anyị ga-achụpụ gigabytes, na nke a, dị ka anyị hụrụ n'elu, dị oke ọnụ. Otú ọ dị, ị gaghị anwa ịtọ ya obere, n'ihi na nke a ga-eme ka ngọngọ skip mode pụọ n'oge. Maka sava dị ike (ihe dịka cores anụ ahụ 20-40), ọ kacha mma ịtọ ihe dịka 300-400 MB. Maka etiti etiti (~ 10 cores) 200-300 MB. Maka sistemụ adịghị ike (cores 2-5) 50-100 MB nwere ike ịbụ ihe nkịtị (anaghị anwale ya na ndị a).

Ka anyị leba anya ka nke a si arụ ọrụ: ka anyị kwuo na anyị setịpụrụ hbase.lru.cache.heavy.eviction.mb.size.limit = 500, enwere ụdị ibu (ịgụ ihe) na mgbe ọ bụla ~ 10 sekọnd anyị na-agbakọ ole bytes bụ. chụpụrụ ya site na iji usoro a:

N'elu = Nchikota Bytes efu (MB) * 100 / Oke (MB) - 100;

Ọ bụrụ na n'ezie 2000 MB chụpụrụ, mgbe ahụ Overhead hà nhata:

2000 * 100/500 - 100 = 300%

Algọridim na-agbalị idobe ihe na-erughị ole na ole iri nke pasent, yabụ njirimara ahụ ga-ebelata pasent nke blocks echekwara, si otú ahụ na-emejuputa usoro nhazi akpaaka.

Agbanyeghị, ọ bụrụ na ibu ahụ daa, ka anyị kwuo naanị 200 MB ka a na-achụpụ wee bụrụ ihe na-adịghị mma (nke a na-akpọ overshooting):

200 * 100/500 - 100 = -60%

N'ụzọ megidere nke ahụ, njirimara ahụ ga-abawanye pasentị nke ihe nchekwa echekwara ruo mgbe isi ga-adị mma.

N'okpuru ebe a bụ ihe atụ nke otú nke a si ele ezigbo data. Ọ dịghị mkpa ịgbalị iru 0%, ọ gaghị ekwe omume. Ọ dị ezigbo mma mgbe ọ dị ihe dị ka 30 - 100%, nke a na-enyere aka izere ọpụpụ akaghi aka site na ọnọdụ njikarịcha n'oge obere oge.

hbase.lru.cache.oke.eviction.overhead.coefficient - na-esetịpụ ngwa ngwa anyị ga-achọ inweta nsonaazụ. Ọ bụrụ na anyị maara n'ezie na anyị na-agụ na-akasị ogologo na-achọghị ichere, anyị nwere ike na-amụba nke a ruru ma nweta elu arụmọrụ ngwa ngwa.

Dịka ọmụmaatụ, anyị setịpụrụ ọnụọgụgụ a = 0.01. Nke a pụtara na a ga-amụba n'elu (lee n'elu) site na nọmba a site na nsonaazụ ya na pasentị nke ihe nchekwa echekwara ga-ebelata. Ka anyị were ya na Overhead = 300% na ọnụọgụ = 0.01, mgbe ahụ pasent nke ihe nchekwa echekwara ga-ebelata site na 3%.

A na-etinyekwa mgbagha “Backpressure” yiri ya maka ụkpụrụ na-adịghị mma n'ifefe (overshooting). Ebe ọ bụ na ngbanwe dị mkpirikpi na olu nke ịgụ na nchụpụ na-ekwe omume mgbe niile, usoro a na-enye gị ohere ịzenarị ọpụpụ n'oge na-adịghị anya site na ọnọdụ njikarịcha. Backpressure nwere mgbagha mgbagha: ka ọ na-esiwanye ike, ka a na-echekwa ọtụtụ ngọngọ.

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Koodu mmejuputa

        LruBlockCache cache = this.cache.get();
        if (cache == null) {
          break;
        }
        freedSumMb += cache.evict()/1024/1024;
        /*
        * Sometimes we are reading more data than can fit into BlockCache
        * and it is the cause a high rate of evictions.
        * This in turn leads to heavy Garbage Collector works.
        * So a lot of blocks put into BlockCache but never read,
        * but spending a lot of CPU resources.
        * Here we will analyze how many bytes were freed and decide
        * decide whether the time has come to reduce amount of caching blocks.
        * It help avoid put too many blocks into BlockCache
        * when evict() works very active and save CPU for other jobs.
        * More delails: https://issues.apache.org/jira/browse/HBASE-23887
        */

        // First of all we have to control how much time
        // has passed since previuos evict() was launched
        // This is should be almost the same time (+/- 10s)
        // because we get comparable volumes of freed bytes each time.
        // 10s because this is default period to run evict() (see above this.wait)
        long stopTime = System.currentTimeMillis();
        if ((stopTime - startTime) > 1000 * 10 - 1) {
          // Here we have to calc what situation we have got.
          // We have the limit "hbase.lru.cache.heavy.eviction.bytes.size.limit"
          // and can calculte overhead on it.
          // We will use this information to decide,
          // how to change percent of caching blocks.
          freedDataOverheadPercent =
            (int) (freedSumMb * 100 / cache.heavyEvictionMbSizeLimit) - 100;
          if (freedSumMb > cache.heavyEvictionMbSizeLimit) {
            // Now we are in the situation when we are above the limit
            // But maybe we are going to ignore it because it will end quite soon
            heavyEvictionCount++;
            if (heavyEvictionCount > cache.heavyEvictionCountLimit) {
              // It is going for a long time and we have to reduce of caching
              // blocks now. So we calculate here how many blocks we want to skip.
              // It depends on:
             // 1. Overhead - if overhead is big we could more aggressive
              // reducing amount of caching blocks.
              // 2. How fast we want to get the result. If we know that our
              // heavy reading for a long time, we don't want to wait and can
              // increase the coefficient and get good performance quite soon.
              // But if we don't sure we can do it slowly and it could prevent
              // premature exit from this mode. So, when the coefficient is
              // higher we can get better performance when heavy reading is stable.
              // But when reading is changing we can adjust to it and set
              // the coefficient to lower value.
              int change =
                (int) (freedDataOverheadPercent * cache.heavyEvictionOverheadCoefficient);
              // But practice shows that 15% of reducing is quite enough.
              // We are not greedy (it could lead to premature exit).
              change = Math.min(15, change);
              change = Math.max(0, change); // I think it will never happen but check for sure
              // So this is the key point, here we are reducing % of caching blocks
              cache.cacheDataBlockPercent -= change;
              // If we go down too deep we have to stop here, 1% any way should be.
              cache.cacheDataBlockPercent = Math.max(1, cache.cacheDataBlockPercent);
            }
          } else {
            // Well, we have got overshooting.
            // Mayby it is just short-term fluctuation and we can stay in this mode.
            // It help avoid permature exit during short-term fluctuation.
            // If overshooting less than 90%, we will try to increase the percent of
            // caching blocks and hope it is enough.
            if (freedSumMb >= cache.heavyEvictionMbSizeLimit * 0.1) {
              // Simple logic: more overshooting - more caching blocks (backpressure)
              int change = (int) (-freedDataOverheadPercent * 0.1 + 1);
              cache.cacheDataBlockPercent += change;
              // But it can't be more then 100%, so check it.
              cache.cacheDataBlockPercent = Math.min(100, cache.cacheDataBlockPercent);
            } else {
              // Looks like heavy reading is over.
              // Just exit form this mode.
              heavyEvictionCount = 0;
              cache.cacheDataBlockPercent = 100;
            }
          }
          LOG.info("BlockCache evicted (MB): {}, overhead (%): {}, " +
            "heavy eviction counter: {}, " +
            "current caching DataBlock (%): {}",
            freedSumMb, freedDataOverheadPercent,
            heavyEvictionCount, cache.cacheDataBlockPercent);

          freedSumMb = 0;
          startTime = stopTime;
       }

Ka anyị lee ihe a niile anya site n'iji ezigbo ọmụmaatụ. Anyị nwere edemede ule a:

  1. Ka anyị malite ime nyocha (eriri 25, batch = 100)
  2. Mgbe nkeji 5 gachara, tinye multi-nweta (eriri 25, batch = 100)
  3. Mgbe nkeji 5 gachara, gbanyụọ multi-nweta (naanị nyocha ka fọdụrụ ọzọ)

Anyị na-eme ọsọ abụọ, nke mbụ hbase.lru.cache.heavy.eviction.count.limit = 10000 (nke na-egbochi njirimara ahụ n'ezie), wee debe njedebe = 0 (na-enyere ya aka).

N'ime ndekọ dị n'okpuru, anyị na-ahụ ka agbanyere njirimara ahụ wee malitegharịa Overshooting na 14-71%. Site n'oge ruo n'oge ibu na-ebelata, nke na-agbanye Backpressure na HBase na-echekwa ọtụtụ ngọngọ ọzọ.

Banye RegionServer
chụpụrụ (MB): 0, oke 0.0, n'elu (%): -100, ihe nchụpụ dị arọ: 0, DataBlock na-echekwa ugbu a (%): 100
chụpụrụ (MB): 0, oke 0.0, n'elu (%): -100, ihe nchụpụ dị arọ: 0, DataBlock na-echekwa ugbu a (%): 100
chụpụrụ (MB): 2170, ruru 1.09, n'elu (%): 985, ihe nchụpụ dị arọ: 1, DataBlock na-echekwa ugbu a (%): 91 <bido
chụpụrụ (MB): 3763, ruru 1.08, n'elu (%): 1781, ihe nchụpụ dị arọ: 2, DataBlock na-echekwa ugbu a (%): 76
chụpụrụ (MB): 3306, ruru 1.07, n'elu (%): 1553, ihe nchụpụ dị arọ: 3, DataBlock na-echekwa ugbu a (%): 61
chụpụrụ (MB): 2508, ruru 1.06, n'elu (%): 1154, ihe nchụpụ dị arọ: 4, DataBlock na-echekwa ugbu a (%): 50
chụpụrụ (MB): 1824, ruru 1.04, n'elu (%): 812, ihe nchụpụ dị arọ: 5, DataBlock na-echekwa ugbu a (%): 42
chụpụrụ (MB): 1482, ruru 1.03, n'elu (%): 641, ihe nchụpụ dị arọ: 6, DataBlock na-echekwa ugbu a (%): 36
chụpụrụ (MB): 1140, ruru 1.01, n'elu (%): 470, ihe nchụpụ dị arọ: 7, DataBlock na-echekwa ugbu a (%): 32
chụpụrụ (MB): 913, ruru 1.0, n'elu (%): 356, ihe nchụpụ dị arọ: 8, DataBlock na-echekwa ugbu a (%): 29
chụpụrụ (MB): 912, ruru 0.89, n'elu (%): 356, ihe nchụpụ dị arọ: 9, DataBlock na-echekwa ugbu a (%): 26
chụpụrụ (MB): 684, ruru 0.76, n'elu (%): 242, ihe nchụpụ dị arọ: 10, DataBlock na-echekwa ugbu a (%): 24
chụpụrụ (MB): 684, ruru 0.61, n'elu (%): 242, ihe nchụpụ dị arọ: 11, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 456, ruru 0.51, n'elu (%): 128, ihe nchụpụ dị arọ: 12, DataBlock na-echekwa ugbu a (%): 21
chụpụrụ (MB): 456, ruru 0.42, n'elu (%): 128, ihe nchụpụ dị arọ: 13, DataBlock na-echekwa ugbu a (%): 20
chụpụrụ (MB): 456, ruru 0.33, n'elu (%): 128, ihe nchụpụ dị arọ: 14, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 15, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 342, ruru 0.32, n'elu (%): 71, ihe nchụpụ dị arọ: 16, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 342, ruru 0.31, n'elu (%): 71, ihe nchụpụ dị arọ: 17, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.3, n'elu (%): 14, ihe nchụpụ dị arọ: 18, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.29, n'elu (%): 14, ihe nchụpụ dị arọ: 19, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.27, n'elu (%): 14, ihe nchụpụ dị arọ: 20, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.25, n'elu (%): 14, ihe nchụpụ dị arọ: 21, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.24, n'elu (%): 14, ihe nchụpụ dị arọ: 22, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.22, n'elu (%): 14, ihe nchụpụ dị arọ: 23, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.21, n'elu (%): 14, ihe nchụpụ dị arọ: 24, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.2, n'elu (%): 14, ihe nchụpụ dị arọ: 25, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 228, ruru 0.17, n'elu (%): 14, ihe nchụpụ dị arọ: 26, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 456, ratio 0.17, n'elu (%): 128, nnukwu nchụpụ: 27, DataBlock na-echekwa ugbu a (%): 18 <agbakwunyere na-enweta (ma tebụl otu)
chụpụrụ (MB): 456, ruru 0.15, n'elu (%): 128, ihe nchụpụ dị arọ: 28, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 342, ruru 0.13, n'elu (%): 71, ihe nchụpụ dị arọ: 29, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 342, ruru 0.11, n'elu (%): 71, ihe nchụpụ dị arọ: 30, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 342, ruru 0.09, n'elu (%): 71, ihe nchụpụ dị arọ: 31, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 228, ruru 0.08, n'elu (%): 14, ihe nchụpụ dị arọ: 32, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 228, ruru 0.07, n'elu (%): 14, ihe nchụpụ dị arọ: 33, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 228, ruru 0.06, n'elu (%): 14, ihe nchụpụ dị arọ: 34, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 228, ruru 0.05, n'elu (%): 14, ihe nchụpụ dị arọ: 35, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 228, ruru 0.05, n'elu (%): 14, ihe nchụpụ dị arọ: 36, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 228, ruru 0.04, n'elu (%): 14, ihe nchụpụ dị arọ: 37, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 109, nha 0.04, n'elu (%): -46, ihe nchụpụ dị arọ: 37, DataBlock na-echekwa ugbu a (%): 22 <nrụgide azụ
chụpụrụ (MB): 798, ruru 0.24, n'elu (%): 299, ihe nchụpụ dị arọ: 38, DataBlock na-echekwa ugbu a (%): 20
chụpụrụ (MB): 798, ruru 0.29, n'elu (%): 299, ihe nchụpụ dị arọ: 39, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 570, ruru 0.27, n'elu (%): 185, ihe nchụpụ dị arọ: 40, DataBlock na-echekwa ugbu a (%): 17
chụpụrụ (MB): 456, ruru 0.22, n'elu (%): 128, ihe nchụpụ dị arọ: 41, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 342, ruru 0.16, n'elu (%): 71, ihe nchụpụ dị arọ: 42, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 342, ruru 0.11, n'elu (%): 71, ihe nchụpụ dị arọ: 43, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 228, ruru 0.09, n'elu (%): 14, ihe nchụpụ dị arọ: 44, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 228, ruru 0.07, n'elu (%): 14, ihe nchụpụ dị arọ: 45, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 228, ruru 0.05, n'elu (%): 14, ihe nchụpụ dị arọ: 46, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 222, ruru 0.04, n'elu (%): 11, ihe nchụpụ dị arọ: 47, DataBlock na-echekwa ugbu a (%): 16
chụpụrụ (MB): 104, ratio 0.03, n'elu (%): -48, nnukwu nchụpụ: 47, DataBlock na-echekwa ugbu a (%): 21 < nkwụsịtụ na-enweta
chụpụrụ (MB): 684, ruru 0.2, n'elu (%): 242, ihe nchụpụ dị arọ: 48, DataBlock na-echekwa ugbu a (%): 19
chụpụrụ (MB): 570, ruru 0.23, n'elu (%): 185, ihe nchụpụ dị arọ: 49, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 342, ruru 0.22, n'elu (%): 71, ihe nchụpụ dị arọ: 50, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 228, ruru 0.21, n'elu (%): 14, ihe nchụpụ dị arọ: 51, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 228, ruru 0.2, n'elu (%): 14, ihe nchụpụ dị arọ: 52, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 228, ruru 0.18, n'elu (%): 14, ihe nchụpụ dị arọ: 53, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 228, ruru 0.16, n'elu (%): 14, ihe nchụpụ dị arọ: 54, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 228, ruru 0.14, n'elu (%): 14, ihe nchụpụ dị arọ: 55, DataBlock na-echekwa ugbu a (%): 18
chụpụrụ (MB): 112, nha 0.14, n'elu (%): -44, ihe nchụpụ dị arọ: 55, DataBlock na-echekwa ugbu a (%): 23 <nrụgide azụ
chụpụrụ (MB): 456, ruru 0.26, n'elu (%): 128, ihe nchụpụ dị arọ: 56, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.31, n'elu (%): 71, ihe nchụpụ dị arọ: 57, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 58, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 59, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 60, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 61, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 62, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 63, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.32, n'elu (%): 71, ihe nchụpụ dị arọ: 64, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 65, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 66, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.32, n'elu (%): 71, ihe nchụpụ dị arọ: 67, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 68, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.32, n'elu (%): 71, ihe nchụpụ dị arọ: 69, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.32, n'elu (%): 71, ihe nchụpụ dị arọ: 70, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 71, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 72, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 73, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 74, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 75, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 342, ruru 0.33, n'elu (%): 71, ihe nchụpụ dị arọ: 76, DataBlock na-echekwa ugbu a (%): 22
chụpụrụ (MB): 21, oke 0.33, n'elu (%): -90, ihe nchụpụ dị arọ: 76, DataBlock na-echekwa ugbu a (%): 32
chụpụrụ (MB): 0, oke 0.0, n'elu (%): -100, ihe nchụpụ dị arọ: 0, DataBlock na-echekwa ugbu a (%): 100
chụpụrụ (MB): 0, oke 0.0, n'elu (%): -100, ihe nchụpụ dị arọ: 0, DataBlock na-echekwa ugbu a (%): 100

Achọrọ nyocha ahụ iji gosipụta otu usoro ahụ n'ụdị eserese nke mmekọrịta dị n'etiti ngalaba cache abụọ - otu (ebe a na-arịọbughị ihe mgbochi mbụ) na ọtụtụ (data “arịọrọ” ọbụlagodi otu oge echekwara ebe a):

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Na n'ikpeazụ, gịnị ka ọrụ nke paramita ahụ dị ka n'ụdị eserese. Maka ntụnyere, agbanyụrụ cache ahụ kpamkpam na mbido, wee malite HBase na caching ma na-egbu oge mmalite nke njikarịcha ọrụ site na nkeji 5 (usoro nchụpụ 30).

Enwere ike ịchọta koodu zuru ezu na arịrịọ Pull HBASE 23887 na github.

Otú ọ dị, 300 puku na-agụ kwa sekọnd abụghị ihe niile a ga-enweta na ngwaike a n'okpuru ọnọdụ ndị a. Nke bụ eziokwu bụ na mgbe ịchọrọ ịnweta data site na HDFS, a na-eji usoro ShortCircuitCache (nke a na-akpọ SSC), nke na-enye gị ohere ịnweta data ozugbo, na-ezere mmekọrịta netwọkụ.

Profiling gosipụtara na ọ bụ ezie na usoro a na-enye nnukwu uru, ọ na-abụkwa ihe n'oge ụfọdụ, n'ihi na ihe fọrọ nke nta ka ọ bụrụ ọrụ niile dị arọ na-eme n'ime mkpọchi, nke na-eduga na igbochi ọtụtụ oge.

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Mgbe anyị ghọtara nke a, anyị chọpụtara na enwere ike ịgbanahụ nsogbu ahụ site n'ịmepụta ọtụtụ SSC nwere onwe:

private final ShortCircuitCache[] shortCircuitCache;
...
shortCircuitCache = new ShortCircuitCache[this.clientShortCircuitNum];
for (int i = 0; i < this.clientShortCircuitNum; i++)
  this.shortCircuitCache[i] = new ShortCircuitCache(…);

Ma soro ha rụkọọ ọrụ, ewezuga njikọ n'etiti ọnụọgụ ikpeazụ:

public ShortCircuitCache getShortCircuitCache(long idx) {
    return shortCircuitCache[(int) (idx % clientShortCircuitNum)];
}

Ugbu a ị nwere ike ịmalite ịnwale. Iji mee nke a, anyị ga-agụ faịlụ sitere na HDFS na ngwa dị mfe multi-threaded. Tọọ paramita ndị a:

conf.set("dfs.client.read.shortcircuit", "true");
conf.set("dfs.client.read.shortcircuit.buffer.size", "65536"); // по дефолту = 1 МБ и это сильно замедляет чтение, поэтому лучше привести в соответствие к реальным нуждам
conf.set("dfs.client.short.circuit.num", num); // от 1 до 10

Naanị gụọ faịlụ ndị a:

FSDataInputStream in = fileSystem.open(path);
for (int i = 0; i < count; i++) {
    position += 65536;
    if (position > 900000000)
        position = 0L;
    int res = in.read(position, byteBuffer, 0, 65536);
}

A na-eme koodu a na eriri dị iche iche na anyị ga-abawanye ọnụ ọgụgụ nke faịlụ na-agụ n'otu oge (site na 10 ruo 200 - axis kwụ ọtọ) na ọnụ ọgụgụ nke cache (site na 1 ruo 10 - ndịna-emeputa). Oghere kwụ ọtọ na-egosi osooso sitere na mmụba na SSC gbasara ikpe ahụ mgbe enwere naanị otu cache.

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Otu esi agụ eserese ahụ: Oge ogbugbu maka 100 puku na-agụ na 64 KB blocks nwere otu cache chọrọ 78 sekọnd. Ebe na 5 caches ọ na-ewe 16 sekọnd. Ndị ahụ. enwere osooso ~5 ugboro. Dị ka a na-ahụ site na eserese ahụ, mmetụta ahụ anaghị achọpụta nke ọma maka ọnụ ọgụgụ dị nta nke agụkọrọ ọnụ; ọ na-amalite ịrụ ọrụ pụtara ìhè mgbe enwere ihe karịrị eri 50. Ọ na-achọpụtakwa na ịbawanye ọnụ ọgụgụ SSC site na 6. na n'elu na-enye a budata obere arụmọrụ abawanye.

Rịba ama 1: ebe ọ bụ na nsonaazụ ule ahụ na-agbanwe agbanwe (lee n'okpuru), a na-agba ọsọ 3 ma gbakọọ ụkpụrụ ndị si na ya pụta.

Rịba ama 2: Uru arụmọrụ site na ịhazi ohere ịnweta ohere bụ otu ihe ahụ, ọ bụ ezie na ohere ahụ n'onwe ya dị ntakịrị nwayọọ.

Agbanyeghị, ọ dị mkpa ịkọwapụta na, n'adịghị ka ikpe HBase, ngwangwa a anaghị akwụ ụgwọ mgbe niile. N'ebe a, anyị 'meghee' ikike CPU ịrụ ọrụ karịa, kama ịdogide na mkpọchi.

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

N'ebe a, ị nwere ike ịhụ na, n'ozuzu, mmụba nke ọnụ ọgụgụ nke cache na-enye mmụba dị ka nha nha na ojiji CPU. Agbanyeghị, enwere nchikota na-emeri ntakịrị.

Dịka ọmụmaatụ, ka anyị lebakwuo anya na ntọala SSC = 3. Mmụba na arụmọrụ na nso bụ ihe dị ka ugboro 3.3. N'okpuru bụ nsonaazụ sitere na ọsọ atọ dị iche iche.

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Ebe oriri CPU na-abawanye ihe dịka ugboro 2.8. Ọdịiche ahụ adịchaghị nnukwu, mana obere Greta enweelarị obi ụtọ ma nwee ike ịnwe oge ịga ụlọ akwụkwọ wee mụọ nkuzi.

Ya mere, nke a ga-enwe mmetụta dị mma maka ngwá ọrụ ọ bụla na-eji nnukwu ohere na HDFS (dịka ọmụmaatụ Spark, wdg), ma ọ bụrụhaala na koodu ngwa ahụ dị arọ (ya bụ plọg dị n'akụkụ ndị ahịa HDFS) na enwere ike CPU n'efu. . Iji lelee, ka anyị nwalee mmetụta jikọtara ojiji nke njikarịcha BlockCache na nlegharị anya SSC maka ịgụ ihe sitere na HBase ga-enwe.

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Enwere ike ịhụ na n'okpuru ọnọdụ ndị dị otú ahụ mmetụta adịghị oke dị ka n'ime ule a nụchara anụcha (ịgụ na-enweghị nhazi ọ bụla), ma ọ ga-ekwe omume iwepụ 80K ọzọ ebe a. Ọnụ, njikarịcha abụọ ahụ na-enye ọsọ ọsọ 4x.

Emekwara PR maka nkwalite a [HDFS-15202], nke ejikọtala na ọrụ a ga-adị na mwepụta n'ọdịnihu.

Na n'ikpeazụ, ọ bụ ihe na-adọrọ mmasị iji tụnyere arụmọrụ ọgụgụ nke nchekwa data obosara nke kọlụm, Cassandra na HBase.

Iji mee nke a, anyị weputara ihe atụ nke ọkọlọtọ YCSB ule nnwale sitere na ndị ọbịa abụọ (eriri 800 na mkpokọta). N'akụkụ ihe nkesa - 4 ihe atụ nke RegionServer na Cassandra na ndị ọbịa 4 (ọ bụghị ndị ahịa na-agba ọsọ, iji zere mmetụta ha). Ọgụgụ si na tebụl nha:

HBase - 300 GB na HDFS (100 GB data dị ọcha)

Cassandra - 250 GB (ihe ngbanwe = 3)

Ndị ahụ. olu ahụ dị ihe dịka otu (na HBase ntakịrị karịa).

Ụdị HBase:

dfs.client.short.circuit.num = 5 (HDFS nkwalite ndị ahịa)

hbase.lru.cache.heavy.eviction.count.limit = 30 - nke a pụtara na patch ga-amalite ịrụ ọrụ mgbe 30 nchụpụ (~ nkeji 5)

hbase.lru.cache.heavy.eviction.mb.size.limit = 300 - oke ebumnuche nke caching na nchụpụ

E tụgharịrị akwụkwọ ndekọ YCSB wee chịkọta ya na eserese Excel:

Otu esi abawanye ọsọ ọgụgụ site na HBase ruo ugboro 3 yana site na HDFS ruo ugboro ise

Dị ka ị pụrụ ịhụ, njikarịcha ndị a na-eme ka o kwe omume iji tụnyere arụmọrụ nke ọdụ data ndị a n'okpuru ọnọdụ ndị a ma nweta 450 puku na-agụ kwa nkeji.

Anyị na-atụ anya na ozi a nwere ike ịbara mmadụ uru n'oge mgba na-akpali akpali maka nrụpụta.

isi: www.habr.com

Tinye a comment