رؤى حول HBase Architecture



يناقش هذا المنشور HBase والرؤى حول HBase Architecture. كما يناقش مكونات Hbase مثل Master و Region server و Zoo keeper وكيفية استخدامها.

في مقال اليوم ، دعونا نناقش حول HBase Architecture. دعنا نصقل أساسياتنا الخاصة بـ HBase قبل أن نتعمق أكثر في بنية HBase.





HBase - الأساسيات:

HBase هو متجر مفتوح المصدر ، NoSQL ، موزع ، غير علائقي ، ذو إصدارات ، متعدد الأبعاد ، موجه نحو الأعمدة تم تصميمه على غرار Google BigTable الذي يعمل على قمة HDFS. 'NoSQL' هو مصطلح واسع يعني أن قاعدة البيانات ليست RDBMS والتي تدعم SQL كلغة وصول أساسية ، ولكن هناك العديد من أنواع قواعد بيانات NoSQL وتعد Berkeley DB مثالًا جيدًا لقاعدة بيانات NoSQL المحلية ، بينما HBase هي إلى حد كبير قاعدة بيانات موزعة.

يوفر HBase جميع ميزات Google BigTable. بدأ كمشروع من قبل Powerset لمعالجة كميات هائلة من البيانات للبحث عن اللغة الطبيعية. تم تطويره كجزء من مشروع Hadoop التابع لشركة Apache ويعمل على رأس HDFS (نظام الملفات الموزعة Hadoop). يوفر طرقًا تتسامح مع الأخطاء لتخزين كميات كبيرة من البيانات المتفرقة. HBase هو في الواقع 'مخزن بيانات' أكثر من 'قاعدة بيانات' لأنه يفتقر إلى العديد من الميزات المتوفرة في RDBMS ، مثل الأعمدة المكتوبة والفهارس الثانوية والمشغلات ولغات الاستعلام المتقدمة ، إلخ.



في قواعد البيانات ذات الاتجاه العامودي ، يتم تخزين جدول البيانات كأقسام من أعمدة البيانات وليس كصفوف من البيانات. يتكون نموذج البيانات لقاعدة البيانات الموجهة نحو العمود من اسم الجدول ومفتاح الصف وعائلة الأعمدة والأعمدة والطابع الزمني. أثناء إنشاء الجداول في HBase ، سيتم تحديد الصفوف بشكل فريد بمساعدة مفاتيح الصف والطابع الزمني. في نموذج البيانات هذا ، تكون عائلة العمود ثابتة بينما الأعمدة ديناميكية. الآن دعونا ننظر في HBase Architecture.

متى تذهب إلى HBase؟

يعد HBase خيارًا جيدًا فقط عندما يكون هناك مئات الملايين أو المليارات من الصفوف. يمكن أيضًا استخدام HBase في الأماكن عند التفكير في الانتقال من RDBMS إلى HBase كإعادة تصميم كاملة بدلاً من المنفذ ، وبعبارة أخرى ، لم يتم تحسين HBase لتطبيقات المعاملات الكلاسيكية أو حتى التحليلات العلائقية. كما أنه ليس بديلاً كاملاً لـ HDFS عند القيام بدفعة كبيرة من MapReduce. فلماذا تذهب إلى HBase ؟؟ إذا كان التطبيق الخاص بك يحتوي على مخطط متغير حيث يكون كل صف مختلفًا قليلاً ، فيجب عليك إلقاء نظرة على HBase.

قم بتثبيت php على نظام التشغيل windows 10

هندسة HBase:

يوضح الشكل التالي بوضوح هندسة HBase.



رؤى حول HBase Architecture

في HBase ، هناك ثلاثة مكونات رئيسية: ماجستير وخادم المنطقة وحارس حديقة الحيوان . المكونات الأخرى Memstore و HFile و WAL.

نظرًا لأن HBase يعمل فوق HDFS ، فإنه يستخدم بنية Master-Slave حيث ستكون HMaster هي العقدة الرئيسية وخوادم المنطقة هي العقد التابعة. عندما يرسل العميل طلب كتابة ، يحصل HMaster على هذا الطلب ويحيله إلى خادم المنطقة المعني.

خادم المنطقة:

إنه نظام يعمل بشكل مشابه لعقدة البيانات. عندما يتلقى خادم المنطقة (RS) طلب كتابة ، فإنه يوجه الطلب إلى منطقة معينة. تخزن كل منطقة مجموعة من الصفوف. يمكن فصل بيانات الصفوف في مجموعات أعمدة متعددة (CFs). يتم تخزين بيانات CF معين في HStore والذي يتكون من Memstore ومجموعة من ملفات HFiles.

ماذا تفعل ممستور؟

تقوم Memstore بتتبع جميع السجلات لعمليات القراءة والكتابة التي تم إجراؤها داخل خادم المنطقة هذا. من هذا يمكننا القول أنه يتصرف بشكل مشابه لعقدة الاسم في Hadoop. Memstore هو تخزين في الذاكرة ، وبالتالي فإن Memstore تستخدم التخزين في الذاكرة لكل عقدة بيانات لتخزين السجلات. عند استيفاء عتبات معينة ، يتم مسح بيانات Memstore في ملف HFile.

الغرض الرئيسي من استخدام Memstore هو الحاجة إلى تخزين البيانات على DFS مرتبة حسب مفتاح الصف. نظرًا لأن HDFS مصمم للقراءات / الكتابة المتسلسلة ، مع عدم السماح بإجراء تعديلات على الملفات ، لا يمكن لـ HBase كتابة البيانات بكفاءة إلى القرص أثناء تلقيها: لن يتم فرز البيانات المكتوبة (عندما لا يتم فرز الإدخال) مما يعني عدم تحسينها للمستقبل استرجاع. لحل هذه المشكلة ، تلقت المخازن المؤقتة HBase البيانات في الذاكرة آخر مرة (في Memstore) ، و 'تفرزها' قبل التنظيف ، ثم تكتب إلى HDFS باستخدام عمليات الكتابة المتسلسلة السريعة. ومن ثم ، يحتوي HFile على قائمة بالصفوف التي تم فرزها.

في كل مرة يحدث تدفق Memstore ، يتم إنشاء ملف HFile واحد لكل CF وقد تؤدي عمليات المسح المتكررة إلى إنشاء الكثير من ملفات HFiles. نظرًا لأنه أثناء القراءة سيتعين على HBase إلقاء نظرة على العديد من ملفات HFiles ، فقد تتأثر سرعة القراءة. لمنع فتح الكثير من ملفات HFiles وتجنب تدهور أداء القراءة ، يتم استخدام عملية ضغط HFiles. ستقوم HBase بشكل دوري (عند استيفاء عتبات معينة قابلة للتكوين) بدمج عدة ملفات HFiles أصغر في واحدة كبيرة. من الواضح أنه كلما زاد عدد الملفات التي تم إنشاؤها بواسطة Memstore ، زاد العمل (الحمل الإضافي) للنظام. يضاف إلى ذلك ، بينما يتم تنفيذ عملية الضغط عادةً بالتوازي مع خدمة الطلبات الأخرى وعندما يتعذر على HBase مواكبة ضغط HFiles (نعم ، هناك عتبات تم تكوينها لذلك أيضًا) ، فإنه سيتم حظر عمليات الكتابة على RS مرة أخرى. كما ناقشنا أعلاه ، هذا أمر غير مرغوب فيه للغاية.

لا يمكننا التأكد من أن البيانات ستكون ثابتة في جميع أنحاء Memstore. افترض أن رمز بيانات معين معطل. ثم ستفقد البيانات الموجودة على ذاكرة عقدة البيانات هذه.

للتغلب على هذه المشكلة ، عندما يأتي الطلب من السيد ، فإنه يكتب إلى WAL أيضًا. WAL ليس سوى كتابة السجلات المقبلة الذي يتواجد على HDFS ، وهو تخزين دائم. يمكننا الآن التأكد من أنه حتى لو كانت عقدة البيانات معطلة ، فلن تضيع البيانات أي. لدينا نسخة من جميع الإجراءات التي من المفترض أن تقوم بها في WAL. عند تشغيل عقدة البيانات ، ستؤدي جميع الأنشطة مرة أخرى. بمجرد اكتمال العملية ، يتم مسح كل شيء من Memstore و WAL ويتم كتابته في HFile للتأكد من عدم نفاد الذاكرة لدينا.

لنأخذ مثالًا بسيطًا أريد إضافة الصف 10 ثم يأتي طلب الكتابة هذا ، حيث يقول إنه يعطي جميع البيانات الوصفية إلى Memstore و WAL. بمجرد كتابة هذا الصف المعين في HFile ، يتم مسح كل شيء في Memstore و WAL.

حارس حديقة الحيوان:

يأتي HBase مدمجًا مع Zoo keeper. عند بدء تشغيل HBase ، يتم أيضًا تشغيل مثيل Zoo keeper. السبب هو أن Zoo keeper يساعدنا في تتبع جميع خوادم المنطقة الموجودة لـ HBase. يقوم Zoo keeper بتتبع عدد خوادم المنطقة الموجودة ، وخوادم المنطقة التي تحتفظ من أي عقدة بيانات إلى أي عقدة بيانات. إنه يتتبع مجموعات البيانات الأصغر حيث يفقد Hadoop. إنه يقلل من الحمل فوق Hadoop الذي يتتبع معظم بيانات التعريف الخاصة بك. ومن ثم يحصل HMaster على تفاصيل خوادم المنطقة من خلال الاتصال الفعلي بحارس Zoo.

لديك سؤال لنا؟ أذكرها في قسم التعليقات وسنعاود الاتصال بك.

المنشورات ذات الصلة:

أوامر خلية مفيدة