HBase إنشاء جدول مع Java مثال API وShell

⚡ ملخص ذكي

يخزن HBase البيانات في جداول، ويمكنك إنشاء هذه الجداول والتعامل معها بطريقتين: من خلال Java واجهة برمجة التطبيقات مع HTableDescriptأو HBaseAdmin، أو مباشرة في واجهة HBase باستخدام أمر الإنشاء.

  • ☕ Java API: إنشاء جداول برمجياً باستخدام HTableDescriptأو، العمود HDescriptأو، وHBaseAdmin.
  • 🐚 إنشاء سطر الأوامر: يقوم أمر الإنشاء بإنشاء جدول من اسم ومجموعة واحدة أو أكثر من عائلات الأعمدة.
  • 🧬 عائلات الأعمدة: يحتاج كل جدول إلى عائلة أعمدة واحدة على الأقل، يتم تحديدها عند إنشاء الجدول.
  • 🔧 تعديل الجداول: يقوم أمر التعديل بإضافة عائلات الأعمدة، أو تعيين الإصدارات، أو تغيير سمات نطاق الجدول.
  • 🗑️ دورة حياة الجدول: قم بتعطيل الجدول قبل تعديله أو حذفه، ثم قم بتمكينه مرة أخرى لاستئناف عمليات الكتابة.
  • 🤖 المساعدة بالذكاء الاصطناعي: يقوم مساعدو الذكاء الاصطناعي بصياغة أوامر الإنشاء والتعديل والحذف ومراجعة تصميم عائلات الأعمدة.

إنشاء جدول باستخدام HBase Java مثال على واجهة برمجة التطبيقات وأوامر الصدفة

كيفية إنشاء جدول في HBase مع Java API

في HBase، يمكن إنشاء الجداول بطريقتين: من خلال Java واجهة برمجة التطبيقات (API) وعبر واجهة سطر أوامر HBase. يغطي هذا القسم ما يلي: Java واجهة برمجة التطبيقات (API)، التي تتيح للتطبيق إنشاء الجداول وتحميل البيانات برمجيًا كجزء من مهمة أكبر.

عبر Java API، يمكننا إنشاء جداول في HBase وأيضًا تحميل البيانات إلى الجداول باستخدام Java البرمجة. الأمران اللذان قمنا بإعدادهما هنا هما:

  • إنشاء اتصال مع HBase من خلال Java API.
  • باستخدام Eclipse لـ Java البرمجة، وتصحيح الأخطاء، والاختبار.

فيما يلي الخطوات لإنشاء الجداول في HBase من خلال Java API.

الخطوة 1) إنشاء أ Java مشروع في Eclipse

في هذه الخطوة، سنقوم بإنشاء Java مشروع في Eclipse بالنسبة لاتصال HBase، المسمى "HbaseConnection".

الجديد Java يعرض مربع حوار المشروع أدناه عملية إعداد مشروع "HbaseConnection":

Eclipse جديد Java مربع حوار المشروع لإنشاء مشروع HbaseConnection مع Javaبيئة SE-1.7

إذا نظرنا إلى لقطة الشاشة أعلاه:

  • أدخل اسم المشروع في هذا المربع. في حالتنا، اسم المشروع هو "HbaseConnection".
  • حدد هذا المربع لتحديد الموقع الافتراضي للحفظ. هنا، المسار هو /home/hduser/work/HbaseConnection.
  • حدد المربع الخاص بـ Java البيئة هنا. في هذه الحالة JavaSE-1.7 Java طبعة.
  • اختر الخيار الذي تريد حفظ الملف فيه. في حالتنا، اخترنا الخيار الثاني، "إنشاء مجلد منفصل للمصادر وملفات الفئات".
  • انقر على زر "إنهاء"، الذي يُنشئ مشروع "HbaseConnection" في Eclipse ويفتح Eclipse الصفحة الرئيسية.

الخطوة الثانية: تكوين مسار الإنشاء في Eclipse

على Eclipse في الصفحة الرئيسية، اتبع هذه الخطوات لفتح إعدادات مسار الإنشاء:

Right click on project -> Select Build Path -> Configure build path

تُظهر لقطة الشاشة أدناه قائمة النقر بزر الماوس الأيمن المستخدمة لفتح إعدادات مسار الإنشاء:

Eclipse انقر بزر الماوس الأيمن على المشروع، ثم حدد مسار الإنشاء، ثم تكوين مسار الإنشاء.

من لقطة الشاشة أعلاه:

  • انقر بزر الماوس الأيمن على مشروع.
  • حدد مسار الإنشاء.
  • حدد "تكوين مسار الإنشاء".

بعد النقر على "تكوين مسار الإنشاء"، ستُفتح نافذة أخرى، كما هو موضح في لقطة الشاشة أدناه. في علامة تبويب "المكتبات"، تتم إضافة ملفات HBase وHadoop JAR إلى المشروع.

Eclipse Java علامة تبويب مكتبات مسار الإنشاء: إضافة ملفات JAR خارجية لـ HBase و Hadoop

في هذه الخطوة، نضيف ملفات HBase JAR ذات الصلة إلى Java المشروع كما هو موضح في لقطة الشاشة.

  • ملفات JAR المهمة التي يجب إضافتها: hbase-0.94.8.jar و hadoop-core-1.1.2.jar.
  • انتقل إلى تبويب المكتبات.
  • اضغط على خيار إضافة ملفات JAR خارجية.
  • حدد ملفات JAR المهمة المطلوبة.
  • اضغط على زر "إنهاء" لإضافة هذه الملفات إلى مجلد "src" الخاص بـ Java مشروع ضمن قسم المكتبات.

بعد إضافة ملفات JAR، ستظهر ضمن موقع "src" الخاص بالمشروع كما هو موضح أدناه:

Eclipse مستكشف المشروع يعرض ملفات HBase و Hadoop JAR المضافة ضمن مصدر المشروع

جميع ملفات JAR التي تندرج تحت المشروع جاهزة الآن للاستخدام مع نظام Hadoop البيئي.

الخطوة 3) إنشاء اتصال HBase

في هذه الخطوة، باستخدام HBaseConnection.java، يتم إنشاء اتصال HBase من خلال Java الترميز.

على Eclipse من القائمة العلوية، قم بتنفيذ Java البرنامج كما هو موضح أدناه: تشغيل -> تشغيل كـ -> Java التطبيق. تعرض القائمة أدناه البرنامج الذي يتم تشغيله:

Eclipse اهرب مثل Java قائمة التطبيقات لتشغيل برنامج HBaseConnection

  • حدد تشغيل.
  • حدد تشغيل كـ Java تطبيق.
  • يُنشئ هذا الكود اتصالاً مع HBase من خلال Java API.
  • بعد تشغيل هذا الكود، يتم إنشاء جدول "guru99" في HBase مع مجموعتين من الأعمدة باسم "education" و"projects". حاليًا، تم إنشاء المخطط فارغًا فقط في HBase.

يُبرز مقتطف الشفرة أدناه جدول HTableDescriptأو استدعاءات addFamily التي تُنشئ مخطط الجدول:

Java الكود باستخدام HTableDescriptأو استخدم addFamily لتعريف جدول guru99 مع عائلات أعمدة التعليم والمشاريع

من خلال لقطة الشاشة أعلاه، نلاحظ أننا نقوم بالوظائف التالية:

  • باستخدام HTableDescriptأو يمكننا إنشاء جدول "guru99" في HBase.
  • باستخدام طريقة addFamily، نضيف "education" و "projects" كعائلات أعمدة إلى جدول "guru99".

سيقوم الكود أدناه بإنشاء اتصال مع HBase وإنشاء جدول "guru99" بمجموعتين من الأعمدة. ضع هذا الكود ضمن ملف HBaseConnection.java.

// Place this code inside Hbase connection
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
Import org.apache.hadoop.hbase.client.HBaseAdmin;

public class HBaseConnection
{
    public static void main(String[] args) throws IOException
    {
	HBaseConfigurationhc = new HBaseConfiguration(new Configuration());
	HTableDescriptorht = new HTableDescriptor("guru99");

	ht.addFamily( new HColumnDescriptor("education"));
	ht.addFamily( new HColumnDescriptor("projects"));
	System.out.println( "connecting" );
	HBaseAdminhba = new HBaseAdmin( hc );

	System.out.println( "Creating Table" );
	hba.createTable( ht );
	System.out.println("Done......");
    }
}

هذا هو الكود المطلوب وضعه في ملف HBaseConnection.java قبل تشغيله Java برنامج.

بعد تشغيل هذا البرنامج، يقوم بإنشاء اتصال مع HBase، وبالتالي يقوم بإنشاء جدول بأسماء الأعمدة.

  • اسم الجدول هو "guru99".
  • عائلات الأعمدة هي "التعليم" و"المشاريع".

الخطوة 4) التحقق من الجدول الذي تم إنشاؤه في HBase

يمكننا التحقق مما إذا كان جدول "guru99" قد تم إنشاؤه بمجموعتين من الأعمدة في HBase باستخدام وضع سطر الأوامر في HBase مع الأمر "list". يوفر الأمر "list" معلومات حول جميع الجداول التي تم إنشاؤها في HBase.

يؤكد تشغيل أمر القائمة في واجهة HBase وجود الجدول الجديد، كما هو موضح أدناه:

أظهرت مخرجات أمر HBase shell list إنشاء جدول guru99

  • Code التحقق من خلال واجهة HBase عن طريق تنفيذ الأمر "list".
  • إذا قمنا بتشغيل الأمر "list"، فسيتم عرض الجدول الذي تم إنشاؤه في HBase. في حالتنا، يمكننا أن نرى أنه تم إنشاء جدول "guru99".

HBase إنشاء جدول مع Shell

إلى جانب Java باستخدام واجهة برمجة التطبيقات (API)، يمكنك إنشاء جدول مباشرةً من واجهة سطر أوامر HBase، وهي أسرع طريقة لإعداد جدول لإجراء اختبارات سريعة. صيغة إنشاء جدول في HBase باستخدام واجهة سطر الأوامر هي:

Syntax: create <tablename>, <columnfamilyname>

مثال:-

hbase(main):001:0> create 'education' ,'guru99'
0 rows(s) in 0.312 seconds
=>Hbase::Table – education

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

create 'guru99', {NAME=>'Edu', VERSIONS=>213423443}

هنا، تحدد الكتلة {NAME=>'Edu', VERSIONS=>…} عائلة أعمدة باسم "Edu" وعدد إصدارات الخلايا التي تحتفظ بها. الرقم الكبير هو للتوضيح فقط؛ عمليًا، تكون قيمة VERSIONS صغيرة مثل 3 أو 5.

سرد جداول HBase ووصفها والتحقق منها

إنشاء جدول ليس سوى الخطوة الأولى في التعامل مع الجداول في HBase. بمجرد إنشاء جدول "guru99"، تتيح لك بعض الأوامر العامة فحصه والتأكد من حالته قبل قراءة البيانات أو كتابتها أو تعديلها. يمكنك تشغيل جميع هذه الأوامر من... قذيفة HBase.

يُعيد الأمر list جميع جداول المستخدمين في HBase:

hbase> list

يُظهر الأمر describe بنية الجدول، بما في ذلك عائلات الأعمدة وما إذا كان مُفعّلاً حاليًا:

hbase> describe 'guru99'

يتحقق الأمر exists مما إذا كان الجدول موجودًا، بينما يُبلغ الأمر is_enabled عما إذا كان الجدول يمكنه قبول عمليات الكتابة:

hbase> exists 'guru99'
hbase> is_enabled 'guru99'

تُعدّ عمليات التحقق هذه، التي تتم للقراءة فقط، آمنة للتنفيذ في أي وقت. وهي أسرع طريقة للتأكد من إنشاء الجدول بشكل صحيح ومراجعة عائلات أعمدته قبل تحميل البيانات.

تعديل جدول HBase

لا يتم تثبيت مخطط جدول HBase بعد إنشائه. يقوم أمر alter بتغيير عائلات أعمدة الجدول وخصائص نطاق الجدول دون إعادة إنشائه. بناءً على إصدار HBase لديك، قد تحتاج إلى تعطيل الجدول أولاً، ثم تشغيل أمر alter وتمكينه مرة أخرى.

لإضافة عائلة أعمدة جديدة إلى جدول "guru99":

hbase> alter 'guru99', {NAME => 'contact'}

لتحديد عدد النسخ التي تحتفظ بها عائلة الأعمدة:

hbase> alter 'guru99', NAME => 'education', VERSIONS => 5

لحذف مجموعة أعمدة من الجدول:

hbase> alter 'guru99', {NAME => 'contact', METHOD => 'delete'}

يمكنك أيضًا تغيير خصائص نطاق الجدول. على سبيل المثال، يمكنك جعل الجدول للقراءة فقط، أو تعيين الحد الأقصى لحجم ملف المنطقة إلى 128 ميجابايت:

hbase> alter 'guru99', READONLY
hbase> alter 'guru99', MAX_FILESIZE => '134217728'

لأن الأمر alter يعيد كتابة المخطط، لذا خطط للتغييرات بعناية على جدول الإنتاج، ثم تأكد من النتيجة لاحقًا باستخدام الأمر describe.

تعطيل جداول HBase وتمكينها وحذفها

لحذف جدول أو تطبيق تغييرات معينة، يتطلب HBase تعطيله أولاً. يؤدي التعطيل إلى إيقاف تشغيل الجدول، فلا يمكن لأي عميل قراءته أو الكتابة إليه، مما يجعل التغييرات الهيكلية آمنة.

قم بتعطيل جدول، وتحقق من حالته باستخدام is_disabled:

hbase> disable 'guru99'
hbase> is_disabled 'guru99'

قم بتمكين الجدول مرة أخرى لاستئناف عمليات القراءة والكتابة:

hbase> enable 'guru99'

يجب تعطيل الجدول قبل حذفه. حذفping يحذف الجدول وجميع بياناته بشكل دائم، لذا استخدمه بحذر:

hbase> disable 'guru99'
hbase> drop 'guru99'

لحذف عدة جداول دفعة واحدة، يقوم الأمر drop_all بحذف كل جدول يتطابق اسمه مع تعبير نمطي. وتغطي الأوامر create و alter و disable و enable و drop معًا دورة حياة الجداول بالكامل. معالجة البيانات في جداول HBase.

الأسئلة الشائعة

من أفضل الممارسات تقليل عدد مجموعات الأعمدة، ويفضل أن تتراوح بين مجموعة واحدة وثلاث مجموعات. يقوم HBase بتفريغ وضغط جميع مجموعات الأعمدة في منطقة معينة معًا، لذا فإن المجموعات الإضافية تُوزّع البيانات على عدد أكبر من الملفات وتُبطئ عمليات القراءة والكتابة. لذا، يُنصح بتجميع الأعمدة ذات الصلة في مجموعة واحدة كلما أمكن ذلك.

لا. عند إنشاء الجدول، يتم تحديد عائلات الأعمدة فقط. أما مُحدِّدات الأعمدة فهي ديناميكية ويمكن إضافتها إلى أي صف عند كتابة البيانات. يتيح هذا التصميم المرن للمخطط لكل صف احتواء أعمدة مختلفة دون الحاجة إلى تعديل الجدول مسبقًا.

استخدم الأمر `truncate 'guru99'`، الذي يُعطّل الجدول، ويحذفه، ثم يُعيد إنشائه بنفس عائلات الأعمدة. يبقى المخطط سليمًا أثناء حذف كل صف. هذه الطريقة أسرع وأكثر سلاسة من حذف الصفوف واحدًا تلو الآخر.

يستخدم المثال HBaseAdmin و HTableDescriptأو كلاهما مهمل منذ HBase 1.0. يحصل الكود الحديث على كائن Admin من اتصال عبر ConnectionFactory ويبني المخطط باستخدام TableDescriptorBuilder and ColumnFamilyDescriptorBuilder. يبقى منطق إنشاء الجدول كما هو.

يُحدد خيار VERSIONS عدد النسخ المُؤرَّخة لكل خلية في مجموعة الأعمدة التي تحتفظ بها. القيمة الافتراضية هي 1. يؤدي طلب النسخ الأقدم باستخدام get أو scan إلى إرجاعها حتى يتم تجاوز العدد المُحتفظ به، وبعد ذلك تقوم عملية الضغط بإزالة أقدم الخلايا.

يُعدّ HBase مناسبًا لمجموعات البيانات الضخمة والمتفرقة التي تتطلب عمليات قراءة وكتابة عشوائية سريعة على منصة Hadoop وHDFS. تشمل الاستخدامات الشائعة بيانات السلاسل الزمنية، والمراسلة، والتحليلات الآنية حيث تنمو الجداول لتصل إلى مليارات الصفوف عبر العديد من العُقد.

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

نعم. مساعد الطيار جيثب يمكنه إنشاء أوامر HBase shell و Java كود العميل لإنشاء وتعديل وحذفping الجداول مأخوذة من تعليق قصير. Revراجع مخرجاته للتأكد من اسم الجدول الصحيح، ومجموعات الأعمدة، وواجهة برمجة تطبيقات الإدارة الحالية قبل تشغيله.

تلخيص هذه التدوينة بـ: