నేటి పోస్ట్లో HBase ఆర్కిటెక్చర్ గురించి చర్చిద్దాం. మేము HBase నిర్మాణాన్ని లోతుగా పరిశోధించడానికి ముందు HBase యొక్క ప్రాథమికాలను తెలుసుకుందాం.
HBase - ప్రాథమికాలు:
HBase అనేది ఓపెన్-సోర్స్, NoSQL, పంపిణీ, నాన్-రిలేషనల్, వెర్షన్, మల్టీ డైమెన్షనల్, కాలమ్-ఓరియెంటెడ్ స్టోర్, ఇది Google బిగ్టేబుల్ తర్వాత HDFS పైన నడుస్తుంది. '' NoSQL 'అనేది డేటాబేస్ అనేది RDBMS కాదు, ఇది SQL ను దాని ప్రాధమిక ప్రాప్యత భాషగా మద్దతిస్తుంది. అయితే అనేక రకాల NoSQL డేటాబేస్లు ఉన్నాయి మరియు బర్కిలీ DB స్థానిక NoSQL డేటాబేస్కు మంచి ఉదాహరణ, అయితే HBase పంపిణీ చేయబడిన డేటాబేస్.
గూగుల్ బిగ్ టేబుల్ యొక్క అన్ని లక్షణాలను HBase అందిస్తుంది. సహజ భాషా శోధన కోసం భారీ మొత్తంలో డేటాను ప్రాసెస్ చేయడానికి ఇది పవర్సెట్ ప్రాజెక్టుగా ప్రారంభమైంది. ఇది అపాచీ యొక్క హడూప్ ప్రాజెక్టులో భాగంగా అభివృద్ధి చేయబడింది మరియు HDFS (హడూప్ డిస్ట్రిబ్యూటెడ్ ఫైల్ సిస్టమ్) పైన నడుస్తుంది. ఇది పెద్ద మొత్తంలో చిన్న డేటాను నిల్వ చేయడానికి తప్పు-తట్టుకునే మార్గాలను అందిస్తుంది. టైప్ చేసిన నిలువు వరుసలు, ద్వితీయ సూచికలు, ట్రిగ్గర్లు మరియు అధునాతన ప్రశ్న భాషలు మొదలైన RDBMS లో అందుబాటులో ఉన్న అనేక లక్షణాలు లేనందున HBase నిజంగా “డేటా బేస్” కంటే “డేటా స్టోర్”.
ఫంక్షన్ ఓవర్లోడింగ్ c ++
కాలమ్-ఓరియెంటెడ్ డేటాబేస్లలో, డేటా పట్టిక డేటా యొక్క వరుసలుగా కాకుండా డేటా యొక్క నిలువు వరుసల విభాగాలుగా నిల్వ చేయబడుతుంది. కాలమ్ ఓరియెంటెడ్ డేటాబేస్ యొక్క డేటా మోడల్ టేబుల్ పేరు, అడ్డు వరుస, కాలమ్ కుటుంబం, నిలువు వరుసలు, టైమ్ స్టాంప్ కలిగి ఉంటుంది. HBase లో పట్టికలను సృష్టించేటప్పుడు, అడ్డు వరుసలు వరుస కీలు మరియు టైమ్ స్టాంప్ సహాయంతో ప్రత్యేకంగా గుర్తించబడతాయి. ఈ డేటా నమూనాలో కాలమ్ కుటుంబం స్థిరంగా ఉంటుంది, అయితే నిలువు వరుసలు డైనమిక్. ఇప్పుడు HBase ఆర్కిటెక్చర్ ను పరిశీలిద్దాం.
HBase కోసం ఎప్పుడు వెళ్ళాలి?
వందల మిలియన్లు లేదా బిలియన్ల వరుసలు ఉన్నప్పుడు మాత్రమే హెచ్బేస్ మంచి ఎంపిక. ఒక పోర్ట్కు విరుద్ధంగా పూర్తి పున es రూపకల్పనగా RDBMS నుండి HBase కి వెళ్లాలని భావించేటప్పుడు HBase కూడా ప్రదేశాలలో ఉపయోగించబడుతుంది. మరో మాటలో చెప్పాలంటే, క్లాసిక్ లావాదేవీల అనువర్తనాలు లేదా రిలేషనల్ అనలిటిక్స్ కోసం HBase ఆప్టిమైజ్ చేయబడలేదు. పెద్ద బ్యాచ్ మ్యాప్రెడ్యూస్ చేసేటప్పుడు ఇది హెచ్డిఎఫ్ఎస్కు పూర్తి ప్రత్యామ్నాయం కాదు. అప్పుడు మీరు హెచ్బేస్ కోసం ఎందుకు వెళ్లాలి ?? మీ అనువర్తనం వేరియబుల్ స్కీమాను కలిగి ఉంటే, అక్కడ ప్రతి అడ్డు వరుస కొద్దిగా భిన్నంగా ఉంటుంది, అప్పుడు మీరు HBase ని చూడాలి.
HBase ఆర్కిటెక్చర్:
కింది బొమ్మ HBase ఆర్కిటెక్చర్ను స్పష్టంగా వివరిస్తుంది.
HBase లో, మూడు ప్రధాన భాగాలు ఉన్నాయి: మాస్టర్, రీజియన్ సర్వర్ మరియు జూ కీపర్ . ఇతర భాగాలు మెమ్స్టోర్, హెచ్ఫైల్ మరియు వాల్.
HBase HDFS పైన నడుస్తున్నప్పుడు, ఇది మాస్టర్-స్లేవ్ నిర్మాణాన్ని ఉపయోగించుకుంటుంది, దీనిలో HMaster మాస్టర్ నోడ్ అవుతుంది మరియు రీజియన్ సర్వర్లు బానిస నోడ్లు. క్లయింట్ వ్రాతపూర్వక అభ్యర్థనను పంపినప్పుడు, HMaster ఆ అభ్యర్థనను అందుకుంటుంది మరియు దానిని సంబంధిత ప్రాంత సర్వర్కు ఫార్వార్డ్ చేస్తుంది.
ప్రాంత సర్వర్:
ఇది డేటా నోడ్ మాదిరిగానే పనిచేసే వ్యవస్థ. రీజియన్ సర్వర్ (RS) వ్రాతపూర్వక అభ్యర్థనను స్వీకరించినప్పుడు, అది అభ్యర్థనను నిర్దిష్ట ప్రాంతానికి నిర్దేశిస్తుంది. ప్రతి ప్రాంతం వరుసల సమితిని నిల్వ చేస్తుంది. బహుళ కాలమ్ కుటుంబాలలో (CF లు) వరుసల డేటాను వేరు చేయవచ్చు. నిర్దిష్ట CF యొక్క డేటా HStore లో నిల్వ చేయబడుతుంది, దీనిలో మెమ్స్టోర్ మరియు HFiles సమితి ఉంటాయి.
మెమ్స్టోర్ ఏమి చేస్తుంది?
నిర్దిష్ట ప్రాంతీయ సర్వర్లో చేసిన రీడ్ అండ్ రైట్ ఆపరేషన్ల కోసం అన్ని లాగ్లను మెమ్స్టోర్ ట్రాక్ చేస్తుంది. దీని నుండి మనం హడూప్లోని నేమ్ నోడ్ మాదిరిగానే పనిచేస్తుందని చెప్పవచ్చు. మెమ్స్టోర్ అనేది మెమరీలో నిల్వ, అందువల్ల లాగ్లను నిల్వ చేయడానికి ప్రతి డేటా నోడ్ యొక్క మెమరీ నిల్వను మెమ్స్టోర్ ఉపయోగిస్తుంది. కొన్ని పరిమితులు నెరవేరినప్పుడు, మెమ్స్టోర్ డేటా HFile లోకి ప్రవేశిస్తుంది.
మెమ్స్టోర్ను ఉపయోగించడం యొక్క ముఖ్య ఉద్దేశ్యం ఏమిటంటే రో కీ ద్వారా ఆదేశించిన DFS లో డేటాను నిల్వ చేయడం. HDFS సీక్వెన్షియల్ రీడ్స్ / రైట్స్ కోసం రూపొందించబడినందున, ఫైల్ సవరణలు అనుమతించబడనందున, HBase అందుకున్నందున డేటాను డిస్క్లోకి సమర్ధవంతంగా వ్రాయదు: వ్రాతపూర్వక డేటా క్రమబద్ధీకరించబడదు (ఇన్పుట్ క్రమబద్ధీకరించబడనప్పుడు) అంటే భవిష్యత్తు కోసం ఆప్టిమైజ్ చేయబడదు తిరిగి పొందడం. ఈ సమస్యను పరిష్కరించడానికి, HBase బఫర్లు చివరిగా మెమరీలో (మెమ్స్టోర్లో) డేటాను అందుకున్నాయి, ఫ్లష్ చేయడానికి ముందు దాన్ని “రకాలు” చేసి, ఆపై వేగవంతమైన సీక్వెన్షియల్ రైట్లను ఉపయోగించి HDFS కు వ్రాస్తాయి. అందువల్ల, HFile క్రమబద్ధీకరించిన అడ్డు వరుసల జాబితాను కలిగి ఉంది.
డేటా సైన్స్ అది ఏమిటి
ప్రతిసారి మెమ్స్టోర్ ఫ్లష్ జరిగినప్పుడు ప్రతి CF కోసం ఒక HFile సృష్టించబడుతుంది మరియు తరచూ ఫ్లష్లు టన్నుల HFiles ను సృష్టించవచ్చు. HBase చదివేటప్పుడు చాలా HFiles ను చూడవలసి ఉంటుంది కాబట్టి, చదివే వేగం దెబ్బతింటుంది. చాలా HFiles తెరవడాన్ని నివారించడానికి మరియు రీడ్ పనితీరు క్షీణతను నివారించడానికి, HFiles సంపీడన ప్రక్రియ ఉపయోగించబడుతుంది. HBase క్రమానుగతంగా (కొన్ని కాన్ఫిగర్ చేయదగిన పరిమితులు కలిసినప్పుడు) బహుళ చిన్న HFiles ని పెద్దదిగా చేస్తుంది. సహజంగానే, మెమ్స్టోర్ ఫ్లష్లు సృష్టించిన ఎక్కువ ఫైల్లు, సిస్టమ్ కోసం ఎక్కువ పని (అదనపు లోడ్). దీనికి జోడిస్తే, సంపీడన ప్రక్రియ సాధారణంగా ఇతర అభ్యర్ధనలకు సమాంతరంగా జరుగుతుంది మరియు HBase కాంపాక్ట్ HFiles తో ఉండలేనప్పుడు (అవును, దాని కోసం కూడా కాన్ఫిగర్ చేయబడిన పరిమితులు ఉన్నాయి), ఇది మళ్ళీ RS పై వ్రాతలను అడ్డుకుంటుంది. మేము పైన చర్చించినట్లుగా, ఇది చాలా అవాంఛనీయమైనది.
మెమ్స్టోర్లో డేటా నిరంతరంగా ఉంటుందని మేము ఖచ్చితంగా చెప్పలేము. ఒక నిర్దిష్ట డేటానోడ్ డౌన్ అయిందని అనుకోండి. అప్పుడు ఆ డేటా నోడ్ యొక్క మెమరీలో ఉండే డేటా పోతుంది.
ఈ సమస్యను అధిగమించడానికి, మాస్టర్ నుండి అభ్యర్థన వచ్చినప్పుడు అది WAL కి కూడా వ్రాయబడింది. వాల్ ఏమీ కాదు ముందుకు లాగ్లు వ్రాయండి ఇది శాశ్వత నిల్వ అయిన HDFS లో నివసిస్తుంది. డేటా నోడ్ డౌన్ అయినప్పటికీ డేటా కోల్పోకుండా పోయిందని ఇప్పుడు మనం నిర్ధారించుకోవచ్చు. WAL లో మీరు చేయాల్సిన అన్ని చర్యల కాపీ మా వద్ద ఉంది. డేటా నోడ్ అప్ అయినప్పుడు అది మళ్ళీ అన్ని కార్యకలాపాలను చేస్తుంది. ఆపరేషన్ పూర్తయిన తర్వాత, ప్రతిదీ మెమ్స్టోర్ మరియు వాల్ నుండి తీసివేయబడుతుంది మరియు మనం మెమరీ అయిపోకుండా చూసుకోవడానికి HFile లో వ్రాయబడుతుంది.
నేను 10 వ అడ్డు వరుసను జోడించాలనుకుంటున్నాను అనే ఒక సరళమైన ఉదాహరణ తీసుకుందాం, ఆ వ్రాత అభ్యర్థన వస్తుంది, ఇది అన్ని మెటా డేటాను మెమ్స్టోర్ మరియు WAL కి ఇస్తుంది. ఆ నిర్దిష్ట వరుసను మెమ్స్టోర్లోని ప్రతిదీ HFile లోకి వ్రాసిన తరువాత మరియు WAL బయటకు పోతుంది.
జూ కీపర్:
HBase జూ కీపర్తో కలిసి వస్తుంది. నేను HBase ను ప్రారంభించినప్పుడు, జూ కీపర్ ఉదాహరణ కూడా ప్రారంభించబడింది. కారణం, జూ కీపర్ HBase కోసం ఉన్న అన్ని రీజియన్ సర్వర్లను ట్రాక్ చేయడంలో మాకు సహాయపడుతుంది. జూ కీపర్ ఎన్ని ప్రాంత సర్వర్లు ఉన్నాయో, ఏ ప్రాంత సర్వర్లు ఏ డేటా నోడ్ నుండి ఏ డేటా నోడ్ వరకు ఉన్నాయో ట్రాక్ చేస్తుంది. ఇది హడూప్ తప్పిపోయిన చిన్న డేటా సెట్లను ట్రాక్ చేస్తుంది. ఇది మీ మెటా డేటాను ట్రాక్ చేసే హడూప్ పైన ఓవర్హెడ్ను తగ్గిస్తుంది. అందువల్ల జూ కీపర్ను సంప్రదించడం ద్వారా రీజియన్ సర్వర్ల వివరాలను హెచ్మాస్టర్ పొందుతాడు.
మాకు ప్రశ్న ఉందా? వ్యాఖ్యల విభాగంలో వాటిని ప్రస్తావించండి మరియు మేము మిమ్మల్ని సంప్రదిస్తాము.
విలీనం క్రమబద్ధీకరణ c ++ శ్రేణి
సంబంధిత పోస్ట్లు:
సహాయక అందులో నివశించే తేనెటీగలు ఆదేశాలు