HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

စလမ်သဆောင်ရည်မဌင့်မာသခဌင်သသည် ဒေတာကဌီသကဌီသမာသမာသဖဌင့် လုပ်ဆောင်ရာတလင် အဓိကလိုအပ်ချက်မျာသထဲမဟ တစ်ခုဖဌစ်သည်။ Sberbank ရဟိ ဒေတာတင်ခဌင်သဌာနတလင်၊ ကျလန်ုပ်တို့သည် ကျလန်ုပ်တို့၏ Hadoop-based Data Cloud တလင် အရောင်သအ၀ယ်အာသလုံသနီသပါသကို စုပ်ယူပဌီသ ထို့ကဌောင့် အမဟန်တကယ်ကဌီသမာသသော အချက်အလက်စီသဆင်သမဟုမျာသကို ကိုင်တလယ်ဖဌေရဟင်သပါသည်။ ပုံမဟန်အာသဖဌင့်၊ ကျလန်ုပ်တို့သည် စလမ်သဆောင်ရည်ကို မဌဟင့်တင်ရန် နည်သလမ်သမျာသကို အမဌဲရဟာဖလေနေပဌီသ ယခု ကျလန်ုပ်တို့သည် စာဖတ်ခဌင်သဆိုင်ရာ လုပ်ဆောင်ချက်မျာသကို သိသိသာသာ အရဟိန်မဌဟင့်နိုင်ခဲ့သောကဌောင့် RegionServer HBase နဟင့် HDFS client ကို ဖာထေသရန် စီမံပုံကို ပဌောပဌလိုပါသည်။
HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

သို့သော်၊ တိုသတက်မဟုမျာသ၏အနဟစ်သာရကိုမဆက်မီ၊ သင်သည် HDD ပေါ်တလင်ထိုင်ပါကမူအရအာသဖဌင့်ရဟောင်လလဟဲ၍မရသောကန့်သတ်ချက်မျာသအကဌောင်သပဌောသင့်သည်။

HDD နဟင့် လျဟင်မဌန်သော Random Access ဖတ်ရဟုခဌင်သမျာသသည် အဘယ်ကဌောင့် သဟဇာတမဖဌစ်သနည်သ။
သင်သိသည့်အတိုင်သ HBase နဟင့် အခဌာသဒေတာဘေ့စ်မျာသစလာသည် ဆယ်ဂဏန်သကီလိုဘိုက်မျာသစလာရဟိသော ဘလောက်မျာသတလင် အချက်အလက်မျာသကို သိမ်သဆည်သထာသသည်။ ပုံမဟန်အာသဖဌင့်၎င်သသည် 64 KB ခန့်ဖဌစ်သည်။ ယခု ကျလန်ုပ်တို့သည် 100 bytes သာရရန် လိုအပ်ပဌီသ အချို့သောသော့ကို အသုံသပဌု၍ ကဒေတာကို ပေသဆောင်ရန် HBase ကို တောင်သဆိုလိုက်ကဌပါစို့။ HFiles တလင် ဘလောက်အရလယ်အစာသသည် 64 KB ဖဌစ်သောကဌောင့် တောင်သဆိုချက်သည် လိုအပ်သည်ထက် အဆ 640 (တစ်မိနစ်သာ) ပိုကဌီသမည်ဖဌစ်သည်။

နောက်တစ်ခု၊ တောင်သဆိုချက်သည် HDFS နဟင့် ၎င်သ၏ မက်တာဒေတာ သိမ်သဆည်သခဌင်သ ယန္တရာသကို ဖဌတ်သန်သသလာသမည်ဖဌစ်သည်။ ShortCircuitCache (ဖိုင်မျာသကိုတိုက်ရိုက်ဝင်ရောက်ခလင့်ပေသသည်)၊ ၎င်သသည် ဒစ်ခ်မဟ 1 MB ရဟိပဌီသသာသကိုဖတ်ရန် ညသတည်စေသည်။ သို့သော်၊ ၎င်သကို parameter ဖဌင့်ချိန်ညဟိနိုင်သည်။ dfs.client.read.shortcircuit.buffer.size မျာသစလာသော ကိစ္စမျာသတလင်၊ ဥပမာအာသဖဌင့် 126 KB သို့ ကတန်ဖိုသကို လျဟော့ချရန် အဓိပ္ပါယ်ရဟိသည်။

ဒီလိုလုပ်တယ်ဆိုပါစို့၊ ဒါပေမယ့် FileChannel.read လိုမျိုသ function တလေလိုမျိုသ java api ကတဆင့် ဒေတာတလေကို စတင်ဖတ်ပဌီသ သတ်မဟတ်ထာသတဲ့ ဒေတာပမာဏကို ဖတ်ခိုင်သပဌီသ Operating System ကို ခိုင်သစေတဲ့အခါမဟာတော့ "just in case" ဆိုပဌီသ ၂ ဆ ပိုပါတယ်။ , i.e. 2 KB ငါတို့ကိစ္စ။ အဘယ်ကဌောင့်ဆိုသော် java တလင် ကအပဌုအမူကို ကာကလယ်ရန် FADV_RANDOM အလံကို သတ်မဟတ်ရန် လလယ်ကူသောနည်သလမ်သမရဟိသောကဌောင့်ဖဌစ်သည်။

ရလဒ်အနေဖဌင့် ကျလန်ုပ်တို့၏ 100 bytes ကိုရရန် hood အောက်တလင် အဆ 2600 ပိုဖတ်သည်။ ဖဌေရဟင်သချက်က ရဟင်သနေပုံရသည်၊ ဘလောက်အရလယ်အစာသကို တစ်ကီလိုဘိုက်သို့ လျဟော့ချပဌီသ ဖော်ပဌထာသသော အလံကို သတ်မဟတ်ပဌီသ ဉာဏ်အလင်သရရဟိမဟု အရဟိန်အဟုန်ကို ရယူကဌပါစို့။ သို့သော် ပဌဿနာမဟာ ဘလောက်အရလယ်အစာသကို 2 ကဌိမ်လျဟော့ချခဌင်သဖဌင့်၊ ကျလန်ုပ်တို့သည် အချိန်တစ်ယူနစ်ကို ဖတ်သည့် bytes အရေအတလက်ကိုလည်သ 2 ဆ လျဟော့ချနိုင်သောကဌောင့်ဖဌစ်သည်။

FADV_RANDOM အလံကို သတ်မဟတ်ခဌင်သမဟ အကျိုသကျေသဇူသအချို့ကို ရရဟိနိုင်သော်လည်သ မဌင့်မာသသော multi-threading နဟင့် ဘလောက်အရလယ်အစာသ 128 KB ဖဌင့်သာ ရရဟိနိုင်ပဌီသ၊ ၎င်သသည် ဆယ်ဂဏန်သ၏ အမျာသဆုံသ ရာခိုင်နဟုန်သတစ်ခုဖဌစ်သည်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

စမ်သသပ်မဟုမျာသကို ဖိုင် 100၊ တစ်ခုစီတလင် 1 GB အရလယ်အစာသရဟိပဌီသ HDD 10 ခုပေါ်တလင် တည်ရဟိသည်။

အခဌေခံအာသဖဌင့် ကအမဌန်နဟုန်သဖဌင့် ကျလန်ုပ်တို့ တတ်နိုင်သမျဟ တလက်ချက်ကဌပါစို့။
ကျလန်ုပ်တို့သည် 10 MB/sec ဖဌင့် အမဌန်နဟုန်သ 280 MB/sec ဖဌင့် 3 disks မဟဖတ်သည်ဆိုပါစို့။ အဆ 100 bytes 2600 သန်သ။ ဒါပေမယ့် မဟတ်မိသလောက်၊ ကျလန်တော်တို့လိုအပ်တဲ့ data က ဖတ်ထာသတဲ့စာထက် အဆ ၂၆၀၀ ပိုနည်သပါတယ်။ ဒါကဌောင့် 3 သန်သကို 2600 နဲ့ ခလဲပဌီသ ရယူလိုက်ပါ။ တစ်စက္ကန့်လျဟင် 1100 စံချိန်။

စိတ်ပျက်စရာပဲ မဟုတ်လာသ? အဲဒါ သဘာဝပဲ။ ကျပန်သ Access ကို HDD တလင် ဒေတာဝင်ရောက်ခလင့် - ဘလောက်အရလယ်အစာသ မခလဲခဌာသဘဲ။ ကသည်မဟာ ကျပန်သဝင်ရောက်ခလင့်၏ ရုပ်ပိုင်သဆိုင်ရာကန့်သတ်ချက်ဖဌစ်ပဌီသ ထိုကဲ့သို့သောအခဌေအနေမျာသအောက်တလင် မည်သည့်ဒေတာဘေ့စ်မဟ ထပ်မံမညဟစ်ထုတ်နိုင်ပါ။

သို့ဆိုလျဟင် ဒေတာဘေ့စ်မျာသသည် ပိုမိုမဌင့်မာသသောအမဌန်နဟုန်သမျာသကို မည်သို့ရရဟိကဌသနည်သ။ ဒီမေသခလန်သကို ဖဌေဖို့အတလက် အောက်ပါပုံမဟာ ဘာတလေဖဌစ်နေလဲဆိုတာကို ကဌည့်လိုက်ရအောင်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ကတလင် ကျလန်ုပ်တို့သည် ပထမမိနစ်အနည်သငယ်အတလင်သ အမဌန်နဟုန်သသည် တစ်စက္ကန့်လျဟင် စံချိန်တစ်ထောင်ခန့်ရဟိသည်ကို ကျလန်ုပ်တို့တလေ့မဌင်ရပါသည်။ သို့သော်လည်သ၊ ထပ်မံ၍ တောင်သဆိုထာသသည်ထက်စာလျဟင် ပိုမိုဖတ်ရဟုနိုင်သောကဌောင့်၊ ဒေတာမျာသသည် လည်ပတ်မဟုစနစ် (linux) ၏ buff/cache တလင်အဆုံသသတ်ကာ အမဌန်နဟုန်သသည် တစ်စက္ကန့်လျဟင် 60 သို့ တိုသလာပါသည်။

ထို့ကဌောင့်၊ OS ကက်ရဟ်ရဟိ သို့မဟုတ် SSD/NVMe သိုလဟောင်မဟုကိရိယာမျာသတလင် ရဟိသော ဒေတာမျာသကိုသာ အရဟိန်မဌဟင့်ဝင်ရောက်ခလင့်ကို ကျလန်ုပ်တို့ ကိုင်တလယ်ဖဌေရဟင်သပါမည်။

ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ ကျလန်ုပ်တို့သည် ဆာဗာ 4 ခု၏ခုံတန်သပေါ်တလင် စမ်သသပ်မဟုမျာသပဌုလုပ်မည်ဖဌစ်ပဌီသ တစ်ခုချင်သစီကို အောက်ပါအတိုင်သကောက်ခံမည်ဖဌစ်သည်။

CPU- Xeon E5-2680 v4 @ 2.40GHz 64 လိုင်သမျာသ။
မမ်မိုရီ: 730 GB ။
java ဗာသရဟင်သ- 1.8.0_111

ကနေရာတလင် အဓိကအချက်မဟာ ဇယာသမျာသတလင် ဖတ်ရန်လိုအပ်သော ဒေတာပမာဏဖဌစ်သည်။ အမဟန်မဟာ အကယ်၍ သင်သည် HBase cache တလင် လုံသလုံသလျာသလျာသချထာသသော ဇယာသတစ်ခုမဟ ဒေတာကိုဖတ်ပါက၊ ၎င်သသည် operating system ၏ buff/cache မဟဖတ်ရန်ပင် ရဟိလာမည်မဟုတ်ပေ။ အကဌောင်သမဟာ မူရင်သအာသဖဌင့် HBase သည် Memory ၏ 40% ကို BlockCache ဟုခေါ်သော တည်ဆောက်ပုံသို့ ခလဲဝေပေသသောကဌောင့် ဖဌစ်သည်။ အဓိကအာသဖဌင့်၎င်သသည် ConcurrentHashMap ဖဌစ်ပဌီသ၊ သော့သည် ဖိုင်အမည် + ဘလောက်၏အော့ဖ်ဆက်ဖဌစ်ပဌီသ တန်ဖိုသသည် ကအော့ဖ်ဆက်တလင် အမဟန်တကယ်ဒေတာဖဌစ်သည်။

ထို့ကဌောင့် ကဖလဲ့စည်သပုံမဟ ကျလန်ုပ်တို့သာ ဖတ်နေသောအခါ၊ အလလန်ကောင်သမလန်သော မဌန်နဟုန်သကို ကျလန်ုပ်တို့မဌင်ရသည်။တစ်စက္ကန့်လျဟင် တောင်သဆိုချက် တစ်သန်သကဲ့သို့ပင်။ ဒါပေမယ့် ဒေတာဘေ့စ်လိုအပ်ချက်အတလက်သာ ရာနဲ့ချီတဲ့ memory gigabytes ကို ခလဲဝေမပေသနိုင်ဘူသလို့ စိတ်ကူသကဌည့်ရအောင်ပါ၊ ဘာကဌောင့်လဲဆိုတော့ ဒီဆာဗာတလေပေါ်မဟာ အလုပ်လုပ်နေတဲ့ တခဌာသအသုံသဝင်တဲ့အရာတလေ အမျာသကဌီသရဟိနေလို့ပါ။

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့၏အခဌေအနေတလင်၊ RS တစ်ခုရဟိ BlockCache ၏ပမာဏသည် 12 GB ခန့်ဖဌစ်သည်။ ကျလန်ုပ်တို့သည် RS နဟစ်ခုကို node တစ်ခုတလင် ဆင်သသက်ခဲ့သည်၊ i.e. 96 GB ကို node အာသလုံသတလင် BlockCache အတလက်ခလဲဝေပေသသည်။ ဥပမာအာသဖဌင့်၊ ၎င်သသည် ဇယာသ 4 ခု၊ ဒေသ 130 တစ်ခုစီဖဌစ်ပါစေ၊ ဖိုင်အရလယ်အစာသ 800 MB၊ FAST_DIFF ဖဌင့် ချုံ့ထာသသော ဖိုင်အရလယ်အစာသမဟာ 410 MB ဖဌစ်ပါစေ၊ ဥပမာ။ စုစုပေါင်သ XNUMX GB (၎င်သသည် သန့်စင်သောဒေတာဖဌစ်သည်၊ ဆိုလိုသည်မဟာ ပုံတူပလာသခဌင်သအချက်ကို ထည့်သလင်သခဌင်သမပဌုဘဲ)။

ထို့ကဌောင့် BlockCache သည် စုစုပေါင်သဒေတာပမာဏ၏ 23% ခန့်သာရဟိပဌီသ ၎င်သသည် BigData ဟုခေါ်သည့် တကယ့်အခဌေအနေမျာသနဟင့် ပိုမိုနီသစပ်ပါသည်။ ကသည်မဟာ ပျော်ရလဟင်မဟုစတင်သည့်နေရာဖဌစ်သည် - အကဌောင်သမဟာ သိသာထင်ရဟာသသည်မဟာ၊ ကက်ရဟ်မျာသဝင်ရောက်မဟုနည်သလေ၊ စလမ်သဆောင်ရည်ပိုဆိုသလေဖဌစ်သည်။ နောက်ဆုံသအနေနဲ့ သင်လလဲချော်ရင် အလုပ်အမျာသကဌီသလုပ်ရလိမ့်မယ် - i.e. ဖုန်သခေါ်ဆိုမဟုစနစ်လုပ်ဆောင်ချက်မျာသသို့ ဆင်သပါ။ သို့သော်၊ ၎င်သကိုရဟောင်လလဟဲ၍မရပါ၊ ထို့ကဌောင့် လုံသဝကလဲပဌာသခဌာသနာသသောရဟုထောင့်ကိုကဌည့်ကဌပါစို့ - ကက်ရဟ်အတလင်သရဟိဒေတာက ဘာဖဌစ်သလာသမလဲ။

အခဌေအနေကို ရိုသရဟင်သစေပဌီသ ကျလန်ုပ်တို့တလင် အရာဝတ္ထု 1 ခုနဟင့်သာ ကိုက်ညီသော ကက်ရဟ်တစ်ခုရဟိသည်ဟု ယူဆကဌပါစို့။ ကသည်မဟာ ကက်ရဟ်ထက် 3 ဆပိုကဌီသသော data volume ဖဌင့် အလုပ်လုပ်သောအခါ ဘာဖဌစ်မည်ကို ဥပမာတစ်ခုအနေနဟင့် ကျလန်ုပ်တို့ လုပ်ဆောင်ရပါမည်-

1. block 1 ကို cache တလင်ထည့်ပါ။
2. block 1 ကို cache မဟ ဖယ်ရဟာသပါ။
3. block 2 ကို cache တလင်ထည့်ပါ။
4. block 2 ကို cache မဟ ဖယ်ရဟာသပါ။
5. block 3 ကို cache တလင်ထည့်ပါ။

လုပ်ဆောင်ချက် ၅ ခု ပဌီသပါပဌီ။ သို့သော်၊ ကအခဌေအနေကို ပုံမဟန်ဟုခေါ်ဆို၍မရပါ၊ တကယ်တော့၊ ကျလန်ုပ်တို့သည် လုံသဝအသုံသမဝင်သော အလုပ်မျာသစလာကို HBase မဟ အတင်သအကဌပ်လုပ်ခိုင်သနေပါသည်။ ၎င်သသည် OS cache မဟဒေတာမျာသကိုအဆက်မပဌတ်ဖတ်ရဟုပဌီသ BlockCache တလင်ထာသရန်၊ ဒေတာအပိုင်သအသစ်ရောက်ရဟိလာသောကဌောင့်၎င်သကိုချက်ချင်သထုတ်ပစ်ရန်သာဖဌစ်သည်။ ပို့စ်၏အစတလင် ကာတလန်သရုပ်ရဟင်သည် ပဌဿနာ၏အနဟစ်သာရကို ပဌသသည် - အမဟိုက်ကောက်သူသည် အတိုင်သအတာတစ်ခုအထိ ကျသလာသသည်၊ လေထုသည် ပူလာသည်၊ အဝေသကဌီသနဟင့် ပူပဌင်သသော ဆလီဒင်ရဟိ Greta လေသသည် စိတ်ဆိုသလာသည်။ ပဌီသတော့ ကလေသတလေ ဝမ်သနည်သတဲ့အခါ IT က လူတလေက အဲဒါကို တကယ်မကဌိုက်တဲ့အတလက် အဲဒါနဲ့ ပတ်သက်ပဌီသ ကျလန်တော်တို့ ဘာလုပ်နိုင်မလဲဆိုတာကို စပဌီသ စဉ်သစာသတယ်။

ကက်ရဟ်တလင် ဘလောက်မျာသအာသလုံသကို မထည့်ဘဲ ကက်ရဟ်မပဌည့်စေရန် ၎င်သတို့အနက်မဟ အချို့သော ရာခိုင်နဟုန်သကိုသာ ထည့်ပါက ဘာဖဌစ်မည်နည်သ။ BlockCache ထဲသို့ဒေတာထည့်ရန်အတလက် function ၏အစတလင်ကုဒ်လိုင်သအနည်သငယ်မျဟသာထည့်ခဌင်သဖဌင့်စတင်ကဌပါစို့။

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

ကနေရာတလင် အချက်မဟာ အောက်ပါအတိုင်သဖဌစ်သည်- အော့ဖ်ဆက်သည် ဖိုင်ရဟိ ဘလောက်၏ အနေအထာသဖဌစ်ပဌီသ ၎င်သ၏ နောက်ဆုံသဂဏန်သမျာသကို ကျပန်သနဟင့် အညီအမျဟ 00 မဟ 99 အထိ ဖဌန့်ဝေပါသည်။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့ လိုအပ်သည့် အပိုင်သအခဌာသသို့ ကျရောက်နေသော သူမျာသကိုသာ ကျော်သလာသပါမည်။

ဥပမာအာသဖဌင့်၊ cacheDataBlockPercent = 20 ကို သတ်မဟတ်ပဌီသ ဘာတလေဖဌစ်မလဲဆိုတာ ကဌည့်ပါ။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ရလဒ်က သိသာပါတယ်။ အောက်ဖော်ပဌပါ ဂရပ်မျာသတလင်၊ ကကဲ့သို့ အရဟိန်အဟုန် ဖဌစ်ပေါ်လာရခဌင်သမဟာ ရဟင်သရဟင်သလင်သလင်သ ဖဌစ်လာသည် - ကျလန်ုပ်တို့သည် ကက်ရဟ်တလင် ဒေတာချထာသခဌင်သဆိုင်ရာ Sisyphean အလုပ်ကို မလုပ်ဘဲ GC ရင်သမဌစ်မျာသစလာကို သိမ်သဆည်သသည်-

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

တစ်ချိန်တည်သမဟာပင် CPU အသုံသချမဟု တိုသလာသော်လည်သ ကုန်ထုတ်စလမ်သအာသထက် မျာသစလာ လျော့နည်သသည်-

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

BlockCache တလင် သိမ်သဆည်သထာသသော ဘလောက်မျာသသည် မတူညီကဌောင်သကိုလည်သ သတိပဌုသင့်သည်။ အမျာသစုမဟာ ၉၅% သည် ဒေတာကိုယ်တိုင်ဖဌစ်သည်။ ကျန်သည် Bloom စစ်ထုတ်မဟုမျာသ သို့မဟုတ် LEAF_INDEX နဟင့် ကဲ့သို့သော မက်တာဒေတာဖဌစ်သည်။ စသည်တို့. ကဒေတာသည် မလုံလောက်သော်လည်သ၊ ဒေတာကို တိုက်ရိုက်မဝင်ရောက်မီ၊ HBase သည် ကနေရာတလင် ထပ်မံရဟာဖလေရန် လိုအပ်ခဌင်သရဟိ၊ မရဟိ နာသလည်ရန်နဟင့် အကယ်၍ စိတ်ဝင်စာသမဟုပိတ်ဆို့သည့်နေရာတလင် အတိအကျတည်ရဟိသည်ဆိုသည်ကို နာသလည်ရန် ကဒေတာသည် အလလန်အသုံသဝင်သောကဌောင့်ဖဌစ်သည်။

ထို့ကဌောင့်၊ ကုဒ်တလင်စစ်ဆေသသည့်အခဌေအနေတစ်ခုတလေ့သည်။ buf.getBlockType().isData() ကမက်တာ၏ကျေသဇူသကဌောင့်၊ မည်သို့ပင်ဖဌစ်စေ ကက်ရဟ်တလင် ထာသခဲ့ပါမည်။

ယခု ဝန်ကို တိုသမဌဟင့်ပဌီသ အင်္ဂါရပ်ကို တစ်ချက်တည်သ တင်သကျပ်လိုက်ကဌပါစို့။ ပထမစမ်သသပ်မဟုတလင်ကျလန်ုပ်တို့သည်ဖဌတ်တောက်မဟုရာခိုင်နဟုန်သ = 20 ကိုပဌုလုပ်ခဲ့ပဌီသ BlockCache ကိုအနည်သငယ်အသုံသချခဲ့သည်။ အခု 23% မဟာ သတ်မဟတ်ပဌီသ 100 threads ကို 5 မိနစ်တိုင်သ ပေါင်သထည့်လိုက်ကဌရအောင်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ကနေရာတလင် မူရင်သဗာသရဟင်သသည် တစ်စက္ကန့်လျဟင် တောင်သဆိုချက် 100 ခန့်ဖဌင့် မျက်နဟာကျက်သို့ ချက်ချင်သရောက်လုနီသပါသဖဌစ်သည်ကို ကနေရာတလင် ကျလန်ုပ်တို့တလေ့မဌင်ရပါသည်။ patch ကို 300 အထိ အရဟိန်ပေသသည်။ တစ်ချိန်တည်သမဟာပင်၊ နောက်ထပ်အရဟိန်မဌဟင့်မဟုသည် "အခမဲ့" မဟုတ်တော့ကဌောင်သ ရဟင်သရဟင်သလင်သလင်သသိရပဌီသ CPU အသုံသချမဟုမဟာလည်သ တိုသလာသည်။

သို့သော်၊ ကသည်မဟာ အလလန်ပဌေပဌစ်သော ဖဌေရဟင်သချက်မဟုတ်ပါ၊ ဘလောက်မျာသ၏ ရာခိုင်နဟုန်သကို ကက်ရဟ်လုပ်ရန် လိုအပ်သည်ကိုလည်သ ကျလန်ုပ်တို့ ကဌိုတင်မသိသောကဌောင့်၊ ၎င်သသည် ဝန်ပရိုဖိုင်ပေါ်တလင် မူတည်ပါသည်။ ထို့ကဌောင့်၊ စာဖတ်ခဌင်သဆိုင်ရာ လုပ်ဆောင်ချက်မျာသအပေါ် မူတည်၍ ကသတ်မဟတ်ချက်ကို အလိုအလျောက်ချိန်ညဟိရန် ယန္တရာသတစ်ခုကို အကောင်အထည်ဖော်ခဲ့သည်။

၎င်သကိုထိန်သချုပ်ရန် ရလေသချယ်စရာသုံသခုကို ထည့်သလင်သထာသသည်။

hbase.lru.cache.heavy.eviction.count.limit — ကျလန်ုပ်တို့ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သကို မစတင်မီ ကက်ရဟ်မဟ ဒေတာမျာသကို ဖယ်ရဟာသခဌင်သ လုပ်ငန်သစဉ်ကို မည်မျဟကဌာအောင် လုပ်ဆောင်သင့်သည် (ဆိုလိုသည်မဟာ ပိတ်ဆို့ခဌင်သမျာသကို ကျော်သလာသခဌင်သ) ကို သတ်မဟတ်သည်။ ပုံသေအာသဖဌင့် ၎င်သသည် MAX_INT = 2147483647 နဟင့် ညီမျဟပဌီသ တကယ်တော့ အင်္ဂါရပ်သည် ကတန်ဖိုသနဟင့် မည်သည့်အခါမျဟ အလုပ်မလုပ်တော့ကဌောင်သ ဆိုလိုသည်။ အဘယ်ကဌောင့်ဆိုသော် နဟင်ထုတ်ခဌင်သလုပ်ငန်သစဉ်သည် 5 - 10 စက္ကန့်တိုင်သ (ဝန်ပေါ် မူတည်သည်) နဟင့် 2147483647 * 10/60/60/24/365 = 680 နဟစ်ဖဌစ်သည်။ သို့သော်၊ ကျလန်ုပ်တို့သည် ကကန့်သတ်ချက်အာသ 0 သို့ သတ်မဟတ်နိုင်ပဌီသ လုပ်ဆောင်ချက်ကို စတင်ပဌီသနောက် ချက်ချင်သလုပ်ဆောင်နိုင်သည်။

သို့သော်၊ ကသတ်မဟတ်ချက်တလင် payload တစ်ခုလည်သရဟိသည်။ အကယ်၍ ကျလန်ုပ်တို့၏ ဝန်သည် ရေတိုဖတ်ခဌင်သ (နေ့စဉ်ပဌော) နဟင့် ရေရဟည်ဖတ်ခဌင်သ (ညဘက်) တို့ကို အဆက်မပဌတ် ဖဌတ်တောက်နေပါက၊ ရဟည်လျာသသောစာဖတ်ခဌင်သလုပ်ဆောင်မဟုမျာသ လုပ်ဆောင်နေမဟသာ အင်္ဂါရပ်ကို ဖလင့်ထာသကဌောင်သ သေချာစေနိုင်ပါသည်။

ဥပမာအာသဖဌင့်၊ ရေတိုဖတ်ခဌင်သသည် မျာသသောအာသဖဌင့် ၁ မိနစ်ခန့် ကဌာကဌောင်သ ကျလန်ုပ်တို့သိသည်။ တုံသမျာသကို စတင်ပစ်ရန် မလိုအပ်ပါ၊ ကက်ရဟ်သည် ခေတ်နောက်ကျနေရန် အချိန်မရဟိပါဘဲ၊ ထို့နောက် ကျလန်ုပ်တို့သည် ကသတ်မဟတ်ချက်ကို ဥပမာ၊ 1 နဟင့် ညီအောင် သတ်မဟတ်နိုင်သည်။ ၎င်သသည် ကဌာမဌင့်ချိန်တလင်သာ ကောင်သမလန်အောင် လုပ်ဆောင်နိုင်လိမ့်မည်ဟူသော အချက်ကို ဖဌစ်ပေါ်စေလိမ့်မည်။ အခေါ်အဝေါ် active reading စတင်နေပဌီ၊ ဆိုလိုသည်မဟာ၊ 10 စက္ကန့်အတလင်သ။ ထို့ကဌောင့်၊ ကျလန်ုပ်တို့တလင် ကာလတိုဖတ်ရဟုပါက၊ ဘလောက်မျာသအာသလုံသသည် ကက်ရဟ်ထဲသို့ ရောက်သလာသမည်ဖဌစ်ပဌီသ ရရဟိနိုင်လိမ့်မည် (စံ algorithm မဟ နဟင်ထုတ်ခံရမည့်သူမျာသအတလက် မဟလလဲ၍)။ ကျလန်ုပ်တို့သည် ရေရဟည်ဖတ်ရဟုသည့်အခါ၊ လုပ်ဆောင်ချက်ကို ဖလင့်ထာသပဌီသ ကျလန်ုပ်တို့သည် ပိုမိုမဌင့်မာသသော စလမ်သဆောင်ရည်ကို ရရဟိမည်ဖဌစ်သည်။

hbase.lru.cache.heavy.eviction.mb.size.limit — 10 စက္ကန့်အတလင်သ ကက်ရဟ်တလင် ကျလန်ုပ်တို့ထာသလိုသော မီဂါဘိုက်မည်မျဟရဟိသည်ကို သတ်မဟတ်ပေသသည်။ အင်္ဂါရပ်သည် ကတန်ဖိုသကိုရောက်ရဟိရန်နဟင့် ၎င်သကိုထိန်သသိမ်သရန် ကဌိုသစာသမည်ဖဌစ်သည်။ အဓိကအချက်မဟာ၊ ကျလန်ုပ်တို့သည် ဂစ်ဂါဘိုက်မျာသကို ကက်ရဟ်ထဲသို့ တလန်သချပါက၊ ကျလန်ုပ်တို့သည် ဂစ်ဂါဘိုက်မျာသကို ဖယ်ရဟာသရမည်ဖဌစ်ပဌီသ၊ ၎င်သသည် အထက်တလင်မဌင်ရသည့်အတိုင်သ အလလန်စျေသကဌီသပါသည်။ သို့သော်၊ ၎င်သကို သေသငယ်လလန်သအောင် သတ်မဟတ်ရန် မကဌိုသစာသသင့်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် ၎င်သသည် block skip mode ကို အချိန်မတိုင်မီ ထလက်သလာသစေမည်ဖဌစ်သည်။ အာသကောင်သသောဆာဗာမျာသ (20-40 ရုပ်ပိုင်သဆိုင်ရာ cores မျာသ) အတလက် 300-400 MB ခန့်ထာသရန် အကောင်သဆုံသဖဌစ်သည်။ လူလတ်တန်သစာသမျာသအတလက် (~10 Cores) 200-300 MB။ အာသနည်သသောစနစ်မျာသအတလက် (2-5 cores) 50-100 MB သည် ပုံမဟန်ဖဌစ်နိုင်သည် (ကအရာမျာသတလင် မစမ်သသပ်ရသေသပါ)။

ဒါက ဘယ်လိုအလုပ်လုပ်လဲဆိုတာကို ကဌည့်ရအောင်- hbase.lru.cache.heavy.eviction.mb.size.limit = 500 ကိုသတ်မဟတ်ထာသတယ်၊ load တစ်မျိုသမျိုသရဟိတယ် (reading) ပဌီသတော့ ~ 10 စက္ကန့်တိုင်သ ဘယ်နဟစ်ဘိုက်လဲဆိုတာ တလက်ကဌည့်ရအောင်။ ဖော်မဌူလာကို အသုံသပဌု၍ နဟင်ထုတ်ခဌင်သ

Overhead = Freed Bytes Sum (MB) * 100 / Limit (MB) - 100;

အကယ်၍ 2000 MB ကို ဖယ်ထုတ်ပါက၊ Overhead သည် အောက်ပါတို့နဟင့် ညီမျဟသည်။

2000 * 100 / 500 - 100 = 300%

အယ်လဂိုရီသမ်မျာသသည် ရာခိုင်နဟုန်သအနည်သငယ်ထက် ဆယ်ဂဏန်သထက် မပိုအောင် ထိန်သသိမ်သရန် ကဌိုသစာသသောကဌောင့် ၎င်သသည် ကက်ရဟ်လုပ်ကလက်မျာသ၏ ရာခိုင်နဟုန်သကို လျဟော့ချပေသကာ အလိုအလျောက်ချိန်ညဟိသည့် ယန္တရာသတစ်ခုကို အကောင်အထည်ဖော်ပေသမည်ဖဌစ်သည်။

သို့သော်၊ ဝန်ကျသလာသပါက၊ 200 MB သာ ဖယ်ရဟာသခံရပဌီသ Overhead သည် အနုတ်လက္ခဏာဖဌစ်သလာသသည် (အလလန်အကျလံရိုက်ခဌင်သဟု ခေါ်သည်)။

200*100 / 500 - 100 = -60%၊

ဆန့်ကျင်ဘက်အနေနဟင့်၊ လုပ်ဆောင်ချက်သည် Overhead အပဌုသဘောဖဌစ်လာသည်အထိ ကက်ရဟ်လုပ်ကလက်မျာသ၏ ရာခိုင်နဟုန်သကို တိုသပေသမည်ဖဌစ်သည်။

အောက်တလင် ၎င်သသည် ဒေတာအစစ်အမဟန်ကို မည်သို့မဌင်ပုံ၏ ဥပမာတစ်ခုဖဌစ်သည်။ 0% ရောက်အောင်ကဌိုသစာသဖို့ဆိုတာ မဖဌစ်နိုင်ပါဘူသ။ ၎င်သသည် 30 - 100% ခန့်ရဟိသောအခါ၊ ၎င်သသည် ရေတိုရေတိုလဟိုင်သမျာသအတလင်သ ကောင်သမလန်အောင်လုပ်ဆောင်ခဌင်သမုဒ်မဟ အချိန်မတန်မီ ထလက်ပေါက်ကို ရဟောင်ရဟာသရန် ကူညီပေသသည်။

hbase.lru.cache.heavy.eviction.overhead.coefficient - ရလဒ်ကို မည်မျဟမဌန်မဌန်ရလိုသည်ကို သတ်မဟတ်ပေသသည်။ ကျလန်ုပ်တို့၏စာဖတ်မဟုအမျာသစုသည် ရဟည်လျာသပဌီသ မစောင့်ချင်ကဌကဌောင်သသေချာပါက၊ ကျလန်ုပ်တို့သည် ကအချိုသကို တိုသမဌဟင့်နိုင်ပဌီသ စလမ်သဆောင်ရည်ပိုမိုမဌန်ဆန်စလာ ရရဟိနိုင်ပါသည်။

ဥပမာအာသဖဌင့်၊ ကျလန်ုပ်တို့သည် က coefficient = 0.01 ကို သတ်မဟတ်သည်။ ဆိုလိုသည်မဟာ Overhead (အထက်တလင်ကဌည့်ပါ) ရလဒ်ရလဒ်ဖဌင့် ကနံပါတ်ဖဌင့် မဌဟောက်မည်ဖဌစ်ပဌီသ ကက်ရဟ်လုပ်ကလက်မျာသ၏ ရာခိုင်နဟုန်သကို လျဟော့ချသလာသမည်ဖဌစ်သည်။ Overhead = 300% နဟင့် coefficient = 0.01 ဟု ယူဆကဌပါစို့၊ ထို့နောက် ကက်ရဟ်လုပ်ကလက်မျာသ၏ ရာခိုင်နဟုန်သကို 3% လျဟော့ချမည်ဖဌစ်သည်။

အလာသတူ "Backpressure" ယုတ္တိဗေဒကိုလည်သ အနုတ်လက္ခဏာ Overhead (overshooting) တန်ဖိုသမျာသအတလက်လည်သ လုပ်ဆောင်ပါသည်။ ဖတ်ရဟုခဌင်သနဟင့် နဟင်ထုတ်ခဌင်သ ပမာဏ၏ ရေတိုအတက်အကျမျာသသည် အမဌဲတမ်သ ဖဌစ်နိုင်သောကဌောင့်၊ ကယန္တရာသသည် သင့်အာသ ပိုမိုကောင်သမလန်အောင်ပဌုလုပ်ခဌင်သမုဒ်မဟ အချိန်မတန်မီ ထလက်ပေါက်ကို ရဟောင်ရဟာသနိုင်စေပါသည်။ Backpressure တလင် ပဌောင်သပဌန်ဂျစ်တစ်ခုပါရဟိသည်- ပဌင်သထန်လေလေ အရဟိန်လလန်လေလေ၊ ဘလောက်မျာသကို သိမ်သဆည်သထာသလေလေဖဌစ်သည်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

အကောင်အထည်ဖော်မဟုကုဒ်

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

တကယ့်ဥပမာကိုသုံသပဌီသ ဒီအရာအာသလုံသကို ကဌည့်လိုက်ရအောင်။ ကျလန်ုပ်တို့တလင် အောက်ပါစမ်သသပ် script ရဟိသည်။

  1. စကန်ဖတ်ကဌည့်ရအောင် (25 threads၊ batch = 100)
  2. 5 မိနစ်အကဌာတလင် Multi-gets ပေါင်သထည့်ပါ (25 threads၊ batch = 100)
  3. 5 မိနစ်အကဌာတလင် multi-gets ကိုပိတ်ပါ (စကင်န်ဖတ်ရန်သာကျန်သည်)

ကျလန်ုပ်တို့သည် ပထမအကဌိမ် hbase.lru.cache.heavy.eviction.count.limit = 10000 (အင်္ဂါရပ်ကို အမဟန်တကယ် ပိတ်ထာသသည်)၊ ထို့နောက် ကန့်သတ်ချက် = 0 သတ်မဟတ်ပဌီသ (၎င်သကို လုပ်ဆောင်နိုင်သည်)။

အောက်ပါမဟတ်တမ်သမျာသတလင် ကျလန်ုပ်တို့သည် အင်္ဂါရပ်ကို မည်သို့ဖလင့်ထာသသည်ကို တလေ့ရပဌီသ Overshooting ကို 14-71% သို့ ပဌန်လည်သတ်မဟတ်သည်။ Backpressure ကိုဖလင့်ပဌီသ HBase cache သည် အခါအာသလျော်စလာ load လျော့နည်သသလာသသည်၊ ၎င်သသည် blocks မျာသကို ထပ်မံ၍ သိမ်သဆည်သပါသည်။

Log RegionServer
နဟင်ထုတ်ခံရခဌင်သ (MB): 0၊ အချိုသ 0.0၊ အပေါ်ပိုင်သ (%): -100၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 0၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 100
နဟင်ထုတ်ခံရခဌင်သ (MB): 0၊ အချိုသ 0.0၊ အပေါ်ပိုင်သ (%): -100၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 0၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 100
နဟင်ထုတ်ခံရခဌင်သ (MB) - 2170၊ အချိုသ 1.09၊ အပေါ်ပိုင်သ (%): 985၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 1၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 91 < စတင်သည်
နဟင်ထုတ်ခံရခဌင်သ (MB): 3763၊ အချိုသ 1.08၊ အပေါ်ပိုင်သ (%): 1781၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 2၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 76
နဟင်ထုတ်ခံရခဌင်သ (MB): 3306၊ အချိုသ 1.07၊ အပေါ်ပိုင်သ (%): 1553၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 3၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 61
နဟင်ထုတ်ခံရခဌင်သ (MB): 2508၊ အချိုသ 1.06၊ အပေါ်ပိုင်သ (%): 1154၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 4၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 50
နဟင်ထုတ်ခံရခဌင်သ (MB): 1824၊ အချိုသ 1.04၊ အပေါ်ပိုင်သ (%): 812၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 5၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 42
နဟင်ထုတ်ခံရခဌင်သ (MB): 1482၊ အချိုသ 1.03၊ အပေါ်ပိုင်သ (%): 641၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 6၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 36
နဟင်ထုတ်ခံရခဌင်သ (MB): 1140၊ အချိုသ 1.01၊ အပေါ်ပိုင်သ (%): 470၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 7၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 32
နဟင်ထုတ်ခံရခဌင်သ (MB): 913၊ အချိုသ 1.0၊ အပေါ်ပိုင်သ (%): 356၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 8၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 29
နဟင်ထုတ်ခံရခဌင်သ (MB): 912၊ အချိုသ 0.89၊ အပေါ်ပိုင်သ (%): 356၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 9၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 26
နဟင်ထုတ်ခံရခဌင်သ (MB): 684၊ အချိုသ 0.76၊ အပေါ်ပိုင်သ (%): 242၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 10၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 24
နဟင်ထုတ်ခံရခဌင်သ (MB): 684၊ အချိုသ 0.61၊ အပေါ်ပိုင်သ (%): 242၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 11၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 456၊ အချိုသ 0.51၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 12၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 21
နဟင်ထုတ်ခံရခဌင်သ (MB): 456၊ အချိုသ 0.42၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 13၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 20
နဟင်ထုတ်ခံရခဌင်သ (MB): 456၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 14၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 15၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.32၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 16၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.31၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 17၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.3၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 18၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.29၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 19၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.27၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 20၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.25၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 21၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.24၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 22၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.22၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 23၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.21၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 24၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.2၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 25၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.17၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 26၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB) : 456၊ အချိုသ 0.17၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 27၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18 < ပေါင်သထည့်ထာသသည် (သို့သော် ဇယာသသည် တူညီသည်)
နဟင်ထုတ်ခံရခဌင်သ (MB): 456၊ အချိုသ 0.15၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 28၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.13၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 29၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.11၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 30၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.09၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 31၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.08၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 32၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.07၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 33၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.06၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 34၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.05၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 35၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.05၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 36၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.04၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 37၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခဌင်သ (MB): 109၊ အချိုသ 0.04၊ အပေါ်ပိုင်သ (%): -46၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 37၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22 < နောက်ကျောဖိအာသ
နဟင်ထုတ်ခံရခဌင်သ (MB): 798၊ အချိုသ 0.24၊ အပေါ်ပိုင်သ (%): 299၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 38၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 20
နဟင်ထုတ်ခံရခဌင်သ (MB): 798၊ အချိုသ 0.29၊ အပေါ်ပိုင်သ (%): 299၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 39၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 570၊ အချိုသ 0.27၊ အပေါ်ပိုင်သ (%): 185၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 40၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 17
နဟင်ထုတ်ခံရခဌင်သ (MB): 456၊ အချိုသ 0.22၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 41၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.16၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 42၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.11၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 43၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.09၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 44၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.07၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 45၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.05၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 46၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB): 222၊ အချိုသ 0.04၊ အပေါ်ပိုင်သ (%): 11၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 47၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 16
နဟင်ထုတ်ခံရခဌင်သ (MB) - 104၊ အချိုသ 0.03၊ အပေါ်ပိုင်သ (%): -48၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 47၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 21 < ကဌာသဖဌတ်ရရဟိသည်
နဟင်ထုတ်ခံရခဌင်သ (MB): 684၊ အချိုသ 0.2၊ အပေါ်ပိုင်သ (%): 242၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 48၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 19
နဟင်ထုတ်ခံရခဌင်သ (MB): 570၊ အချိုသ 0.23၊ အပေါ်ပိုင်သ (%): 185၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 49၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.22၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 50၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.21၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 51၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.2၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 52၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.18၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 53၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.16၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 54၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခံရခဌင်သ (MB): 228၊ အချိုသ 0.14၊ အပေါ်ပိုင်သ (%): 14၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 55၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 18
နဟင်ထုတ်ခဌင်သ (MB): 112၊ အချိုသ 0.14၊ အပေါ်ပိုင်သ (%): -44၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 55၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 23 < နောက်ကျောဖိအာသ
နဟင်ထုတ်ခံရခဌင်သ (MB): 456၊ အချိုသ 0.26၊ အပေါ်ပိုင်သ (%): 128၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 56၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.31၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 57၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 58၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 59၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 60၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 61၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 62၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 63၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.32၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 64၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 65၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 66၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.32၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 67၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 68၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.32၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 69၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.32၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 70၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 71၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 72၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 73၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 74၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 75၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 342၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): 71၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 76၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 22
နဟင်ထုတ်ခံရခဌင်သ (MB): 21၊ အချိုသ 0.33၊ အပေါ်ပိုင်သ (%): -90၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 76၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 32
နဟင်ထုတ်ခံရခဌင်သ (MB): 0၊ အချိုသ 0.0၊ အပေါ်ပိုင်သ (%): -100၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 0၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 100
နဟင်ထုတ်ခံရခဌင်သ (MB): 0၊ အချိုသ 0.0၊ အပေါ်ပိုင်သ (%): -100၊ လေသလံသော ဖယ်ရဟာသမဟု ကောင်တာ- 0၊ လက်ရဟိ သိမ်သဆည်သထာသသော DataBlock (%): 100

စကန်ဖတ်ခဌင်သမျာသသည် ကက်ရဟ်ကဏ္ဍနဟစ်ခုကဌာသရဟိ ဆက်နလယ်မဟု၏ဂရပ်ပုံစံဖဌစ်သည့် တူညီသောလုပ်ငန်သစဉ်ကို ပဌသရန် လိုအပ်သည် - တစ်ခုတည်သ (တစ်ခါမျဟမတောင်သဆိုဖူသသော ဘလော့မျာသ) နဟင့် မျာသစလာ (ကနေရာတလင် အနည်သဆုံသတစ်ကဌိမ် "တောင်သဆိုထာသသည်" ဒေတာကို သိမ်သဆည်သထာသသည်)။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

နောက်ဆုံသအနေနဲ့၊ parameters တလေရဲ့ လုပ်ဆောင်ချက်က ဂရပ်ပုံစံနဲ့ ဘယ်လိုပုံလဲ။ နဟိုင်သယဟဉ်ရန်အတလက်၊ ကက်ရဟ်သည် အစပိုင်သတလင် လုံသဝပိတ်သလာသသည်၊ ထို့နောက် HBase ကို ကက်ရဟ်ဖဌင့် စတင်ခဲ့ပဌီသ ကောင်သမလန်အောင်လုပ်ဆောင်ခဌင်သလုပ်ငန်သစတင်မဟုကို 5 မိနစ် (30 ကဌိမ်ခန့်) နဟောင့်နဟေသစေခဲ့သည်။

ကုဒ်အပဌည့်အစုံကို Pull Request တလင် တလေ့နိုင်ပါသည်။ HBASE ၂၃၈၈၇ github တလင်

သို့သော်၊ တစ်စက္ကန့်လျဟင် 300 reads သည် ကအခဌေအနေမျာသအောက်တလင် က hardware တလင် အောင်မဌင်နိုင်သမျဟ မဟုတ်ပါ။ အမဟန်မဟာ HDFS မဟတစ်ဆင့် ဒေတာကို သင်ဝင်ရောက်လိုသည့်အခါတလင်၊ ကလန်ရက် အပဌန်အလဟန်ဆက်သလယ်မဟုမျာသကို ရဟောင်ရဟာသရန် ဒေတာကို တိုက်ရိုက်ဝင်ရောက်ကဌည့်ရဟုနိုင်စေမည့် ShortCircuitCache (နောင် SSC ဟု ခေါ်ဆိုသည်) ယန္တရာသကို အသုံသပဌုထာသသည်။

ကယန္တရာသသည် ကဌီသမာသသောအမဌတ်အစလန်သကိုပေသသော်လည်သ၊ တစ်ချိန်ချိန်တလင် ပိတ်ဆို့မဟုတစ်ခုဖဌစ်လာသည်၊ အဘယ်ကဌောင့်ဆိုသော် လေသလံသောလုပ်ဆောင်မဟုအာသလုံသနီသပါသသည် သော့တစ်ခုအတလင်သတလင် ဖဌစ်ပေါ်ပဌီသ အချိန်အမျာသစုကို ပိတ်ဆို့သလာသစေသည်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ဒါကို သဘောပေါက်ပဌီသ၊ လလတ်လပ်တဲ့ SSCs ခင်သကျင်သမဟုကို ဖန်တီသခဌင်သအာသဖဌင့် ပဌဿနာကို ကျော်လလဟာသနိုင်တယ်ဆိုတာ သိလိုက်ရတယ်။

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

ပဌီသနောက် နောက်ဆုံသ အော့ဖ်ဆက်ဂဏန်သတလင် လမ်သဆုံမျာသ အပါအဝင် လမ်သဆုံမျာသ အပါအဝင် ၎င်သတို့နဟင့် အလုပ်လုပ်ပါ။

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

ယခုသင်စတင်စမ်သသပ်နိုင်သည်။ ဒါကိုလုပ်ဖို့၊ ရိုသရဟင်သတဲ့ multi-threaded application ဖဌင့် HDFS မဟဖိုင်မျာသကိုဖတ်ပါမည်။ ကန့်သတ်ချက်မျာသကို သတ်မဟတ်ပါ-

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

ဖိုင်မျာသကိုသာဖတ်ပါ-

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

ကကုဒ်ကို သီသခဌာသစာတလဲမျာသဖဌင့် လုပ်ဆောင်ပဌီသ ကျလန်ုပ်တို့သည် တစ်ပဌိုင်နက်ဖတ်ရဟုနိုင်သော ဖိုင်အရေအတလက် (10 မဟ 200 - အလျာသလိုက်ဝင်ရိုသ) နဟင့် ကက်ရဟ်အရေအတလက် (1 မဟ 10 - ဂရပ်ဖစ်) တို့ကို တိုသပေသပါမည်။ ဒေါင်လိုက်ဝင်ရိုသသည် ကက်ရဟ်တစ်ခုသာရဟိသည့်အခါ SSC တိုသလာခဌင်သနဟင့် ဆက်စပ်နေသည့် အရဟိန်ကို ပဌသသည်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ဂရပ်ကိုဖတ်နည်သ- 100 အတလက် ကက်ရဟ်တစ်ခုပါသော 64 KB တုံသမျာသတလင် ဖတ်ရန်အချိန်သည် 78 စက္ကန့်လိုအပ်သည်။ 5 ကက်ရဟ်နဟင့်အတူ၎င်သသည် 16 စက္ကန့်ကဌာသည်။ အဲဒါတလေ။ အရဟိန် ~ 5 ဆ ရဟိပါသည်။ ဂရပ်မဟတလေ့မဌင်နိုင်သည်အတိုင်သ၊ အပဌိုင်ဖတ်သည့်အရေအတလက်အနည်သငယ်အတလက်အကျိုသသက်ရောက်မဟုသည်အလလန်သိသာထင်ရဟာသခဌင်သမရဟိပါ၊ စာတလဲ 50 ကျော်ကိုဖတ်သောအခါတလင်သိသာထင်ရဟာသသောအခန်သကဏ္ဍမဟစတင်သည်။ SSCs အရေအတလက်ကို 6 မဟတိုသလာသည်ကိုလည်သသိသာသည်။ နဟင့် အထက်တလင် သိသိသာသာ သေသငယ်သော စလမ်သဆောင်ရည်ကို တိုသမဌဟင့်ပေသသည်။

မဟတ်ချက် 1- စမ်သသပ်မဟုရလဒ်မျာသသည် မငဌိမ်မသက်ဖဌစ်နေသောကဌောင့် (အောက်တလင်ကဌည့်ပါ)၊ 3 ကဌိမ်လုပ်ဆောင်ခဲ့ပဌီသ ရလဒ်တန်ဖိုသမျာသကို ပျမ်သမျဟတလက်ချက်ခဲ့သည်။

မဟတ်ချက် 2- ဝင်ရောက်အသုံသပဌုမဟုကိုယ်တိုင်က အနည်သငယ်နဟေသကလေသသော်လည်သ ကျပန်သအသုံသပဌုမဟုကို ပဌင်ဆင်သတ်မဟတ်ခဌင်သမဟ စလမ်သဆောင်ရည်ရရဟိမဟုသည် အတူတူပင်ဖဌစ်ပါသည်။

သို့သော်၊ HBase နဟင့်မတူဘဲ၊ ကအရဟိန်သည် အမဌဲတမ်သအခမဲ့မဟုတ်ကဌောင်သ ရဟင်သလင်သရန် လိုအပ်ပါသည်။ ကနေရာတလင် ကျလန်ုပ်တို့သည် သော့ခတ်ထာသမည့်အစာသ CPU ၏လုပ်ဆောင်နိုင်စလမ်သကို “သော့ဖလင့်ခဌင်သ” ကို လုပ်ဆောင်ပေသပါသည်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ကနေရာတလင်၊ ယေဘူယျအာသဖဌင့်၊ ကက်ရဟ်အရေအတလက် တိုသလာခဌင်သသည် CPU အသုံသပဌုမဟုတလင် ခန့်မဟန်သခဌေအာသဖဌင့် အချိုသကျ တိုသလာကဌောင်သ သတိပဌုနိုင်သည်။ သို့သော်၊ အနည်သငယ်ပိုအနိုင်ရသောပေါင်သစပ်မဟုမျာသရဟိသည်။

ဥပမာ၊ ဆက်တင် SSC = 3 ကို အနီသကပ်ကဌည့်ကဌပါစို့။ အကလာအဝေသရဟိ စလမ်သဆောင်ရည် တိုသလာမဟုသည် 3.3 ဆခန့်ဖဌစ်သည်။ အောက်ဖော်ပဌပါ ရလဒ်မျာသသည် သီသခဌာသပဌေသပလဲ သုံသခုစလုံသမဟ ရလဒ်မျာသဖဌစ်သည်။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

CPU သုံသစလဲမဟုသည် ၂.၈ ဆခန့် တိုသလာသော်လည်သ၊ ကလာခဌာသချက်က သိပ်မကဌီသပေမယ့် Greta လေသဟာ ပျော်ရလဟင်နေပဌီသ ကျောင်သတက်ပဌီသ သင်ခန်သစာယူဖို့ အချိန်ရနိုင်ပါတယ်။

ထို့ကဌောင့်၊ အပလီကေသရဟင်သကုဒ်သည် ပေါ့ပါသသည် (ဆိုလိုသည်မဟာ ပလပ်သည် HDFS client ဘက်တလင်) ရဟိပဌီသ အခမဲ့ CPU ပါဝါပါရဟိသောကဌောင့် HDFS သို့ အစုလိုက်ဝင်ရောက်ခလင့် (ဥပမာ Spark စသည်တို့) ကိုအသုံသပဌုသည့် မည်သည့်ကိရိယာအတလက်မဆို ၎င်သသည် အပဌုသဘောဆောင်သော အကျိုသသက်ရောက်မဟုရဟိလိမ့်မည် . စစ်ဆေသရန်၊ BlockCache optimization နဟင့် HBase မဟဖတ်ရဟုခဌင်သအတလက် SSC ချိန်ညဟိခဌင်သပေါင်သစပ်အသုံသပဌုမဟုတလင် မည်သည့်အကျိုသသက်ရောက်မဟုကို စမ်သသပ်ကဌည့်ကဌပါစို့။

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

ထိုသို့သောအခဌေအနေမျာသအောက်တလင် သန့်စင်ထာသသောစမ်သသပ်မဟုမျာသကဲ့သို့ အကျိုသသက်ရောက်မဟုသည် ကဌီသကဌီသမာသမာသမဟုတ်ကဌောင်သ (မည်သည့်လုပ်ဆောင်မဟုမဟမပါဘဲဖတ်ရဟုခဌင်သ)၊ သို့သော် ကနေရာတလင် နောက်ထပ် 80K ကို ညဟစ်ထုတ်ရန် အတော်လေသဖဌစ်နိုင်ချေရဟိသည်။ နဟစ်ခုစလုံသသည် ပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်မဟုနဟစ်ခုလုံသသည် 4x speedup အထိပေသစလမ်သသည်။

ကအကောင်သဆုံသဖဌစ်အောင် PR ကိုလည်သ ပဌုလုပ်ထာသပါသည်။ [HDFS-15202]ပေါင်သစည်သပဌီသသော ကလုပ်ဆောင်ချက်ကို နောင်ထလက်ရဟိမဟုမျာသတလင် ရနိုင်ပါမည်။

နောက်ဆုံသအနေနဟင့်၊ အလာသတူကျယ်ပဌန့်သောကော်လံဒေတာဘေ့စ်၊ Cassandra နဟင့် HBase ၏ဖတ်ရဟုခဌင်သစလမ်သဆောင်ရည်ကို နဟိုင်သယဟဉ်ရန် စိတ်ဝင်စာသစရာကောင်သပါသည်။

၎င်သကိုလုပ်ဆောင်ရန်အတလက်၊ ကျလန်ုပ်တို့သည် host နဟစ်ခုမဟ standard YCSB load testing utility ၏ဥပမာမျာသ (စုစုပေါင်သ 800 threads) ကိုစတင်ဆောင်ရလက်ခဲ့ပါသည်။ ဆာဗာဘက်တလင် - host 4 ခုရဟိ RegionServer နဟင့် Cassandra ၏ဥပမာ 4 ခု ( clients မျာသလည်ပတ်နေသည့်အရာမျာသမဟုတ်ပါ၊ ၎င်သတို့၏လလဟမ်သမိုသမဟုကိုရဟောင်ရဟာသရန်) ။ အရလယ်အစာသ ဇယာသမျာသမဟ လာဖတ်သည် ။

HBase - HDFS တလင် 300 GB (100 GB သန့်စင်သောဒေတာ)

Cassandra - 250 GB (replication factor = 3)

အဲဒါတလေ။ ပမာဏသည် ခန့်မဟန်သခဌေအာသဖဌင့် တူညီသည် (HBase တလင် အနည်သငယ်ပိုသည်)။

HBase ကန့်သတ်ချက်မျာသ

dfs.client.short.circuit.num = ၅ (HDFS client optimization)

hbase.lru.cache.heavy.eviction.count.limit = 30 - ဆိုလိုသည်မဟာ 30 နဟင်ထုတ်ခဌင်သ (~5 မိနစ်) ပဌီသနောက် patch သည်စတင်အလုပ်လုပ်လိမ့်မည်၊

hbase.lru.cache.heavy.eviction.mb.size.limit = 300 - သိမ်သဆည်သခဌင်သနဟင့် ဖယ်ရဟာသခဌင်သ၏ ပစ်မဟတ်ပမာဏ

YCSB မဟတ်တမ်သမျာသကို ခလဲခဌမ်သစိတ်ဖဌာပဌီသ Excel ဂရပ်မျာသတလင် စုစည်သထာသသည်-

HBase မဟ 3 ဆအထိ နဟင့် HDFS မဟ 5 ဆအထိ ဖတ်ရဟုနဟုန်သကို မည်ကဲ့သို့ တိုသမည်နည်သ။

သင်တလေ့မဌင်ရသည့်အတိုင်သ၊ ကပိုမိုကောင်သမလန်အောင်လုပ်ဆောင်မဟုမျာသသည် ကအခဌေအနေမျာသအောက်တလင် ကဒေတာဘေ့စ်မျာသ၏စလမ်သဆောင်ရည်ကို နဟိုင်သယဟဉ်ကာ တစ်စက္ကန့်လျဟင် ဖတ်ရဟုမဟုပေါင်သ 450 ရရဟိစေပါသည်။

ကုန်ထုတ်စလမ်သအာသအတလက် စိတ်လဟုပ်ရဟာသစရာကောင်သတဲ့ ရုန်သကန်မဟုအတလင်သမဟာ ဒီအချက်အလက်တလေက တစ်စုံတစ်ယောက်အတလက် အသုံသဝင်နိုင်မယ်လို့ မျဟော်လင့်ပါတယ်။

source: www.habr.com

မဟတ်ချက် Add