با تکامل معماریهای داده، نیاز به فرمتهای جدول قدرتمند و سازگار با ACID حیاتی میشود. Apache Iceberg به عنوان یک فرمت جدول متنباز پیشرو برای مجموعهدادههای تحلیلی بزرگ ظهور کرده است که مدیریت متادیتای با عملکرد بالا و مقیاسپذیر را برای دریاچههای داده (Data Lakes) فراهم میکند. چه در حال ساخت یک معماری لامبدا باشید و چه در حال حرکت به سمت الگوی مدرن Lakehouse، راهاندازی Iceberg یک گام اولیه حیاتی است. این راهنما شما را در فرآیند نصب برای محیطهای مختلف همراهی میکند و اطمینان حاصل میکند که میتوانید از ویژگیهای Iceberg مانند سفر در زمان، تکامل طرح جدول و حذف سطری استفاده کنید.
پیشنیازها و راهاندازی محیط
قبل از شروع نصب، درک این نکته ضروری است که Apache Iceberg یک کتابخانه است، نه یک سرویس مستقل. این کتابخانه با موتورهای محاسباتی موجود مانند Apache Spark، Trino، Presto یا Flink یکپارچه میشود. بنابراین، محیط شما باید دارای یک محیط زمان اجرا جاوا (JRE) پشتیبانیشده نصب شده باشد. Iceberg معمولاً به جاوا ۱۱ یا جاوا ۱۷ نیاز دارد، که بستگی به نسخه و موتوری دارد که استفاده میکنید.
اگر در حال یکپارچهسازی Iceberg در یک پروژه مبتنی بر جاوا هستید، اطمینان حاصل کنید که Apache Maven یا Gradle نصب شده باشند. برای محیطهای توزیعشده، اطمینان حاصل کنید که توزیع 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 با -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 را با mountهای حجم مناسب اجرا کنید. این روش به ویژه برای پایپلاینهای CI/CD مفید است که در آنها نیاز به اعتبارسنجی تبدیلهای داده در برابر جداول Iceberg دارید.
نتیجهگیری
نصب Apache Iceberg فرآیندی نسبتاً ساده است که بسته به معماری استقرار شما کمی متفاوت است. با پیکربندی صحیح وابستگیها در Maven، توزیع فایلهای jar در محیطهای خوشهای، یا استفاده از Docker برای راهاندازیهای سریع، میتوانید قدرت فرمتهای جدول متنباز را آزاد کنید. به یاد داشته باشید که همیشه نصب خود را با ایجاد یک جدول نمونه و بررسی متادیتا تأیید کنید. با بلوغ بیشتر چشمانداز Data Lakehouse، تسلط بر نصب Iceberg یک مهارت بنیادی برای هر مهندس داده جدی است. برای پست بعدی ما که در آن به پیکربندیهای پیشرفتهتر مانند پیادهسازیهای کاتالوگ و بهینهسازی عملکرد برای بارهای کاری با تراکم بالا میپردازیم، همراه ما باشید.