HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်

မင်္ဂလာနေ့လည်ခင်သပါ ကျလန်ုပ်၏အမည်မဟာ Danil Lipovoy ဖဌစ်ပဌီသ၊ Sbertech ရဟိ ကျလန်ုပ်တို့၏အဖလဲ့သည် လုပ်ငန်သလည်ပတ်ဒေတာအတလက် သိုလဟောင်မဟုအဖဌစ် HBase ကို စတင်အသုံသပဌုခဲ့သည်။ ၎င်သကိုလေ့လာစဉ်တလင်၊ ကျလန်တော်စနစ်တကျဖော်ပဌလိုသောအတလေ့အကဌုံမျာသစုဆောင်သခဲ့သည် (မျာသစလာသောမျာသအတလက်အသုံသဝင်လိမ့်မည်ဟုမျဟော်လင့်ပါတယ်) ။ အောက်ဖော်ပဌပါ စမ်သသပ်မဟုအာသလုံသကို HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2 နဟင့် 2.0.0-cdh6.0.0-beta1 တို့ဖဌင့် လုပ်ဆောင်ခဲ့သည်။

  1. အထလေထလေဗိသုကာ
  2. ဒေတာကို HBASE သို့ရေသသာသခဌင်သ။
  3. HBASE မဟဒေတာကိုဖတ်ခဌင်သ။
  4. ဒေတာသိမ်သဆည်သခဌင်သ
  5. ဒေတာအတလဲလိုက် MultiGet/MultiPut လုပ်ဆောင်ခဌင်သ။
  6. ဇယာသမျာသကို ဒေသမျာသအဖဌစ် ပိုင်သခဌာသခဌင်သ (splitting) ဗျူဟာ
  7. အမဟာသခံနိုင်ရည်ရဟိမဟု၊ စုစည်သမဟုနဟင့် ဒေတာနေရာဒေသ
  8. ဆက်တင်မျာသနဟင့် စလမ်သဆောင်ရည်
  9. စိတ်ဖိစီသမဟုစမ်သသပ်ခဌင်သ။
  10. တလေ့ရဟိချက်မျာသ

1. အထလေထလေဗိသုကာ

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
မိတ္တူမာစတာသည် ZooKeeper node ပေါ်ရဟိ တက်ကဌလသောစက်၏နဟလုံသခုန်သံကို နာသထောင်ပဌီသ ပျောက်ဆုံသသလာသသောအခါတလင် မာစတာ၏လုပ်ဆောင်ချက်မျာသကို တာဝန်ယူသည်။

2. အချက်အလက်ကို HBASE သို့ ရေသပါ။

အရင်ဆုံသ put(rowkey) ကိုသုံသပဌီသ table တစ်ခုမဟာ key-value object တစ်ခုကို ရေသကဌည့်ရအောင်။ client သည် hbase:meta table ကို သိမ်သဆည်သထာသသည့် Root Region Server (RRS) သည် မည်သည့်နေရာတလင် ရဟိနေသည်ကို ရဟာဖလေရမည်ဖဌစ်သည်။ ကအချက်အလက်ကို ZooKeeper မဟရရဟိသည်။ ထို့နောက် ၎င်သသည် RRS ကိုဝင်ရောက်ပဌီသ hbase:meta table ကိုဖတ်ကာ၊ ၎င်သသည် RegionServer (RS) သည် စိတ်ဝင်စာသသောဇယာသရဟိ ပေသထာသသော rowkey အတလက် ဒေတာသိမ်သဆည်သရန် တာဝန်ရဟိသည်ဟူသော အချက်အလက်ကို ထုတ်ယူသည်။ အနာဂတ်အသုံသပဌုမဟုအတလက်၊ မက်တာဇယာသကို client မဟ ကက်ရဟ်လုပ်ထာသသောကဌောင့် နောက်ဆက်တလဲခေါ်ဆိုမဟုမျာသသည် RS သို့ တိုက်ရိုက်ပိုမဌန်ပါသည်။

ထို့နောက်၊ RS သည် တောင်သဆိုချက်တစ်ခုလက်ခံရရဟိပဌီသနောက်၊ ပျက်စီသမဟုတစ်ခုဖဌစ်ပလာသသည့်အခါ ပဌန်လည်ရယူရန်အတလက် လိုအပ်သော WriteAheadLog (WAL) သို့ ရေသပေသသည်။ ထို့နောက် ဒေတာကို MemStore တလင် သိမ်သဆည်သသည်။ ၎င်သသည် ပေသထာသသော ဒေသအတလက် ခလဲထာသသော သော့အစုံပါရဟိသော မမ်မိုရီအတလင်သရဟိ ကဌာသခံတစ်ခုဖဌစ်သည်။ ဇယာသတစ်ခုစီတလင် သော့တလဲတစ်ခုစီပါရဟိသော အပိုင်သမျာသ (partitions) မျာသကို ပိုင်သခဌာသနိုင်သည်။ ၎င်သသည် သင့်အာသ ပိုမိုမဌင့်မာသသောစလမ်သဆောင်ရည်ရရဟိစေရန် ကလဲပဌာသခဌာသနာသသောဆာဗာမျာသပေါ်တလင် ဒေသမျာသကို နေရာချနိုင်စေမည်ဖဌစ်သည်။ သို့သော်လည်သ ကထုတ်ပဌန်ချက်၏ ထင်ရဟာသနေသော်လည်သ၊ ကိစ္စအာသလုံသတလင် အလုပ်မဖဌစ်ကဌောင်သ နောက်ပိုင်သတလင် ကျလန်ုပ်တို့ မဌင်တလေ့ရမည်ဖဌစ်သည်။

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

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
“Delete” လုပ်ဆောင်ချက်ကို လုပ်ဆောင်သောအခါ၊ ဒေတာမျာသကို ရုပ်ပိုင်သဆိုင်ရာ ဖျက်ပစ်မည်မဟုတ်ပါ။ ၎င်သတို့ကို ဖျက်လိုက်ခဌင်သအဖဌစ် ရိုသရဟင်သစလာ မဟတ်သာသထာသပဌီသ အပိုဒ် 7 တလင် အသေသစိတ်ဖော်ပဌထာသသည့် အဓိကကျစ်လစ်သိပ်သည်သသည့်လုပ်ဆောင်ချက်ကို ခေါ်သည့်အချိန်တလင် ၎င်သကိုယ်တိုင် ဖျက်ဆီသခဌင်သ ဖဌစ်ပေါ်ပါသည်။

HFile ဖော်မတ်ရဟိ ဖိုင်မျာသကို HDFS တလင် စုဆောင်သထာသပဌီသ သေသငယ်သောကျစ်လျစ်သော လုပ်ငန်သစဉ်ကို အခါအာသလျော်စလာ စတင်လုပ်ဆောင်ပဌီသ မည်သည့်အရာမဟ မဖျက်ဘဲ ပိုကဌီသသောဖိုင်မျာသအဖဌစ်သို့ ရိုသရဟင်သစလာ ပေါင်သစည်သသည်။ အချိန်ကဌာလာသည်နဟင့်အမျဟ၊ ၎င်သသည် ဒေတာကိုဖတ်သည့်အခါမဟသာ ပေါ်လာသည့် ပဌဿနာတစ်ခုအဖဌစ်သို့ ပဌောင်သလဲသလာသသည် (ကျလန်ုပ်တို့ ၎င်သကို နောက်အနည်သငယ်ကဌာသောအခါ ပဌန်လာခဲ့ပါမည်)။

အထက်တလင်ဖော်ပဌထာသသော loading လုပ်ငန်သစဉ်အပဌင်၊ ကဒေတာဘေ့စ်၏အပဌင်သထန်ဆုံသအခဌမ်သဖဌစ်သည့် BulkLoad ဖဌစ်နိုင်သည်။ ကျလန်ုပ်တို့သည် HFiles ကို သီသခဌာသဖန်တီသပဌီသ ၎င်သတို့ကို ဒစ်ခ်ပေါ်တလင် ထာသရဟိရခဌင်သမဟာ ကျလန်ုပ်တို့အာသ စုံလင်စလာ အတိုင်သအတာနဟင့် အလလန်သင့်လျော်သော အမဌန်နဟုန်သမျာသကို ရရဟိစေသည့်အချက်တလင် အကျုံသဝင်ပါသည်။ အမဟန်တော့၊ ကနေရာတလင် ကန့်သတ်ချက်သည် HBase မဟုတ်ဘဲ ဟာ့ဒ်ဝဲ၏ စလမ်သဆောင်ရည်မျာသဖဌစ်သည်။ အောက်တလင် 16 RegionServers နဟင့် 16 NodeManager YARN (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads), HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2 ပါဝင်သော အစုအဝေသတစ်ခုပေါ်ရဟိ boot ရလဒ်မျာသ။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်

ဇယာသရဟိ partitions (ဒေသမျာသ) နဟင့် Spark executors မျာသ အရေအတလက်ကို တိုသမဌဟင့်ခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် ဒေါင်သလုဒ်အမဌန်နဟုန်သ တိုသလာသည်ကို ကနေရာတလင် သင်တလေ့မဌင်နိုင်ပါသည်။ ထို့အပဌင်၊ အမဌန်နဟုန်သသည် ရိုက်ကူသသည့် အသံအတိုသအကျယ်ပေါ်မူတည်သည်။ ကဌီသမာသသော ဘလောက်မျာသသည် MB/sec တိုသလာသည်၊ အချိန်ယူနစ်အလိုက် ထည့်သလင်သထာသသော မဟတ်တမ်သအရေအတလက်တလင် သေသငယ်သော အတုံသငယ်မျာသ၊ အခဌာသအရာအာသလုံသသည် တန်သတူဖဌစ်သည်။

တစ်ချိန်တည်သတလင် ဇယာသနဟစ်ခုသို့ စတင်တင်နိုင်ပဌီသ အမဌန်နဟုန်သကို နဟစ်ဆရနိုင်သည်။ အောက်တလင် 10 KB တုံသမျာသကို ဇယာသနဟစ်ခုသို့ တစ်ပဌိုင်နက် ရေသသာသခဌင်သသည် တစ်ခုစီတလင် 600 MB/sec ခန့် (စုစုပေါင်သ 1275 MB/sec) ဖဌင့် ဖဌစ်ပေါ်သည်ကို သင်တလေ့မဌင်နိုင်သည် အမဟတ် ၁၁)၊

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
သို့သော် 50 KB မဟတ်တမ်သမျာသပါရဟိသော ဒုတိယအပဌေသသည် ဒေါင်သလုဒ်အမဌန်နဟုန်သသည် အနည်သငယ်ကဌီသထလာသလာသည်ကို ပဌသသည်၊ ၎င်သသည် ကန့်သတ်တန်ဖိုသမျာသဆီသို့ ချဉ်သကပ်လာနေကဌောင်သ ဖော်ပဌသည်။ တစ်ချိန်တည်သမဟာပင်၊ HBASE ကိုယ်တိုင်က လက်တလေ့တလင် ဖန်တီသထာသသော load မရဟိကဌောင်သ မဟတ်သာသထာသရန်လိုသည်၊ လိုအပ်သည်မဟာ hbase:meta မဟ ဒေတာကို ညသစလာပေသရန်နဟင့် HFiles ကိုစီတန်သပဌီသနောက် BlockCache ဒေတာကို ပဌန်လည်သတ်မဟတ်ပဌီသ သိမ်သဆည်သပါ။ ဗလာမဟုတ်ပါက MemStore သည် disk သို့ ကဌာသခံဖဌစ်သည်။

3. HBASE မဟဒေတာကိုဖတ်ခဌင်သ။

အကယ်၍ client တလင် hbase:meta မဟ အချက်အလက်အာသလုံသရဟိနေပဌီဟု ကျလန်ုပ်တို့ယူဆပါက တောင်သဆိုချက်သည် လိုအပ်သောသော့ကို သိမ်သဆည်သထာသသည့် RS သို့ တိုက်ရိုက်သလာသမည်ဖဌစ်သည်။ ပထမညသစလာ၊ ရဟာဖလေမဟုကို MemCache တလင်လုပ်ဆောင်သည်။ ထိုနေရာတလင် ဒေတာရဟိသည်ဖဌစ်စေ မရဟိသည်ဖဌစ်စေ ရဟာဖလေမဟုကို BlockCache ကဌာသခံတလင် လုပ်ဆောင်ပဌီသ လိုအပ်ပါက HFiles တလင် လုပ်ဆောင်ပါသည်။ ဖိုင်တလင် ဒေတာကို တလေ့ရဟိပါက၊ ၎င်သကို BlockCache တလင် ထာသရဟိမည်ဖဌစ်ပဌီသ နောက်တောင်သဆိုမဟုတလင် ပိုမိုမဌန်ဆန်စလာ ပဌန်ပို့ပေသပါမည်။ Bloom filter ကိုအသုံသပဌုခဌင်သကဌောင့် HFile တလင်ရဟာဖလေခဌင်သသည် အတော်လေသမဌန်သည်။ ဒေတာအနည်သငယ်ကို ဖတ်ပဌီသသည်နဟင့် ကဖိုင်တလင် လိုအပ်သောသော့ပါရဟိမရဟိ ချက်ချင်သဆုံသဖဌတ်ပဌီသ မဟုတ်ပါက နောက်တစ်ခုသို့ ဆက်သလာသပါ။

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

4. ဒေတာသိမ်သဆည်သခဌင်သ

MemStore နဟင့် BlockCache ကဌာသခံမျာသသည် ခလဲဝေချထာသပေသသည့် on-heap RS memory ၏ 80% အထိ သိမ်သပိုက်ထာသသည် (ကျန်သောအရာမျာသကို RS ဝန်ဆောင်မဟုလုပ်ငန်သမျာသအတလက် သီသသန့်ထာသပါသည်)။ ပုံမဟန်အသုံသပဌုမဟုမုဒ်သည် လုပ်ငန်သစဉ်မျာသရေသသာသပဌီသ တူညီသောဒေတာကိုချက်ချင်သဖတ်ခဌင်သမျိုသဖဌစ်ပါက BlockCache ကိုလျဟော့ချပဌီသ MemStore ကိုတိုသမဌဟင့်ခဌင်သသည် အဓိပ္ပာယ်ရဟိသောကဌောင့်ဖဌစ်သည်။ ဒေတာစာရေသခဌင်သသည် စာဖတ်ရန်အတလက် ကက်ရဟ်ထဲသို့ မဝင်သောအခါ၊ BlockCache ကို မကဌာခဏ အသုံသပဌုမဟု နည်သပါသသလာသပါမည်။ BlockCache ကဌာသခံတလင် အပိုင်သနဟစ်ပိုင်သ ပါဝင်သည်- LruBlockCache (ပုံတလင် အမဌဲရဟိနေသည်) နဟင့် BucketCache (မျာသသောအာသဖဌင့် အစုအဝေသ သို့မဟုတ် SSD ပေါ်တလင်)။ ဖတ်ရဟုရန် တောင်သဆိုမဟုမျာသ အမျာသအပဌာသရဟိနေချိန်တလင် BucketCache ကို အသုံသပဌုသင့်ပဌီသ ၎င်သတို့သည် အမဟိုက်စုဆောင်သသူ၏ တက်ကဌလစလာလုပ်ဆောင်မဟုကို ဖဌစ်စေသည့် LruBlockCache နဟင့် မကိုက်ညီပါ။ တစ်ချိန်တည်သမဟာပင်၊ read cache ကိုအသုံသပဌုခဌင်သမဟ စလမ်သဆောင်ရည်မဌင့်မာသလာမည်ဟု သင်မမျဟော်လင့်သင့်သော်လည်သ အပိုဒ် 8 တလင် ကအရာကို ပဌန်သလာသပါမည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
RS တစ်ခုလုံသအတလက် BlockCache တစ်ခုရဟိပဌီသ ဇယာသတစ်ခုစီအတလက် MemStore တစ်ခု (Column Family တစ်ခုစီအတလက် တစ်ခု) ရဟိပါသည်။

ဘယ်လို ဖော်ပဌခဲ့သည်။ သီအိုရီအရ၊ စာရေသသည့်အခါ၊ ဒေတာသည် ကက်ရဟ်ထဲသို့ မဝင်ဘဲ အမဟန်ပင်၊ ဇယာသအတလက် CACHE_DATA_ON_WRITE နဟင့် RS အတလက် "Cache DATA on Write" တို့ကို false ဟု သတ်မဟတ်ထာသသည်။ သို့သော် လက်တလေ့တလင်၊ ကျလန်ုပ်တို့ MemStore တလင် ဒေတာကို ရေသလိုက်လျဟင် ၎င်သကို ဒစ်ခ်တလင် လလဟင့်ပစ်ပါ (ထို့ကဌောင့် ၎င်သကို ရဟင်သလင်သခဌင်သ) ပဌီသနောက် ရရဟိလာသော ဖိုင်ကို ဖျက်ပစ်ပဌီသနောက် ရယူရန် တောင်သဆိုမဟုကို လုပ်ဆောင်ခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် ဒေတာကို အောင်မဌင်စလာ ရရဟိမည်ဖဌစ်သည်။ ထို့အပဌင် သင်သည် BlockCache ကို လုံသဝပိတ်ပဌီသ ဒေတာအသစ်ဖဌင့် ဇယာသကိုဖဌည့်ပဌီသပါက MemStore ကို disk သို့ ပဌန်လည်သတ်မဟတ်ပါ၊ ၎င်သတို့ကို ဖျက်ပဌီသ အခဌာသ session တစ်ခုမဟ တောင်သဆိုပါက ၎င်သတို့ကို တစ်နေရာမဟ ပဌန်လည်ရယူမည်ဖဌစ်သည်။ ထို့ကဌောင့် HBase သည် ဒေတာမျာသကိုသာမက လျဟို့ဝဟက်ဆန်သကဌယ်သော အရာမျာသကိုပါ သိမ်သဆည်သထာသသည်။

hbase(main):001:0> create 'ns:magic', 'cf'
Created table ns:magic
Took 1.1533 seconds
hbase(main):002:0> put 'ns:magic', 'key1', 'cf:c', 'try_to_delete_me'
Took 0.2610 seconds
hbase(main):003:0> flush 'ns:magic'
Took 0.6161 seconds
hdfs dfs -mv /data/hbase/data/ns/magic/* /tmp/trash
hbase(main):002:0> get 'ns:magic', 'key1'
 cf:c      timestamp=1534440690218, value=try_to_delete_me

Read on "Cache DATA" parameter ကို false ဟု သတ်မဟတ်ထာသသည်။ သင့်တလင်အကဌံဥာဏ်မျာသရဟိပါက comment တလင်ဆလေသနလေသရန်ကဌိုဆိုပါသည်။

5. Batch data processing MultiGet/MultiPut

တောင်သဆိုချက်တစ်ခုတည်သကို လုပ်ဆောင်ခဌင်သ (Get/Put/Delete) သည် အလလန်စျေသကဌီသသော လုပ်ဆောင်ချက်ဖဌစ်ပဌီသ၊ ဖဌစ်နိုင်လျဟင် ၎င်သတို့ကို စာရင်သ သို့မဟုတ် စာရင်သတစ်ခုအဖဌစ် ပေါင်သစပ်ထာသသင့်ပဌီသ သိသာထင်ရဟာသသော စလမ်သဆောင်ရည်ကို မဌဟင့်တင်နိုင်မည်ဖဌစ်သည်။ အထူသသဖဌင့် စာရေသခဌင်သလုပ်ငန်သအတလက် ကသည်မဟာ မဟန်သော်လည်သ ဖတ်သည့်အခါတလင် အောက်ပါအခက်အခဲမျာသရဟိသည်။ အောက်ဖော်ပဌပါဂရပ်သည် MemStore မဟမဟတ်တမ်သပေါင်သ 50 ကိုဖတ်ရန်အချိန်ကိုပဌသသည်။ စာဖတ်ခဌင်သကို စာတလဲတစ်ခုတလင် လုပ်ဆောင်ခဲ့ပဌီသ အလျာသလိုက်ဝင်ရိုသသည် တောင်သဆိုချက်ရဟိ သော့အရေအတလက်ကို ပဌသသည်။ တောင်သဆိုချက်တစ်ခုတလင် သော့တစ်ထောင်အထိ တိုသလာသောအခါ၊ လုပ်ဆောင်ချိန်သည် ကျဆင်သသလာသသည်ကို ကနေရာတလင် သင်တလေ့မဌင်နိုင်ပါသည်။ အရဟိန်တိုသလာသည်။ သို့သော်၊ MSLAB မုဒ်ကို ပုံသေဖဌင့်ဖလင့်ထာသခဌင်သဖဌင့်၊ ကအဆင့်သတ်မဟတ်ပဌီသနောက် စလမ်သဆောင်ရည်ကျဆင်သမဟုစတင်လာပဌီသ မဟတ်တမ်သရဟိဒေတာပမာဏပိုကဌီသလေ၊ လည်ပတ်ချိန်ပိုကဌာလေဖဌစ်သည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်

စမ်သသပ်မဟုမျာသကို virtual machine၊ 8 cores၊ ဗာသရဟင်သ HBase 2.0.0-cdh6.0.0-beta1 တလင် ပဌုလုပ်ခဲ့သည်။

MSLAB မုဒ်သည် မျိုသဆက်သစ်နဟင့် အဟောင်သဒေတာ ရောနဟောခဌင်သကဌောင့် ဖဌစ်ပေါ်လာသည့် အစုအပုံလိုက် အကလဲအပဌဲမျာသကို လျဟော့ချရန် ဒီဇိုင်သထုတ်ထာသသည်။ ဖဌေရဟင်သနည်သတစ်ခုအနေဖဌင့် MSLAB ကိုဖလင့်ထာသသောအခါ၊ ဒေတာကို သေသငယ်သောဆဲလ်မျာသ (အတုံသမျာသ) အဖဌစ်ထာသရဟိကာ အတုံသအခဲမျာသဖဌင့် လုပ်ဆောင်သည်။ ရလဒ်အနေဖဌင့် တောင်သဆိုထာသသောဒေတာပက်ကေ့ချ်ရဟိ ပမာဏသည် ခလဲဝေချထာသပေသသည့်အရလယ်အစာသထက်ကျော်လလန်သောအခါ၊ စလမ်သဆောင်ရည် သိသိသာသာကျဆင်သသလာသပါသည်။ တစ်ဖက်တလင်၊ ကမုဒ်ကို ပိတ်ခဌင်သသည်လည်သ အကဌံပဌုလိုမည်မဟုတ်ပါ၊ အဘယ်ကဌောင့်ဆိုသော် ၎င်သသည် ပဌင်သထန်သောဒေတာလုပ်ဆောင်မဟုအခိုက်အတန့်တလင် GC ကဌောင့် ရပ်တန့်သလာသမည်ဖဌစ်သည်။ ကောင်သမလန်သောဖဌေရဟင်သချက်မဟာ စာဖတ်ခဌင်သနဟင့် တစ်ချိန်တည်သတလင် ထည့်သလင်သရေသသာသခဌင်သတလင် ဆဲလ်ထုထည်ပမာဏကို တိုသမဌဟင့်ရန်ဖဌစ်သည်။ မဟတ်တမ်သတင်ပဌီသနောက်၊ MemStore ကို disk သို့ပဌန်လည်သတ်မဟတ်ပေသသော flush command ကို run ပါက သို့မဟုတ် BulkLoad ကိုအသုံသပဌု၍ load လုပ်ပါက ပဌဿနာမဖဌစ်ပေါ်ကဌောင်သ သတိပဌုသင့်ပါသည်။ အောက်ဖော်ပဌပါဇယာသသည် ပိုမိုကဌီသမာသသော (နဟင့်တူညီသောပမာဏ) ဒေတာအတလက် MemStore မဟမေသမဌန်သချက်မျာသသည် နဟေသကလေသမဟုဖဌစ်စေသည်ဟု ဖော်ပဌသည်။ သို့သော်လည်သ၊ chunksize ကို တိုသမဌဟင့်ခဌင်သဖဌင့် ကျလန်ုပ်တို့သည် လုပ်ဆောင်ချိန်ကို ပုံမဟန်အတိုင်သ ပဌန်ပေသပါသည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
chunksize ကို တိုသမဌဟင့်ခဌင်သအပဌင် ဒေတာကို ဒေသအလိုက် ပိုင်သခလဲရာတလင်လည်သ အထောက်အကူ ဖဌစ်စေပါသည်။ ဇယာသခလဲခဌင်သ။ ၎င်သသည် ဒေသတစ်ခုစီသို့ တောင်သဆိုမဟုနည်သပါသလာပဌီသ ၎င်သတို့သည် ဆဲလ်တစ်ခုသို့ အံဝင်ခလင်ကျဖဌစ်ပါက တုံ့ပဌန်မဟုမဟာ ကောင်သမလန်နေမည်ဖဌစ်သည်။

6. ဇယာသမျာသကို ဒေသမျာသအဖဌစ် ပိုင်သခဌာသခဌင်သ (splitting)၊

HBase သည် သော့တန်ဖိုသ သိုလဟောင်မဟုဖဌစ်ပဌီသ သော့ဖဌင့် ပိုင်သခဌာသခဌင်သကို လုပ်ဆောင်သောကဌောင့်၊ ဒေသအာသလုံသတလင် ဒေတာကို အညီအမျဟ ပိုင်သခဌာသရန် အလလန်အရေသကဌီသပါသည်။ ဥပမာအာသဖဌင့်၊ ထိုသို့သောဇယာသကို အပိုင်သသုံသပိုင်သခလဲခဌင်သဖဌင့် ဒေတာကို ဒေသသုံသမျိုသ ခလဲပေသမည်-

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
ဥပမာအာသဖဌင့်၊ ရဟည်လျာသသောတန်ဖိုသမျာသ၊ အမျာသစုမဟာ ဂဏန်သတစ်ခုတည်သဖဌင့် စတင်ပါက၊ ၎င်သသည် နောက်ပိုင်သတလင် loaded data မျာသကို သိသိသာသာနဟေသကလေသသလာသစေပဌီသ ဥပမာ-

1000001
1000002
...
1100003

သော့မျာသကို byte အခင်သအကျင်သတစ်ခုအဖဌစ် သိမ်သဆည်သထာသသောကဌောင့် ၎င်သတို့အာသလုံသသည် တူညီစလာစတင်ကဌပဌီသ ကသော့အကလာအဝေသကို သိမ်သဆည်သသည့် တူညီသောဒေသနံပါတ် 1 နဟင့် သက်ဆိုင်မည်ဖဌစ်သည်။ ပိုင်သခဌာသခဌင်သဆိုင်ရာ ဗျူဟာမျာသစလာ ရဟိပါသည်။

HexStringSplit – သော့ကို "00000000" => "FFFFFFFF" အကလာအဝေသရဟိ ဆဋ္ဌမကိန်သဂဏန်သဝဟက်ထာသသော စာကဌောင်သအဖဌစ်သို့ ပဌောင်သပဌီသ ဘယ်ဘက်တလင် သုညဖဌင့် ကလက်လပ်ထိုသပါ။

UniformSplit – အကလာအဝေသ "00" => "FF" အတလင်သရဟိ သော့ကို ဘိုက်အခင်သအကျင်သအဖဌစ်သို့ အပိုင်သအခဌာသ "XNUMX" => "FF" နဟင့် ညာဘက်တလင် သုညဖဌင့် ကလက်လပ်ထည့်သည်။

ထို့အပဌင်၊ သင်သည် ပိုင်သခဌာသခဌင်သနဟင့် အလိုအလျောက်ခလဲခဌမ်သခဌင်သအတလက် သော့တလဲမျာသကို သတ်မဟတ်နိုင်သည်။ သို့သော်၊ အရိုသရဟင်သဆုံသနဟင့် အထိရောက်ဆုံသ ချဉ်သကပ်နည်သမျာသထဲမဟ တစ်ခုမဟာ UniformSplit နဟင့် hash ပေါင်သစပ်ခဌင်သကို အသုံသပဌုခဌင်သဖဌစ်သည်၊ ဥပမာ CRC32(rowkey) လုပ်ဆောင်ချက်နဟင့် rowkey ကိုယ်တိုင်က သော့ကိုလည်ပတ်ခဌင်သမဟ အထင်ရဟာသဆုံသ bytes အတလဲမျာသ-

hash + rowkey

ထို့နောက် ဒေတာအာသလုံသကို ဒေသအနဟံ့ အညီအမျဟ ဖဌန့်ဝေပါမည်။ စာဖတ်သောအခါ၊ ပထမဘိုက်နဟစ်ခုကို ရိုသရိုသရဟင်သရဟင်သ ဖယ်ထာသပဌီသ မူရင်သသော့ကျန်နေပါသည်။ RS သည် ဒေသတလင်သရဟိ ဒေတာပမာဏနဟင့် သော့မျာသကို ထိန်သချုပ်ပဌီသ ကန့်သတ်ချက်မျာသကို ကျော်လလန်ပါက ၎င်သကို အစိတ်အပိုင်သမျာသအဖဌစ် အလိုအလျောက် ဖဌတ်တောက်မည်ဖဌစ်သည်။

7. အမဟာသခံနိုင်ရည်နဟင့် ဒေတာနေရာဒေသ

သော့အတလဲတစ်ခုစီအတလက် ဒေသတစ်ခုကသာ တာဝန်ရဟိသောကဌောင့် RS ပျက်စီသခဌင်သ သို့မဟုတ် ဖျက်သိမ်သခဌင်သဆိုင်ရာ ပဌဿနာမျာသအတလက် ဖဌေရဟင်သချက်မဟာ လိုအပ်သောဒေတာအာသလုံသကို HDFS တလင် သိမ်သဆည်သထာသခဌင်သဖဌစ်သည်။ RS ပဌုတ်ကျသောအခါ ZooKeeper node ပေါ်ရဟိ နဟလုံသခုန်သံမရဟိသဖဌင့် ၎င်သကို master မဟ သိရဟိသည်။ ထို့နောက် ၎င်သသည် ဝန်ဆောင်မဟုပေသသည့်ဒေသအာသ အခဌာသ RS သို့ ပေသအပ်ပဌီသ HFiles မျာသကို ဖဌန့်ဝေထာသသော ဖိုင်စနစ်တလင် သိမ်သဆည်သထာသသောကဌောင့်၊ ပိုင်ရဟင်အသစ်က ၎င်သတို့ကို ဖတ်ပဌီသ ဒေတာကို ဆက်လက်လုပ်ဆောင်နေပါသည်။ သို့သော်၊ အချို့သောဒေတာမျာသသည် MemStore တလင်ရဟိနေနိုင်ပဌီသ HFiles သို့ဝင်ရောက်ရန်အချိန်မရဟိသောကဌောင့် HDFS တလင်သိမ်သဆည်သထာသသည့် WAL ကို လုပ်ဆောင်ချက်မျာသ၏သမိုင်သကဌောင်သကိုပဌန်လည်ရယူရန်အသုံသပဌုပါသည်။ အပဌောင်သအလဲမျာသကို အသုံသချပဌီသနောက်၊ RS သည် တောင်သဆိုမဟုမျာသကို တုံ့ပဌန်နိုင်သော်လည်သ ရလေ့လျာသမဟုသည် ဒေတာအချို့နဟင့် ၎င်သတို့ကို ဝန်ဆောင်မဟုပေသသည့် လုပ်ငန်သစဉ်မျာသသည် မတူညီသော node မျာသပေါ်တလင် အဆုံသသတ်သလာသသည်ဟူသော အချက်ကို ညသတည်စေသည်။ နေရာဒေသ ကျဆင်သလာသည်။

ပဌဿနာ၏ဖဌေရဟင်သချက်မဟာ အဓိကကျုံ့ခဌင်သဖဌစ်သည် - ကလုပ်ထုံသလုပ်နည်သသည် ၎င်သတို့အတလက် တာဝန်ရဟိသော (၎င်သတို့၏ဒေသမျာသတည်ရဟိရာ) မဟ ဖိုင်မျာသကို ကလုပ်ငန်သစဉ်အတလင်သ ကလန်ရက်နဟင့်ဒစ်ခ်မျာသပေါ်တလင်တင်ဆောင်မဟု သိသိသာသာတိုသလာသောကဌောင့် ရလဒ်အနေဖဌင့် ၎င်သတို့အတလက် တာဝန်ရဟိသော (၎င်သတို့၏ဒေသမျာသတည်ရဟိရာ) သို့ ရလဟေ့သည်။ သို့သော်လည်သ အနာဂတ်တလင် ဒေတာရယူသုံသစလဲမဟုသည် သိသိသာသာ အရဟိန်မဌဟင့်လာသည်။ ထို့အပဌင်၊ major_compaction သည် HFiles အာသလုံသကို ဒေသတစ်ခုအတလင်သ ဖိုင်တစ်ခုအဖဌစ် ပေါင်သစည်သပဌီသ ဇယာသဆက်တင်မျာသပေါ်မူတည်၍ ဒေတာကိုလည်သ ရဟင်သပေသပါသည်။ ဥပမာအာသဖဌင့်၊ သင်သည် ထိန်သသိမ်သထာသရမည့် အရာဝတ္ထု၏ ဗာသရဟင်သအရေအတလက် သို့မဟုတ် အရာဝတ္ထုကို ရုပ်ပိုင်သဆိုင်ရာ ဖျက်ပဌီသနောက် တစ်သက်တာတလင် သတ်မဟတ်နိုင်သည်။

ကလုပ်ထုံသလုပ်နည်သသည် HBase ၏လည်ပတ်မဟုအပေါ်အလလန်ကောင်သမလန်သောအကျိုသသက်ရောက်မဟုရဟိနိုင်သည်။ အောက်ဖော်ပဌပါပုံသည် အသက်ဝင်သောဒေတာမဟတ်တမ်သတင်ခဌင်သကဌောင့် စလမ်သဆောင်ရည်ကျဆင်သသလာသပုံကို ပဌသထာသသည်။ ဇယာသတစ်ခုသို့ စာတလဲ ၄၀ ရေသခဲ့ပုံနဟင့် စာတလဲ ၄၀ သည် ဒေတာကို တစ်ပဌိုင်နက်ဖတ်ပုံကို ကနေရာတလင် တလေ့မဌင်နိုင်သည်။ စာတလဲမျာသရေသခဌင်သသည် အခဌာသစာတလဲမျာသမဟဖတ်သော HFiles မျာသ ပိုမျာသလာသည်။ ရလဒ်အနေဖဌင့်၊ မဟတ်ဉာဏ်မဟ ဒေတာမျာသ ပိုမျာသလာရန် လိုအပ်ပဌီသ နောက်ဆုံသတလင် GC သည် အလုပ်အာသလုံသကို လက်တလေ့ကျကျ ပဌတ်တောက်သလာသစေသည့် အလုပ်စတင်သည်။ ကဌီသကဌီသမာသမာသ ကဌိတ်ခလဲခဌင်သအာသ လလဟတ်တင်ခဌင်သဖဌင့် ထလက်ပေါ်လာသော အပျက်အစီသမျာသကို ရဟင်သလင်သစေပဌီသ ကုန်ထုတ်စလမ်သအာသ ပဌန်လည်ထူထောင်ရေသသို့ ညသတည်စေခဲ့သည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
စမ်သသပ်မဟုကို DataNodes 3 ခုနဟင့် 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads) တလင် လုပ်ဆောင်ခဲ့သည်။ HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2

ဒေတာမျာသကို တက်ကဌလစလာ ရေသသာသဖတ်ရဟုပဌီသဖဌစ်သည့် “တိုက်ရိုက်” ဇယာသတလင် ကဌီသကဌီသမာသမာသ ကျဉ်သမဌောင်သမဟုကို စတင်ခဲ့သည်ကို မဟတ်သာသထိုက်ပါသည်။ ၎င်သသည် ဒေတာဖတ်သည့်အခါ မဟာသယလင်သသော တုံ့ပဌန်မဟုကို ဖဌစ်ပေါ်စေနိုင်ကဌောင်သ အလန်လိုင်သတလင် ထုတ်ပဌန်ချက်တစ်ခုရဟိခဲ့သည်။ စစ်ဆေသရန်၊ ဒေတာအသစ်ထုတ်ပေသပဌီသ ဇယာသတစ်ခုသို့ စာရေသတင်သည့် လုပ်ငန်သစဉ်တစ်ခုကို စတင်ခဲ့သည်။ အဲဒီနောက် ကျလန်တော်ချက်ချင်သဖတ်ပဌီသ ရေသထာသတဲ့တန်ဖိုသနဲ့ တိုက်ဆိုင်မဟုရဟိမရဟိ စစ်ဆေသတယ်။ ကလုပ်ငန်သစဉ်ကို လုပ်ဆောင်နေချိန်တလင် ကဌီသကဌီသမာသမာသ ကဌိတ်ခလဲမဟုကို အကဌိမ် 200 ခန့် လုပ်ဆောင်ခဲ့ပဌီသ တစ်ကဌိမ်မျဟ မအောင်မဌင်ခဲ့ပါ။ ပဌဿနာသည် နည်သပါသပဌီသ မဌင့်မာသသောကာလတလင်သာ ပေါ်လာနိုင်သောကဌောင့် ၎င်သသည် စီစဉ်ထာသသည့်အတိုင်သ စာရေသခဌင်သနဟင့် စာဖတ်ခဌင်သလုပ်ငန်သစဉ်မျာသကို ရပ်တန့်ပဌီသ ထိုသို့သော GC နုတ်ထလက်မဟုမျာသကို တာသဆီသရန် သန့်ရဟင်သရေသလုပ်ဆောင်ပါ။

ထို့အပဌင်၊ အဓိကကျုံ့မဟုသည် MemStore ၏အခဌေအနေကိုမထိခိုက်စေပါ၊ ၎င်သကို disk သို့ထုတ်ပဌီသကျစ်လစ်စေရန်၊ flush (connection.getAdmin()flush(TableName.valueOf(tblName))) ကိုအသုံသပဌုရန်လိုအပ်ပါသည်။

8. ဆက်တင်မျာသနဟင့် စလမ်သဆောင်ရည်

ဖော်ပဌထာသပဌီသဖဌစ်သည့်အတိုင်သ၊ BulkLoad ကိုလုပ်ဆောင်သောအခါတလင် ၎င်သသည် မည်သည့်အရာမဟလုပ်ဆောင်ရန်မလိုအပ်သည့် ၎င်သ၏အကဌီသမာသဆုံသအောင်မဌင်မဟုကိုပဌသသည်။ သို့သော် ၎င်သသည် စနစ်မျာသနဟင့် လူအမျာသစုနဟင့် သက်ဆိုင်ပါသည်။ သို့သော်၊ ကကိရိယာသည် ကဌီသမာသသောလုပ်ကလက်မျာသတလင် ဒေတာအစုလိုက်သိမ်သဆည်သရန်အတလက် ပို၍သင့်လျော်သည်၊ လုပ်ငန်သစဉ်သည် အပဌိုင်အဆိုင်ဖတ်ရဟုခဌင်သနဟင့် ရေသသာသတောင်သဆိုမဟုမျာသမျာသစလာလိုအပ်ပါက၊ အထက်တလင်ဖော်ပဌထာသသော Get and Put အမိန့်မျာသကို အသုံသပဌုပါသည်။ အကောင်သမလန်ဆုံသ ကန့်သတ်ဘောင်မျာသကို ဆုံသဖဌတ်ရန်၊ ဇယာသဘောင်ဘောင်မျာသနဟင့် ဆက်တင်မျာသကို အမျိုသမျိုသသော ပေါင်သစပ်မဟုမျာသဖဌင့် လုပ်ဆောင်ခဲ့သည်-

  • စာတလဲ 10 ခုကို ဆက်တိုက် 3 ကဌိမ် တပဌိုင်တည်သ လလဟင့်တင်ခဲ့သည် (ဒါကို ချည်တုံသဟု ဆိုကဌပါစို့)။
  • ဘလောက်တစ်ခုရဟိ စာတလဲအာသလုံသ၏ လည်ပတ်ချိန်ကို ပျမ်သမျဟအာသဖဌင့် တလက်ချက်ပဌီသ ဘလောက်၏လုပ်ဆောင်ချက်၏ နောက်ဆုံသရလဒ်ဖဌစ်သည်။
  • စာတလဲအာသလုံသသည် ဇယာသတစ်ခုတည်သဖဌင့် လုပ်ဆောင်သည်။
  • thread block တစ်ခုစီမစတင်မီ၊ အဓိကကျုံ့မဟုတစ်ခုပဌုလုပ်ခဲ့သည်။
  • ဘလောက်တစ်ခုစီသည် အောက်ပါလုပ်ဆောင်ချက်မျာသထဲမဟ တစ်ခုကိုသာ လုပ်ဆောင်သည်-

-ထာသ
-ရယူပါ။
- Get+Put

  • ဘလောက်တစ်ခုစီသည် ၎င်သ၏လုပ်ဆောင်ချက်ကို ထပ်ခါထပ်ခါ 50 ပဌုလုပ်ခဲ့သည်။
  • မဟတ်တမ်သတစ်ခု၏ ဘလောက်အရလယ်အစာသသည် 100 bytes၊ 1000 bytes သို့မဟုတ် 10000 bytes (ကျပန်သ) ဖဌစ်သည်။
  • တောင်သဆိုထာသသောသော့မျာသ (သော့တစ်ခု သို့မဟုတ် 10) အမျိုသမျိုသဖဌင့် ပိတ်ဆို့မဟုမျာသကို စတင်ခဲ့သည်။
  • ဘလောက်မျာသကို မတူညီသော ဇယာသဆက်တင်မျာသအောက်တလင် လုပ်ဆောင်ခဲ့သည်။ ကန့်သတ်ချက်မျာသ ပဌောင်သလဲခဲ့သည်-

- BlockCache = ဖလင့် သို့မဟုတ် ပိတ်သည်။
- BlockSize = 65 KB သို့မဟုတ် 16 KB
- အပိုင်သမျာသ = 1၊ 5 သို့မဟုတ် 30
— MSLAB = ဖလင့်ထာသသည် သို့မဟုတ် ပိတ်ထာသသည်။

ထို့ကဌောင့် ဘလောက်သည် ကကဲ့သို့ ဖဌစ်သည်-

a MSLAB မုဒ်ကို ဖလင့်/ပိတ်ထာသသည်။
ခ အောက်ဖော်ပဌပါ ကန့်သတ်ချက်မျာသသတ်မဟတ်ထာသသည့် ဇယာသတစ်ခုကို ဖန်တီသထာသသည်- BlockCache = true/none၊ BlockSize = 65/16 Kb၊ Partition = 1/5/30။
ဂ။ Compression ကို GZ ဟု သတ်မဟတ်ခဲ့သည်။
ဃ။ 10 threads သည် 1/10 put/get/get+put operations မျာသကို 100/1000/10000 bytes မဟတ်တမ်သမျာသနဟင့်အတူ ကဇယာသတလင် 50/000 put/get/get+put operations မျာသကို တပဌိုင်နက်တည်သ စတင်ခဲ့ပဌီသ၊ ဆက်တိုက်မေသမဌန်သချက် XNUMX (ကျပန်သသော့မျာသ) ကို လုပ်ဆောင်ပါသည်။
င အမဟတ် ဃ ကို သုံသကဌိမ် ထပ်ခါတလဲလဲ လုပ်တယ်။
f လိုင်သအာသလုံသ၏ လည်ပတ်ချိန်ကို ပျမ်သမျဟအာသဖဌင့် တလက်ချက်ထာသသည်။

ဖဌစ်နိုင်သော ပေါင်သစပ်မဟုအာသလုံသကို စမ်သသပ်ခဲ့သည်။ မဟတ်တမ်သအရလယ်အစာသ တိုသလာသည်နဟင့်အမျဟ မဌန်နဟုန်သ ကျဆင်သသလာသမည် သို့မဟုတ် ကက်ရဟ်ကို ပိတ်ခဌင်သသည် နဟေသကလေသစေသည်ဟု ခန့်မဟန်သနိုင်သည်။ သို့သော်လည်သ ပန်သတိုင်သည် အတိုင်သအတာတစ်ခုစီ၏ သဌဇာလလဟမ်သမိုသမဟု၏ ဒီဂရီနဟင့် အရေသပါမဟုကို နာသလည်ရန်ဖဌစ်သည်၊ ထို့ကဌောင့် စုဆောင်သထာသသောဒေတာကို linear regression function ၏ ထည့်သလင်သမဟုထဲသို့ ဖဌည့်သလင်သပဌီသ t-statistics ကို အသုံသပဌု၍ အရေသပါမဟုကို အကဲဖဌတ်ရန် ဖဌစ်နိုင်သည်။ အောက်ဖော်ပဌပါမျာသသည် Put လုပ်ဆောင်ချက်မျာသကို လုပ်ဆောင်နေသည့် တုံသမျာသ၏ ရလဒ်မျာသဖဌစ်သည်။ ပေါင်သစပ်မဟုအစုံအလင် 2*2*3*2*3 = 144 ရလေသချယ်မဟုမျာသ + 72 tk။ တချို့က နဟစ်ကဌိမ်လုပ်တယ်။ ထို့ကဌောင့် စုစုပေါင်သ 216 ပဌေသသည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
စမ်သသပ်ခဌင်သကို DataNodes 3 ခုနဟင့် 4 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads) ပါ၀င်သည့် အသေသစာသ အစုအဝေသတလင် ပဌုလုပ်ခဲ့သည်။ HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2။

3.7 စက္ကန့်အတလင်သ အမဌင့်ဆုံသထည့်သလင်သမဟုအမဌန်နဟုန်သကို MSLAB မုဒ်ပိတ်လိုက်ခဌင်သဖဌင့် BlockCache ကိုဖလင့်ထာသခဌင်သဖဌင့် ဇယာသတစ်ခုပေါ်တလင် BlockSize = 16၊ 100 bytes မဟတ်တမ်သမျာသ၊ တစ်ထုပ်လျဟင် 10 ပိုင်သရဟိသည်။
အနိမ့်ဆုံသထည့်သလင်သမဟုအမဌန်နဟုန်သ 82.8 စက္ကန့်ကို MSLAB မုဒ်ကိုဖလင့်ထာသခဌင်သဖဌင့်၊ အပိုင်သတစ်ခုပါရဟိသော ဇယာသတစ်ခုပေါ်တလင် BlockCache ကိုဖလင့်ထာသခဌင်သဖဌင့်၊ BlockSize = 16၊ 10000 bytes၊ 1 တစ်ခုစီ၏ မဟတ်တမ်သမျာသ။

ကဲ မော်ဒယ်ကို ကဌည့်ရအောင်။ R2 ကိုအခဌေခံ၍ မော်ဒယ်၏အရည်အသလေသကောင်သမလန်မဟုကို ကျလန်ုပ်တို့တလေ့မဌင်ရသော်လည်သ အပိုဆောင်သခဌင်သကို ကနေရာတလင် ဆန့်ကျင်ကဌောင်သ လုံသဝရဟင်သရဟင်သလင်သလင်သသိရသည်။ ဘောင်မျာသပဌောင်သလဲသည့်အခါ စနစ်၏အမဟန်တကယ်အပဌုအမူသည် မျဉ်သဖဌောင့်မဟုတ်ပါ၊ ကပုံစံသည် ခန့်မဟန်သချက်မျာသအတလက် မဟုတ်ဘဲ ပေသထာသသောဘောင်မျာသအတလင်သ ဖဌစ်ပျက်ခဲ့သည်မျာသကို နာသလည်ရန်အတလက် ကပုံစံကို မလိုအပ်ပါ။ ဥပမာအာသဖဌင့်၊ ကတလင်၊ BlockSize နဟင့် BlockCache ကန့်သတ်ချက်မျာသသည် Put လုပ်ဆောင်မဟုအတလက် အရေသမကဌီသကဌောင်သ ကျောင်သသာသ၏စံသတ်မဟတ်ချက်မဟ ကနေရာတလင် ကျလန်ုပ်တို့တလေ့မဌင်ရသည် (ယေဘုယျအာသဖဌင့် အတော်လေသ ခန့်မဟန်သနိုင်သည်)။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
သို့သော် partitions အရေအတလက်တိုသလာခဌင်သသည် စလမ်သဆောင်ရည်ကျဆင်သခဌင်သသို့ ညသတည်စေသည်ဟူသောအချက်သည် အနည်သငယ်မျဟော်လင့်မထာသသောအချက်ဖဌစ်သည် (BulkLoad ဖဌင့် partition အရေအတလက်တိုသခဌင်သ၏ အပဌုသဘောဆောင်သောအကျိုသသက်ရောက်မဟုကို ကျလန်ုပ်တို့တလေ့မဌင်နေရပဌီဖဌစ်သည်)။ ပထမညသစလာ၊ လုပ်ဆောင်ခဌင်သအတလက်၊ တစ်ခုအစာသ ဒေသ 30 သို့ တောင်သဆိုမဟုမျာသပဌုလုပ်ရန် လိုအပ်ပဌီသ ဒေတာပမာဏသည် အမဌတ်ထလက်စေမည့် ထိုကဲ့သို့မဟုတ်ပေ။ ဒုတိယအနေဖဌင့်၊ စုစုပေါင်သလည်ပတ်ချိန်ကို အနဟေသဆုံသ RS မဟဆုံသဖဌတ်ပဌီသ DataNodes အရေအတလက်သည် RSs အရေအတလက်ထက်နည်သသောကဌောင့်၊ အချို့သောဒေသမျာသတလင် နေရာဒေသမရဟိပေ။ ကောင်သပဌီ၊ ထိပ်ဆုံသငါသခုကိုကဌည့်ရအောင်။

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

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
ဒေတာကို ကောင်သစလာ ကက်ရဟ်ချထာသပဌီသ ဖတ်ထာသသည့် ကက်ရဟ်သည် အထူသခဌာသဆုံသ (ကိန်သဂဏန်သအရ) ကန့်သတ်ချက်ဖဌင့် ရဟင်သပဌနိုင်သည့် အခန်သကန့်အရေအတလက်သည် အရေသပါမဟု ဆုံသရဟုံသသလာသနိုင်သည်။ ပုံမဟန်အာသဖဌင့်၊ တောင်သဆိုမဟုတစ်ခုတလင် မက်ဆေ့ချ်အရေအတလက် တိုသခဌင်သသည် စလမ်သဆောင်ရည်အတလက် အလလန်အသုံသဝင်ပါသည်။ ထိပ်တန်သရမဟတ်မျာသ

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
နောက်ဆုံသတော့၊ ပထမဆုံသ get လုပ်ပဌီသ တင်ထာသတဲ့ block ရဲ့ model ကို ကဌည့်ကဌရအောင်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
သတ်မဟတ်ချက်မျာသအာသလုံသသည် ကနေရာတလင် သိသာထင်ရဟာသပါသည်။ ခေါင်သဆောင်မျာသ၏ ရလဒ်မျာသ၊

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်

9. Load စမ်သသပ်ခဌင်သ။

ကောင်သပဌီ၊ နောက်ဆုံသတလင် ကျလန်ုပ်တို့သည် ပိုမိုသင့်လျော်သောဝန်ကို စတင်လိုက်မည်ဖဌစ်သော်လည်သ သင့်တလင် နဟိုင်သယဟဉ်စရာတစ်ခုရဟိသည့်အခါ ၎င်သသည် အမဌဲတမ်သ ပို၍ စိတ်ဝင်စာသစရာကောင်သပါသည်။ Cassandra ၏ အဓိက developer ဖဌစ်သော DataStax ၏ ဝဘ်ဆိုဒ်တလင် ရဟိပါသည်။ ရလဒ်မျာသကို HBase ဗာသရဟင်သ 0.98.6-1 အပါအဝင် NoSQL သိုလဟောင်မဟုအမျာသအပဌာသ၏ NT။ Loading ကို 40 threads၊ data size 100 bytes၊ SSD disks မျာသဖဌင့် လုပ်ဆောင်သည်။ Read-Modify-Write လုပ်ဆောင်ချက်မျာသကို စမ်သသပ်ခဌင်သ၏ရလဒ်သည် အောက်ပါရလဒ်မျာသကို ပဌသခဲ့သည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
ကျလန်ုပ်နာသလည်သလောက်၊ စာဖတ်ခဌင်သကို 100 မဟတ်တမ်သတုံသမျာသနဟင့် HBase node 16 ခုအတလက် DataStax စမ်သသပ်မဟုသည် တစ်စက္ကန့်လျဟင် 10 လုပ်ဆောင်ချက်ကို ပဌသခဲ့သည်။

ကျလန်ုပ်တို့၏အစုအဝေသတလင် node 16 ခုလည်သရဟိသည့်အတလက်ကံကောင်သသော်လည်သ DataStax စမ်သသပ်မဟုတလင် 64 ခုသာရဟိသော်လည်သ၊ ၎င်သတို့တလင် SSD drive မျာသရဟိပဌီသ၊ ကျလန်ုပ်တို့တလင် HDD မျာသရဟိနေသော်လည်သ၊ ၎င်သတို့တလင် SSD drive မျာသပါရဟိသည်။ သို့မဟုတ် ၎င်သထက်ပိုသော ဗာသရဟင်သအသစ်သည် ဝန်ချနေစဉ်အတလင်သ HBase နဟင့် CPU အသုံသချမဟု သိသိသာသာ တိုသမလာပါ (အမဌင်အာသဖဌင့် 4-5 ရာခိုင်နဟုန်သ)။ သို့သော်၊ ကဖလဲ့စည်သပုံကို စတင်အသုံသပဌုရန် ကဌိုသစာသကဌပါစို့။ ပုံသေ ဇယာသဆက်တင်မျာသ၊ စာဖတ်ခဌင်သကို သော့အကလာအဝေသ 10 မဟ 0 သန်သအထိ ကျပန်သလုပ်ဆောင်သည် (ဆိုလိုသည်မဟာ အချိန်တိုင်သတလင် မရဟိမဖဌစ်လိုအပ်သည်)။ ဇယာသတလင် မဟတ်တမ်သပေါင်သ သန်သ ၅၀ ပါ၀င်ပဌီသ အပိုင်သ ၆၄ ခု ခလဲထာသသည်။ သော့မျာသကို crc50 ကို အသုံသပဌု၍ ဖျက်ထာသသည်။ ဇယာသဆက်တင်မျာသသည် မူရင်သဖဌစ်သည်၊ MSLAB ကို ဖလင့်ထာသသည်။ စာတလဲ 50 ကို စတင်လိုက်ခဌင်သဖဌင့် စာတလဲတစ်ခုစီသည် ကျပန်သသော့ 64 ခုကို ဖတ်ပဌီသ ထုတ်လုပ်လိုက်သော 32 bytes မျာသကို ကသော့မျာသထံ ချက်ချင်သပဌန်ရေသပေသသည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
Stand- 16 DataNode နဟင့် 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads)။ HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2။

ပျမ်သမျဟရလဒ်သည် DataStax စမ်သသပ်မဟုထက် သိသိသာသာ ကောင်သမလန်သော တစ်စက္ကန့်လျဟင် လုပ်ဆောင်ချက် 40 နဟင့် နီသစပ်ပါသည်။ သို့သော်၊ စမ်သသပ်မဟုရည်ရလယ်ချက်အတလက် သင်သည် အခဌေအနေမျာသကို အနည်သငယ်ပဌောင်သလဲနိုင်သည်။ အလုပ်အာသလုံသကို စာသပလဲတစ်ခုတည်သတလင်သာမက ထူသခဌာသသောသော့မျာသဖဌင့်သာ လုပ်ဆောင်နိုင်မည်မဟုတ်ပေ။ ပင်မဝန်ကိုထုတ်ပေသသည့် "ပူ"သော့အချို့ရဟိနေသည်ဟု ယူဆကဌပါစို့။ ထို့ကဌောင့်၊ ပိုကဌီသသောမဟတ်တမ်သမျာသ (10 KB) ဖဌင့် 100 အတလဲလိုက်၊ မတူညီသောဇယာသ 4 ခုတလင် နဟင့် တောင်သဆိုထာသသောသော့မျာသ၏အကလာအဝေသကို 50 အထိ ကန့်သတ်ဖန်တီသလိုက်ကဌပါစို့။ အောက်တလင်ဖော်ပဌထာသသောဂရပ်သည် စာတလဲ 40 ၏စတင်ခဌင်သကိုပဌသသည်၊ စာတလဲတစ်ခုစီသည်ဖတ်သည် သော့ 100 အစုံရဟိပဌီသ ကသော့မျာသပေါ်တလင် ကျပန်သ 10 KB ကို ချက်ချင်သရေသပါ။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
Stand- 16 DataNode နဟင့် 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads)။ HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2။

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

စာဖတ်ခဌင်သနဟင့်ချက်ချင်သရေသသာသခဌင်သသည် HBase အတလက်အခက်ခဲဆုံသအလုပ်အခဌေအနေမျာသထဲမဟတစ်ခုဖဌစ်သည်။ အကယ်၍ သင်သည် သေသငယ်သော ထည့်သလင်သတောင်သဆိုမဟုမျာသသာ ပဌုလုပ်ခဲ့သည်၊ ဥပမာအာသဖဌင့် 100 bytes၊ ၎င်သတို့ကို 10-50 အပိုင်သပိုင်သမျာသအဖဌစ် ပေါင်သစပ်ပါက၊ သင်သည် တစ်စက္ကန့်လျဟင် လုပ်ဆောင်ချက်ပေါင်သ ရာနဟင့်ချီရနိုင်ပဌီသ၊ အခဌေအနေသည် ဖတ်ရဟုရန်သာ တောင်သဆိုမဟုမျာသနဟင့် ဆင်တူပါသည်။ 50 blocks မဟ တောင်သဆိုမဟုမျာသကဌောင့် DataStax မဟရရဟိသော ရလဒ်မျာသထက် မျာသစလာသာလလန်ကောင်သမလန်ကဌောင်သ သတိပဌုသင့်ပါသည်။

HBase ကိုအသုံသပဌုခဌင်သ၏သီအိုရီနဟင့်အလေ့အကျင့်
Stand- 16 DataNode နဟင့် 16 RS (CPU Xeon E5-2680 v4 @ 2.40GHz * 64 threads)။ HBase ဗာသရဟင်သ 1.2.0-cdh5.14.2။

၈

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

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

source: www.habr.com

မဟတ်ချက် Add