Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Ko te mahi teitei tetahi o nga whakaritenga matua i te wa e mahi ana me nga raraunga nui. I roto i te tari uta raraunga i Sberbank, ka panaia e matou tata nga whakawhitinga katoa ki roto i a maatau Kapua Raraunga-Hadoop, na reira ka whakahaere i nga rerenga korero tino nui. Ko te tikanga, kei te rapu tonu matou i nga huarahi hei whakapai ake i nga mahi, a inaianei e hiahia ana matou ki te korero ki a koe me pehea ta matou whakahaere ki te papaki i te RegionServer HBase me te kiritaki HDFS, na te mea i taea e matou te whakanui ake i te tere o nga mahi panui.
Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Heoi, i mua i te neke atu ki te kaupapa o nga whakapainga, he pai ki te korero mo nga here, i runga i te kaupapa, kaore e taea te karo ki te noho koe i runga i te HDD.

He aha i hotokore ai te HDD me nga panui Random Access tere
Kei te mohio koe, HBase, me te maha atu o nga papaa raraunga, penapena raraunga ki roto i nga poraka o te tini tekau kiropaita te rahi. Ma te taunoa he 64 KB. Inaianei me whakaaro tatou me 100 noa nga paita ka tono ki a HBase kia homai enei raraunga ma te whakamahi i tetahi taviri. I te mea ko te rahi poraka i HFiles he 64 KB, ka 640 nga wa nui ake te tono (he meneti noa!)

I muri mai, na te mea ka haere te tono ma te HDFS me tana tikanga keteroki metadata ShortCircuitCache (e taea ai te uru tika ki nga konae), ka panuitia te 1 MB mai i te kōpae. Heoi, ka taea te whakatika tenei ki te tawhā dfs.client.read.shortcircuit.buffer.size a i roto i te maha o nga take he mea tika ki te whakaiti i tenei uara, hei tauira ki te 126 KB.

Me kii tatou ka mahi tenei, engari i tua atu, ka timata taatau ki te panui i nga raraunga ma te java api, penei i nga mahi penei i te FileChannel.panui me te tono ki te punaha whakahaere ki te panui i te nui o nga raraunga kua tohua, ka panui "i te keehi" 2 nga wa atu , i.e. 256 KB kei roto i a maatau. Na te mea karekau he huarahi ngawari a java ki te tautuhi i te haki FADV_RANDOM hei aukati i tenei whanonga.

Ko te mutunga, ki te whiwhi i a tatou 100 paita, 2600 nga wa ka panuihia i raro i te kaapapa. Te ahua nei kua kitea te otinga, me whakaitihia te rahi o te poraka ki te kiropaita, ka whakanoho i te haki kua whakahuahia kia tere te whakamarama. Engari ko te raruraru ko te whakaiti i te rahi o te poraka kia 2 nga wa, ka whakaitihia ano te maha o nga paita panui mo ia waeine wa ma te 2 wa.

Ko etahi ka whiwhi mai i te whakatakoto i te haki FADV_RANDOM, engari ma te miro-maha teitei me te rahi o te poraka 128 KB, engari ko te nui rawa tenei o te rua tekau paiheneti:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

I mahia nga whakamatautau i runga i nga konae 100, ia 1 GB te rahi me te 10 HDD.

Me tatau tatou i nga mea ka taea e tatou, i runga i te kaupapa, te tatau i tenei tere:
Me kii tatou ka panui mai i nga kopae 10 i te tere o te 280 MB/hekona, i.e. 3 miriona wa 100 paita. Engari e mahara ana matou, ko nga raraunga e hiahiatia ana e matou he 2600 nga wa iti ake i nga mea e panuitia ana. No reira, ka wehewehea te 3 miriona ki te 2600 ka whiwhi 1100 rekoata mo ia hekona.

He pouri, ehara? Ko te natura Whakauru Tuturu uru ki nga raraunga i runga i te HDD - ahakoa te rahi o te poraka. Koinei te rohe o te urunga matapōkere, ā, karekau he pātengi raraunga ka taea te kohi atu i raro i ngā āhuatanga pēnei.

Na me pehea e taea ai e nga papaunga raraunga nga tere teitei ake? Hei whakautu i tenei patai, me titiro tatou ki nga mea kei te pikitia e whai ake nei:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

I konei ka kite tatou mo nga meneti tuatahi ko te tere he tata ki te mano rekoata mo ia hekona. Heoi ano, na te mea he nui ake te panui i te mea i tonohia, ka mutu nga raraunga ki roto i te buff/cache o te punaha whakahaere (linux) ka piki ake te tere ki te 60 mano mo ia hēkona.

No reira, ka mahi ano tatou ki te whakatere urunga anake ki nga raraunga kei roto i te keteroki OS kei roto ranei i nga taputapu rokiroki SSD/NVMe e rite ana te tere uru.

I roto i ta maatau keehi, ka whakahaerehia e matou nga whakamatautau i runga i te papa o nga kaitoro e 4, ko ia te utu e whai ake nei:

PTM: Xeon E5-2680 v4 @ 2.40GHz 64 miro.
Mahara: 730 GB.
putanga java: 1.8.0_111

Na konei ko te kaupapa matua ko te nui o nga raraunga kei roto i nga ripanga me panui. Ko te meka mena ka panui koe i nga raraunga mai i te tepu kua oti katoa te whakanoho ki roto i te keteroki HBase, karekau e tae mai ki te panui mai i te buff/cache o te punaha whakahaere. Na te mea ka tohatohahia e HBase te 40% o te mahara ki tetahi hanganga e kiia nei ko BlockCache. Ko te tikanga he ConcurrentHashMap tenei, ko te mea matua ko te ingoa konae + whakawhiwhinga o te poraka, a ko te uara ko nga raraunga tuuturu i tenei waahanga.

Na, ka panui noa mai i tenei hanganga, ko taatau kite tatou i tere pai, penei i te miriona tono mo ia hekona. Engari me whakaaro e kore e taea e tatou te toha i nga rau gigabytes o te mahara mo nga hiahia putunga korero, na te mea he maha atu nga mea whai hua kei runga i enei tuunga.

Hei tauira, i roto i to maatau, ko te rahi o te BlockCache i runga i tetahi RS ko te 12 GB. E rua nga RS i tau ki runga i tetahi node, i.e. 96 GB kua tohaina mo BlockCache i runga i nga pona katoa. A he maha nga wa ka nui ake nga raraunga, hei tauira, kia 4 nga ripanga, 130 nga rohe o ia rohe, he 800 MB te rahi o nga konae, ka kopakihia e FAST_DIFF, ara. he 410 GB katoa (he raraunga parakore tenei, ara me te kore e whai whakaaro ki te take tukurua).

No reira, ko te BlockCache he 23% noa iho o te katoa o te rahinga raraunga, a he tino tata tenei ki nga ahuatanga o te mea e kiia nei ko BigData. I konei ka timata te ngahau - na te mea he iti ake te keteroki e pa ana, he kino te mahi. I muri i nga mea katoa, ki te ngaro koe, ka nui te mahi - i.e. haere ki raro ki te karanga i nga mahi punaha. Heoi, kare e taea te karo, no reira me titiro ki tetahi ahuatanga rereke - ka ahatia nga raraunga kei roto i te keteroki?

Kia whakangwarihia te ahuatanga me te whakaaro he keteroki to taatau e uru ana ki te 1 noa iho. Anei tetahi tauira o nga mea ka puta ina ngana ana tatou ki te mahi me te rōrahi raraunga 3 nga wa nui ake i te keteroki, me:

1. Whakanohoia te poraka 1 ki te keteroki
2. Tango poraka 1 i te keteroki
3. Whakanohoia te poraka 2 ki te keteroki
4. Tango poraka 2 i te keteroki
5. Whakanohoia te poraka 3 ki te keteroki

5 nga mahi kua oti! Heoi, kaore tenei ahuatanga e kiia he noa; inaa, kei te akiakihia e matou a HBase ki te mahi i nga mahi tino koretake. Ka panuihia e ia nga raraunga mai i te keteroki OS, ka tuu ki te BlockCache, ka peia tata tonu na te mea kua tae mai he waahanga hou o nga raraunga. Ko te hākoritanga i te timatanga o te panui e whakaatu ana i te ngako o te raru - Kei te heke te Kaikohi Para, kei te wera te hau, kei te riri a Greta iti i Sweden tawhiti me te wera. A ko matou nga tangata IT kaore e tino pai ki te wa e pouri ana nga tamariki, no reira ka timata matou ki te whakaaro me pehea e taea ai e matou.

He aha mena kaore koe e whakauru i nga poraka katoa ki roto i te keteroki, engari he paheketanga noa iho o aua poraka, kia kore ai e puhake te keteroki? Me timata ma te taapiri noa i etahi rarangi waehere ki te timatanga o te mahi mo te whakauru raraunga ki BlockCache:

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

Ko te tohu i konei ko nga mea e whai ake nei: ko te offset te tuunga o te poraka i roto i te konae me ona mati whakamutunga ka tohatoha matapōkeretia me te taurite mai i te 00 ki te 99. No reira, ka kapea noa e matou te hunga ka taka ki te awhe e hiahiatia ana.

Hei tauira, tautuhia cacheDataBlockPercent = 20 ka kite ka ahatia:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Kua kitea te hua. I roto i nga kauwhata i raro nei, ka marama te take i penei ai te tere - he maha nga rauemi GC e penapena ana me te kore e mahi i nga mahi Sisyphean ki te whakatakoto raraunga ki roto i te keteroki katahi ka maka atu ki raro i te awa o nga kuri Martian:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

I te wa ano, ka piki ake te whakamahi CPU, engari he iti ake i te hua:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

He mea tika ano kia mohio he rereke nga poraka e rongoa ana i roto i te BlockCache. Ko te nuinga, mo te 95%, he raraunga ano. Ko te toenga he metadata, penei i nga tātari Bloom, LEAF_INDEX me etc.. Ko enei raraunga kaore i te nui, engari he mea tino whai hua, na te mea i mua i te uru tika ki nga raraunga, ka huri a HBase ki te meta kia mohio ai he mea tika ki te rapu atu i konei, a, ki te penei, kei hea te waahi o te poraka o te paanga.

Na reira, i roto i te waehere ka kite tatou i te ahua haki buf.getBlockType().isData() me te mihi ki tenei meta, ka waiho e matou i roto i te keteroki ahakoa he aha.

Inaianei me whakanui ake te kawenga me te whakatiki i te waahanga i te waa kotahi. I te whakamatautau tuatahi i mahia e matou te paheketanga tapahi = 20 me te BlockCache he iti te whakamahi. Inaianei me tautuhi ki te 23% ka taapirihia nga miro 100 ia 5 meneti kia kite he aha te waahi ka puta:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

I konei ka kite tatou ko te putanga taketake tata tonu ka pa ki te tuanui mo te 100 mano tono mo ia hekona. I te mea ka tukuna e te papaki te tere ki te 300 mano. I te wa ano, ka maarama kua kore e "kore utu" te tere tere; kei te piki haere te whakamahi CPU.

Heoi, ehara tenei i te otinga tino huatau, na te mea kaore matou i te mohio i mua he aha te paheketanga o nga poraka e tika ana kia keteroki, kei runga i te kotaha kawenga. Na reira, i whakatinanahia he tikanga hei whakatika aunoa i tenei tawhā i runga i te mahi o nga mahi panui.

E toru nga whiringa kua taapirihia hei whakahaere i tenei:

hbase.lru.cache.heavy.eviction.count.limit — ka whakatauhia te maha o nga wa e tika ana kia whakahaerea te tukanga o te pana raraunga mai i te keteroki i mua i te tiimata ki te whakamahi i te arotautanga (ara te peke poraka). Ma te taunoa he rite ki te MAX_INT = 2147483647 me te tikanga ka kore te ahuatanga e timata te mahi me tenei uara. Na te mea ka timata te tukanga pananga ia 5 - 10 hēkona (kei runga i te kawenga) me te 2147483647 * 10 / 60 / 60 / 24 / 365 = 680 tau. Heoi, ka taea e taatau te tautuhi i tenei tawhā ki te 0 ka mahi tonu te ahuatanga i muri tonu i te whakarewatanga.

Heoi ano, he utu ano kei tenei tawhā. Mena ko ta maatau utaina he mea ka noho tonu te panui mo te wa poto (me kii i te awatea) me te panui mo te wa roa (i te po), katahi ka taea e tatou te mohio kei te huri noa te waahanga i te wa e haere ana nga mahi panui roa.

Hei tauira, e mohio ana matou he 1 meneti te roa o nga panui poto. Kaore he take ki te timata ki te maka i nga poraka, ka kore e whai wa te keteroki ki te noho tawhito, katahi ka taea e tatou te whakarite i tenei tawhā rite ki, hei tauira, 10. Ma tenei ka arahi ki te meka ka timata te mahi arotautanga i te wa roa- kua timata te kupu panui kaha, i.e. i roto i te 100 hēkona. No reira, mena he panui mo te wa poto, ka uru nga poraka katoa ki roto i te keteroki ka waatea (haunga nga mea ka peia e te algorithm paerewa). A, ka mahia e matou nga panui mo te wa roa, ka huri te ahuatanga ka nui ake te mahi.

hbase.lru.cache.heavy.eviction.mb.size.limit — ka tautuhi e hia nga megabytes e hiahia ana matou ki te tuu ki roto i te keteroki (me te tikanga, panaia) i roto i te 10 hēkona. Ka ngana te ahuatanga ki te eke ki tenei uara me te pupuri tonu. Ko te kaupapa tenei: ki te kuia e tatou nga gigabytes ki roto i te keteroki, katahi ka peia e tatou nga gigabytes, a he tino utu tenei, pera i ta tatou i kite i runga ake nei. Heoi, kaua e ngana ki te whakarite kia iti rawa, na te mea ka puta wawe te aratau peke poraka. Mo nga kaitoro kaha (mo te 20-40 nga waahanga tinana), he pai ki te whakarite mo te 300-400 MB. Mo te akomanga waenga (~ 10 cores) 200-300 MB. Mo nga punaha ngoikore (2-5 cores) 50-100 MB he mea noa (kaore i whakamatauria ki enei).

Me titiro ki te mahi o tenei: me kii kua tautuhia te hbase.lru.cache.heavy.eviction.mb.size.limit = 500, he momo uta (panui) katahi ia ~10 hēkona ka tatauhia e hia nga paita. ka peia ma te whakamahi i te tauira:

Upoko = Tapeke Paita Whakakore (MB) * 100 / Tepe (MB) - 100;

Mēnā i panaia te 2000 MB, ka ōrite te Overhead ki:

2000 * 100 / 500 - 100 = 300%

Ka ngana nga algorithms ki te pupuri kia kaua e neke atu i te tekau paiheneti, no reira ka whakaitihia e te ahuatanga te paheketanga o nga poraka keteroki, na reira ka whakatinanahia he tikanga whakatika-aunoa.

Heoi, ki te heke iho te uta, me kii ko te 200 MB anake ka panaia, ka kino te Overhead (ko te mea e kiia ana ko te overshooting):

200 * 100 / 500 - 100 = -60%

Engari, ka whakanuia e te ahuatanga te paheketanga o nga poraka keteroki kia pai ra ano a Overhead.

Kei raro nei tetahi tauira o te ahua o tenei ki runga i nga raraunga tuuturu. Kaore he hiahia ki te ngana ki te eke ki te 0%, kaore e taea. He tino pai ina tata ki te 30 - 100%, ka awhina tenei ki te karo i te puta oata mai i te aratau arotautanga i nga wa poto.

hbase.lru.cache.heavy.eviction.overhead.coefficient — ka whakatakoto i te tere e hiahia ana matou ki te tiki i te hua. Mena ka tino mohio tatou he roa te nuinga o a tatou panui me te kore e hiahia ki te tatari, ka taea e tatou te whakanui ake i tenei ōwehenga ka tere ake te mahi.

Hei tauira, ka whakatauhia e matou tenei whakarea = 0.01. Ko te tikanga ko Overhead (tirohia ki runga ake) ka whakareatia ki tenei tau ki te hua ka puta, ka heke iho te paheketanga o nga poraka keteroki. Me whakaaro ko Overhead = 300% me te whakarea = 0.01, katahi ka whakahekehia te paheketanga o nga poraka keteroki ki te 3%.

Ka whakatinanahia ano he arorau rite "Backpressure" mo nga uara o runga kino. I te mea ka taea tonu te rerekee o te roanga o nga panui me nga pananga, ma tenei tikanga ka taea e koe te karo i te putanga o mua mai i te aratau arotautanga. Ko te pehanga o muri he arorau hurihuri: ko te kaha ake o te pupuhi, ka nui ake nga poraka kei te keteroki.

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Waehere whakatinana

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

Kia titiro tatou ki enei katoa ma te whakamahi i tetahi tauira pono. Kei a maatau te tuhinga whakamatautau e whai ake nei:

  1. Me timata ki te mahi Matawai (25 miro, puranga = 100)
  2. Whai muri i te 5 meneti, taapirihia nga whiwhi-maha (25 miro, puranga = 100)
  3. Whai muri i te 5 meneti, whakawetohia nga whiwhi-maha (ka mau tonu te karapa)

Ka mahia e matou e rua nga oma, tuatahi hbase.lru.cache.heavy.eviction.count.limit = 10000 (e tino mono ana i te waahanga), katahi ka tautuhia te rohe = 0 (ka taea).

I roto i nga rarangi kei raro nei ka kite tatou i te ahua o te ahuatanga ka huri me te whakahoki ano i te Overshooting ki te 14-71%. Mai i ia wa ka heke te kawenga, ka huri i te Backpressure me te HBase ka huna ano etahi poraka.

Takiuru RoheServer
i panaia (MB): 0, ōwehenga 0.0, i runga (%): -100, te porotiti whakataha taumaha: 0, te keteroki o naianei Poraka Raraunga (%): 100
i panaia (MB): 0, ōwehenga 0.0, i runga (%): -100, te porotiti whakataha taumaha: 0, te keteroki o naianei Poraka Raraunga (%): 100
i panaia (MB): 2170, ōwehenga 1.09, i runga ake (%): 985, taumaha te porotiti whakatara: 1, keteroki onāianei RaraungaRaraunga (%): 91 < tmata
i panaia (MB): 3763, ōwehenga 1.08, i runga ake (%): 1781, te porotiti whakataha taumaha: 2, te keteroki o naianei Paraka Raraunga (%): 76
i panaia (MB): 3306, ōwehenga 1.07, i runga ake (%): 1553, te porotiti whakataha taumaha: 3, te keteroki o naianei Paraka Raraunga (%): 61
i panaia (MB): 2508, ōwehenga 1.06, i runga ake (%): 1154, te porotiti whakataha taumaha: 4, te keteroki o naianei Paraka Raraunga (%): 50
i panaia (MB): 1824, ōwehenga 1.04, i runga ake (%): 812, te porotiti whakataha taumaha: 5, te keteroki o naianei Paraka Raraunga (%): 42
i panaia (MB): 1482, ōwehenga 1.03, i runga ake (%): 641, te porotiti whakataha taumaha: 6, te keteroki o naianei Paraka Raraunga (%): 36
i panaia (MB): 1140, ōwehenga 1.01, i runga ake (%): 470, te porotiti whakataha taumaha: 7, te keteroki o naianei Paraka Raraunga (%): 32
i panaia (MB): 913, ōwehenga 1.0, i runga ake (%): 356, te porotiti whakataha taumaha: 8, te keteroki o naianei Paraka Raraunga (%): 29
i panaia (MB): 912, ōwehenga 0.89, i runga ake (%): 356, te porotiti whakataha taumaha: 9, te keteroki o naianei Paraka Raraunga (%): 26
i panaia (MB): 684, ōwehenga 0.76, i runga ake (%): 242, te porotiti whakataha taumaha: 10, te keteroki o naianei Paraka Raraunga (%): 24
i panaia (MB): 684, ōwehenga 0.61, i runga ake (%): 242, te porotiti whakataha taumaha: 11, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 456, ōwehenga 0.51, i runga ake (%): 128, te porotiti whakataha taumaha: 12, te keteroki o naianei Paraka Raraunga (%): 21
i panaia (MB): 456, ōwehenga 0.42, i runga ake (%): 128, te porotiti whakataha taumaha: 13, te keteroki o naianei Paraka Raraunga (%): 20
i panaia (MB): 456, ōwehenga 0.33, i runga ake (%): 128, te porotiti whakataha taumaha: 14, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 15, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 342, ōwehenga 0.32, i runga ake (%): 71, te porotiti whakataha taumaha: 16, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 342, ōwehenga 0.31, i runga ake (%): 71, te porotiti whakataha taumaha: 17, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.3, i runga ake (%): 14, te porotiti whakataha taumaha: 18, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.29, i runga ake (%): 14, te porotiti whakataha taumaha: 19, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.27, i runga ake (%): 14, te porotiti whakataha taumaha: 20, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.25, i runga ake (%): 14, te porotiti whakataha taumaha: 21, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.24, i runga ake (%): 14, te porotiti whakataha taumaha: 22, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.22, i runga ake (%): 14, te porotiti whakataha taumaha: 23, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.21, i runga ake (%): 14, te porotiti whakataha taumaha: 24, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.2, i runga ake (%): 14, te porotiti whakataha taumaha: 25, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 228, ōwehenga 0.17, i runga ake (%): 14, te porotiti whakataha taumaha: 26, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 456, ōwehenga 0.17, i runga ake (%): 128, taumaha te porotiti whakatara: 27, keteroki o naianei RaraungaRaraunga (%): 18 < ka whiwhi (engari he rite te ripanga)
i panaia (MB): 456, ōwehenga 0.15, i runga ake (%): 128, te porotiti whakataha taumaha: 28, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 342, ōwehenga 0.13, i runga ake (%): 71, te porotiti whakataha taumaha: 29, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 342, ōwehenga 0.11, i runga ake (%): 71, te porotiti whakataha taumaha: 30, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 342, ōwehenga 0.09, i runga ake (%): 71, te porotiti whakataha taumaha: 31, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 228, ōwehenga 0.08, i runga ake (%): 14, te porotiti whakataha taumaha: 32, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 228, ōwehenga 0.07, i runga ake (%): 14, te porotiti whakataha taumaha: 33, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 228, ōwehenga 0.06, i runga ake (%): 14, te porotiti whakataha taumaha: 34, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 228, ōwehenga 0.05, i runga ake (%): 14, te porotiti whakataha taumaha: 35, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 228, ōwehenga 0.05, i runga ake (%): 14, te porotiti whakataha taumaha: 36, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 228, ōwehenga 0.04, i runga ake (%): 14, te porotiti whakataha taumaha: 37, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 109, ōwehenga 0.04, i runga (%): -46, taumaha te porotiti pana: 37, te keteroki o naianei Paraka Raraunga (%): 22 < te pehanga o muri
i panaia (MB): 798, ōwehenga 0.24, i runga ake (%): 299, te porotiti whakataha taumaha: 38, te keteroki o naianei Paraka Raraunga (%): 20
i panaia (MB): 798, ōwehenga 0.29, i runga ake (%): 299, te porotiti whakataha taumaha: 39, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 570, ōwehenga 0.27, i runga ake (%): 185, te porotiti whakataha taumaha: 40, te keteroki o naianei Paraka Raraunga (%): 17
i panaia (MB): 456, ōwehenga 0.22, i runga ake (%): 128, te porotiti whakataha taumaha: 41, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 342, ōwehenga 0.16, i runga ake (%): 71, te porotiti whakataha taumaha: 42, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 342, ōwehenga 0.11, i runga ake (%): 71, te porotiti whakataha taumaha: 43, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 228, ōwehenga 0.09, i runga ake (%): 14, te porotiti whakataha taumaha: 44, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 228, ōwehenga 0.07, i runga ake (%): 14, te porotiti whakataha taumaha: 45, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 228, ōwehenga 0.05, i runga ake (%): 14, te porotiti whakataha taumaha: 46, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 222, ōwehenga 0.04, i runga ake (%): 11, te porotiti whakataha taumaha: 47, te keteroki o naianei Paraka Raraunga (%): 16
i panaia (MB): 104, ōwehenga 0.03, i runga ake (%): -48, te porotiti whakataha taumaha: 47, te keteroki o naianei Pararaka Raraunga (%): 21 < ka riro te haukoti
i panaia (MB): 684, ōwehenga 0.2, i runga ake (%): 242, te porotiti whakataha taumaha: 48, te keteroki o naianei Paraka Raraunga (%): 19
i panaia (MB): 570, ōwehenga 0.23, i runga ake (%): 185, te porotiti whakataha taumaha: 49, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 342, ōwehenga 0.22, i runga ake (%): 71, te porotiti whakataha taumaha: 50, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 228, ōwehenga 0.21, i runga ake (%): 14, te porotiti whakataha taumaha: 51, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 228, ōwehenga 0.2, i runga ake (%): 14, te porotiti whakataha taumaha: 52, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 228, ōwehenga 0.18, i runga ake (%): 14, te porotiti whakataha taumaha: 53, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 228, ōwehenga 0.16, i runga ake (%): 14, te porotiti whakataha taumaha: 54, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 228, ōwehenga 0.14, i runga ake (%): 14, te porotiti whakataha taumaha: 55, te keteroki o naianei Paraka Raraunga (%): 18
i panaia (MB): 112, ōwehenga 0.14, i runga (%): -44, taumaha te porotiti pana: 55, te keteroki o naianei Paraka Raraunga (%): 23 < te pehanga o muri
i panaia (MB): 456, ōwehenga 0.26, i runga ake (%): 128, te porotiti whakataha taumaha: 56, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.31, i runga ake (%): 71, te porotiti whakataha taumaha: 57, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 58, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 59, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 60, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 61, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 62, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 63, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.32, i runga ake (%): 71, te porotiti whakataha taumaha: 64, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 65, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 66, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.32, i runga ake (%): 71, te porotiti whakataha taumaha: 67, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 68, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.32, i runga ake (%): 71, te porotiti whakataha taumaha: 69, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.32, i runga ake (%): 71, te porotiti whakataha taumaha: 70, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 71, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 72, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 73, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 74, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 75, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 342, ōwehenga 0.33, i runga ake (%): 71, te porotiti whakataha taumaha: 76, te keteroki o naianei Paraka Raraunga (%): 22
i panaia (MB): 21, ōwehenga 0.33, i runga (%): -90, te porotiti whakataha taumaha: 76, te keteroki o naianei Poraka Raraunga (%): 32
i panaia (MB): 0, ōwehenga 0.0, i runga (%): -100, te porotiti whakataha taumaha: 0, te keteroki o naianei Poraka Raraunga (%): 100
i panaia (MB): 0, ōwehenga 0.0, i runga (%): -100, te porotiti whakataha taumaha: 0, te keteroki o naianei Poraka Raraunga (%): 100

I hiahiatia nga karapa hei whakaatu i taua tukanga i te ahua o te kauwhata o te hononga i waenga i nga waahanga keteroki e rua - kotahi (kei reira nga poraka kaore ano kia tonohia i mua atu) me te maha (raraunga "tonohia" i te iti rawa i te kotahi ka penapena ki konei):

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Ka mutu, he aha te ahua o te mahi o nga tawhā i te ahua o te kauwhata. Hei whakataurite, i whakaweto katoatia te keteroki i te timatanga, katahi ka whakarewahia te HBase me te keteroki me te whakaroa i te tiimata o te mahi arotautanga ma te 5 meneti (30 huringa pana).

Ka kitea te waehere katoa i roto i te Tono Tono HBASE 23887 i runga i te github.

Engari, ko te 300 mano panui mo ia hekona ehara i te mea ka taea te whakatutuki i runga i tenei taputapu i raro i enei tikanga. Ko te meka ka hiahia koe ki te uru atu ki nga raraunga ma te HDFS, ka whakamahia te tikanga ShortCircuitCache (i muri nei ka kiia ko SSC), e taea ai e koe te uru tika ki nga raraunga, ma te karo i nga taunekeneke whatunga.

I whakaatu mai i te whakaaturanga, ahakoa he nui te hua o tenei tikanga, ka noho ano hoki i etahi wa ka waiho hei kohungahunga, na te mea tata katoa nga mahi taumaha ka puta i roto i te raka, ka arai i te nuinga o te waa.

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

I te mohio ki tenei, i mohio matou ka taea te karo i te raru ma te hanga i nga momo SSC motuhake:

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

Na ka mahi tahi me ratou, haunga nga whakawhitinga i te mati whakawhena whakamutunga:

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

Inaianei ka taea e koe te timata ki te whakamatautau. Ki te mahi i tenei, ka panuihia e matou nga konae mai i te HDFS me te tono maha-miro ngawari. Tautuhia nga tawhā:

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

A panui noa nga konae:

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

Ka mahia tenei waehere i roto i nga miro motuhake ka piki ake te maha o nga konae panui i te wa kotahi (mai i te 10 ki te 200 - tuaka whakapae) me te maha o nga keteroki (mai i te 1 ki te 10 - whakairoiro). Ko te tuaka poutū e whakaatu ana i te whakaterenga ka puta mai i te pikinga o te SSC e pa ana ki te keehi ina kotahi anake te keteroki.

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Me pehea te panui i te kauwhata: Ko te wa mahi mo te 100 mano panui i roto i nga poraka 64 KB me te keteroki kotahi me 78 hēkona. Inaa ki te 5 keteroki ka 16 hēkona. Ko era. he terenga ~5 nga wa. Ka kitea mai i te kauwhata, kaore e tino kitea te paanga mo te iti o nga panui whakarara, ka timata te whai waahi nui ina neke atu i te 50 nga panui miro. Ka kitea ano te piki haere o te maha o nga SSC mai i te 6 i runga ake nei he tino iti ake te pikinga mahi.

Panui 1: na te mea he tino rerekee nga hua whakamatautau (tirohia ki raro), 3 nga oma i mahia, a ko nga uara i puta i te toharite.

Tuhipoka 2: He rite tonu te whiwhinga mahi mai i te whirihora i te uru matapōkere, ahakoa he puhoi ake te uru.

Engari, he mea tika kia whakamaramahia, kaore i rite ki te keehi me te HBase, kaore i te waatea noa tenei whakatere. I konei ka "iriti" te kaha o te PTM ki te mahi ake, kaua ki te whakairi ki runga i nga raka.

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

I konei ka taea e koe te kite, i te nuinga o te waa, ko te pikinga o te maha o nga keteroki ka nui ake te pikinga o te whakamahi CPU. Heoi, he paku ake nga huinga toa.

Hei tauira, me ata titiro ki te tautuhinga SSC = 3. Ko te pikinga o nga mahi i runga i te awhe he 3.3 nga wa. Kei raro nei nga hua mai i nga oma motuhake e toru.

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Ahakoa ka piki ake te kohi PTM mo te 2.8 wa. Kaore i tino nui te rereketanga, engari kua harikoa a Greta iti, ka whai wa pea ki te haere ki te kura ki te ako.

Na, ka whai hua pai tenei mo tetahi taputapu e whakamahi ana i te urunga nui ki te HDFS (hei tauira ko Spark, me etahi atu), mena he maamaa te waehere tono (ara te mono kei te taha o te kiritaki HDFS) a he mana CPU kore utu. . Hei tirotiro, me whakamatau he aha te painga o te whakamahi whakakotahitanga o te arotautanga BlockCache me te whakatikatika SSC mo te panui mai i te HBase.

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Ka taea te kite i raro i enei ahuatanga kaore i tino rite te paanga ki nga whakamatautau parakore (te panui me te kore he tukatuka), engari ka taea te kohi atu i te 80K ki konei. Ka hono tahi, ko nga arotautanga e rua e whakarato ana ki te 4x tere tere.

I mahia ano he PR mo tenei arotautanga [HDFS-15202], kua hanumi, ka watea mai tenei mahi i roto i nga putanga kei te heke mai.

Ka mutu, he rawe ki te whakatairite i nga mahi panui o te putunga rarangi-whanui rite, Cassandra me HBase.

Hei mahi i tenei, i whakarewahia e matou nga tauira o te taputapu whakamatautau uta YCSB paerewa mai i nga kaihautu e rua (800 miro katoa). I te taha o te tūmau - 4 nga waahi o RegionServer me Cassandra i runga i nga kaihautu 4 (ehara i nga mea e rere ana nga kaihoko, hei karo i to raatau mana). I ahu mai nga panui i nga ripanga rahi:

HBase – 300 GB i runga i te HDFS (100 GB raraunga parakore)

Cassandra - 250 GB (tauwehe tukurua = 3)

Ko era. he rite tonu te rōrahi (i roto i te HBase he iti ake).

Tawhā HBase:

dfs.client.short.circuit.num = 5 (HDFS arotautanga kiritaki)

hbase.lru.cache.heavy.eviction.count.limit = 30 - ko te tikanga ka tiimata te mahi i muri i te 30 pananga (~5 meneti)

hbase.lru.cache.heavy.eviction.mb.size.limit = 300 — te rahinga o te keteroki me te pananga

Ko nga rangitaki YCSB i tohatohahia ka whakahiatohia ki nga kauwhata Excel:

Me pehea te whakanui ake i te tere panui mai i te HBase ki te 3 nga wa mai i te HDFS ki te 5 nga wa

Ka taea e koe te kite, ko enei arotautanga ka taea te whakataurite i nga mahi o enei papaarangi i raro i enei tikanga me te whakatutuki i te 450 mano panui mo ia hekona.

Ko te tumanako ka whai hua enei korero ki tetahi i roto i te pakanga whakahihiri mo te hua.

Source: will.com

Tāpiri i te kōrero