مع تطور معماريات البيانات، أصبح الاعتماد على تنسيقات جداول قوية ومتوافقة مع معايير ACID أمراً بالغ الأهمية. برز Apache Iceberg كتنسيق جداول مفتوح المصدر رائد للبيانات التحليلية الضخمة، حيث يوفر إدارة قابلة للتطوير وعالية الأداء لبيانات الوصف في بحيرات البيانات. سواء كنت تبني بنية لامدا أو تنتقل نحو نمط Lakehouse الحديث، فإن تثبيت Iceberg يمثل خطوة أولى حاسمة. يوضح لك هذا الدليل عملية التثبيت لبيئات مختلفة، مما يضمن قدرتك على البدء في الاستفادة من ميزات Iceberg مثل السفر عبر الزمن، وتطور المخطط، وحذف الصفوف على مستوى الصف.
المتطلبات المسبقة وإعداد البيئة
قبل الغوص في عملية التثبيت، من الضروري فهم أن Apache Iceberg هو مكتبة وليس خدمة مستقلة. فهو يتكامل مع محركات الحوسبة الحالية مثل Apache Spark وTrino وPresto أو Flink. لذلك، يجب أن تحتوي بيئتك على بيئة تشغيل Java (JRE) مثبتة. يتطلب Iceberg عادةً Java 11 أو Java 17، اعتماداً على الإصدار ومحرك الحوسبة الذي تستخدمه.
تأكد من تثبيت Apache Maven أو Gradle إذا كنت تقوم بدمج Iceberg في مشروع قائم على Java. بالنسبة للبيئات الموزعة، تأكد من أن توزيع Hadoop الخاص بك (CDH أو HDP أو Apache Hadoop) متوافق مع إصدار Iceberg الذي تنوي تثبيته. تحقق من مصفوفة التوافق الرسمية لـ Iceberg لتجنب عدم تطابق الإصدارات بين برامج العنقود ومكتبات Iceberg.
تثبيت Iceberg عبر Maven (مشاريع Java/Scala)
الطريقة الأكثر شيوعاً لاستخدام Iceberg هي إضافته كاعتمادية في أداة البناء الخاصة بك. إذا كنت تستخدم Maven، فأنت بحاجة إلى إضافة BOM (قائمة مواد البناء) المناسبة لضمان اتساق الإصدارات عبر جميع وحدات Iceberg. أضف ما يلي إلى ملف pom.xml:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-bom</artifactId>
<version>1.4.3</version> <!-- تحقق من الإصدار الأحدث -->
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.iceberg</groupId>
<artifactId>iceberg-spark-runtime-3.4_2.12</artifactId> <!-- اضبطه لإصدار Spark الخاص بك -->
<version>1.4.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
بالنسبة لمشاريع Scala التي تستخدم Spark 3.4، ينتهي معرف الأداة (artifact ID) بـ -3.4_2.12. إذا كنت تستخدم إصداراً فرعياً مختلفاً من Spark، فقم بتحديث اللاحقة وفقاً لذلك. يتم استخدام النطاق provided لأن محرك الحوسبة (مثل Spark) سيوفر فئات وقت التشغيل، مما يمنع تعارض ملفات jar.
إعداد Iceberg على العناقيد المستقلة (Spark & Hadoop)
إذا كنت تقوم بتشغيل Apache Spark أو Hadoop على عنقود (مثل YARN أو Kubernetes)، فلا يمكنك الاعتماد على اعتماديات Maven وحدها. يجب عليك توزيع ملفات jar الخاصة بـ Iceberg على جميع العقد في العنقود. أسهل طريقة للقيام بذلك هي تنزيل ملف jar iceberg-spark-runtime من صفحة إصدارات Apache Iceberg الرسمية.
ضع ملف jar الذي تم تنزيله في دليل jars/ الخاص بتثبيت Spark الخاص بك. على سبيل المثال:
cd $SPARK_HOME/jars
curl -LO https://repo1.maven.org/maven2/org/apache/iceberg/iceberg-spark-runtime-3.4_2.12/1.4.3/iceberg-spark-runtime-3.4_2.12-1.4.3.jar
بعد وضع ملف jar، أعد تشغيل قشرة Spark أو قدم مهامك. يمكنك التحقق من التثبيت عن طريق تشغيل أمر SQL بسيط في قشرة Spark SQL:
CREATE TABLE default.sample_table (
id INT,
data STRING
) USING iceberg;
إذا تم تنفيذ هذا الأمر دون أخطاء، فإن Iceberg مثبت ومتكامل بنجاح مع بيئة Spark الخاصة بك. يمكنك الآن فحص بيانات وصف الجدول للتأكد من أن تنسيق الجدول صحيح.
استخدام Docker للتجريب السريع
بالنسبة للمطورين الذين يرغبون في اختبار Iceberg دون إعداد عنقود محلي كامل، يوفر Docker حلاً مريحاً. يمكنك تشغيل بيئة معدة مسبقاً باستخدام صور Docker الرسمية أو التي يحافظ عليها المجتمع وتشمل Spark وIceberg. يعزل هذا النهج الاعتماديات ويضمن بيئة قابلة للتكرار للاختبار.
على سبيل المثال، يمكنك سحب صورة Docker التي تم تثبيت Iceberg مسبقاً وتشغيل حاوية Spark مع نقاط تحميل الحجم المناسبة. هذه الطريقة مفيدة بشكل خاص في خطوط أنابيب CI/CD حيث تحتاج إلى التحقق من صحة تحويلات البيانات مقابل جداول Iceberg.
الخاتمة
يعد تثبيت Apache Iceberg عملية بسيطة تختلف قليلاً اعتماداً على بنية النشر الخاصة بك. من خلال تكوين الاعتماديات بشكل صحيح في Maven، وتوزيع ملفات jar في بيئات العنقود، أو استخدام Docker للإعدادات السريعة، يمكنك فتح قوة تنسيقات الجداول المفتوحة. تذكر دائماً التحقق من التثبيت الخاص بك عن طريق إنشاء جدول عينة وفحص بيانات الوصف. مع استمرار نضج مشهد بحيرة البيانات، يظل إتقان تثبيت Iceberg مهارة أساسية لأي مهندس بيانات جاد. ترقبوا منشورنا القادم، حيث سنغوص في التكوينات المتقدمة مثل تنفيذات الكتالوج وضبط الأداء لأحمال العمل عالية الإنتاجية.