How-To Guides

Apache Iceberg Kurulumu: Modern Veri Mühendisliği İçin Kapsamlı Rehber

Veri mimarileri evrildikçe, sağlam ve ACID uyumlu tablo formatlarına olan ihtiyaç artmaktadır. Apache Iceberg, devasa analitik veri kümeleri için önde gelen açık kaynaklı bir tablo formatı olarak öne çıkmakta ve veri göllerine yüksek performanslı, ölçeklenebilir metadata yönetimi sağlamaktadır. İster bir Lambda mimarisi kuruyor olun, ister modern bir Lakehouse modeline geçiş yapıyor olun, Iceberg'i çalışır hale getirmek kritik bir ilk adımdır. Bu rehber, zaman yolculuğu, şema evrimi ve satır düzeyinde silme gibi Iceberg özelliklerini kullanmaya başlamanızı sağlayacak şekilde çeşitli ortamlar için kurulum sürecini adım adım anlatmaktadır.

Ön Koşullar ve Ortam Kurulumu

Kurulum işlemine başlamadan önce, Apache Iceberg'in bağımsız bir hizmet değil, bir kütüphane olduğunu anlamak önemlidir. Apache Spark, Trino, Presto veya Flink gibi mevcut hesaplama motorlarıyla entegre çalışır. Bu nedenle, ortamınızda desteklenen bir Java Runtime Environment (JRE) yüklü olmalıdır. Kullandığınız versiyona ve motora bağlı olarak Iceberg genellikle Java 11 veya Java 17 gerektirir.

Eğer Iceberg'i Java tabanlı bir projeye entegre ediyorsanız Apache Maven veya Gradle yüklü olduğundan emin olun. Dağıtık ortamlar için, Hadoop dağıtımınızın (CDH, HDP veya Apache Hadoop) kurulumunu yapmayı planladığınız Iceberg sürümüyle uyumlu olduğundan emin olun. Küme yazılımınız ile Iceberg kütüphaneleri arasında sürüm uyumsuzluklarını önlemek için resmi Iceberg uyumluluk matrisini kontrol edin.

Maven Üzerinden Iceberg Kurulumu (Java/Scala Projeleri)

Iceberg'i kullanmanın en yaygın yolu, onu derleme aracınızda bir bağımlılık olarak eklemektir. Maven kullanıyorsanız, tüm Iceberg modülleri arasında tutarlı sürümler sağlamak için uygun BOM (Bill of Materials) dosyasını eklemeniz gerekir. Aşağıdaki kodu pom.xml dosyanıza ekleyin:

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.apache.iceberg</groupId>
      <artifactId>iceberg-bom</artifactId>
      <version>1.4.3</version> <!-- En son sürümü kontrol edin -->
      <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 sürümünüze göre ayarlayın -->
    <version>1.4.3</version>
    <scope>provided</scope>
  </dependency>
</dependencies>

Spark 3.4 kullanan Scala projelerinde, artifact ID'si -3.4_2.12 ile biter. Farklı bir Spark alt sürümü kullanıyorsanız, soneki buna göre güncelleyin. provided kapsamı, hesaplama motorunun (Spark gibi) çalışma zamanı sınıflarını sağlayacağı ve jar çakışmalarını önleyeceği için kullanılır.

Bağımsız Küme Üzerinde Iceberg Kurulumu (Spark & Hadoop)

Apache Spark veya Hadoop'u bir küme üzerinde (örneğin YARN veya Kubernetes) çalıştırıyorsanız, yalnızca Maven bağımlılıklarına güvenemezsiniz. Iceberg jar dosyalarını kümedeki tüm düğümlere dağıtmanız gerekir. Bunu yapmanın en kolay yolu, resmi Apache Iceberg yayın sayfasından iceberg-spark-runtime jar dosyasını indirmektir.

İndirdiğiniz jar dosyasını Spark kurulumunuzun jars/ dizinine yerleştirin. Örneğin:

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 dosyasını yerleştirdikten sonra Spark kabuğunuzu yeniden başlatın veya işlerinizi gönderin. Kurulumu doğrulamak için Spark SQL kabuğunda basit bir SQL komutu çalıştırabilirsiniz:

CREATE TABLE default.sample_table (
  id INT,
  data STRING
) USING iceberg;

Bu komut hatasız çalıştırılırsa, Iceberg başarıyla kurulmuş ve Spark ortamınızla entegre edilmiş demektir. Tablo formatının doğru olduğunu doğrulamak için tablo metadata'sını inceleyebilirsiniz.

Hızlı Prototipleme İçin Docker Kullanımı

Tam bir yerel küme kurulumu yapmadan Iceberg'i test etmek isteyen geliştiriciler için Docker uygun bir çözüm sunar. Spark ve Iceberg içeren resmi veya topluluk tarafından yönetilen Docker görüntülerini kullanarak önceden yapılandırılmış bir ortam oluşturabilirsiniz. Bu yaklaşım bağımlılıkları izole eder ve testler için tekrarlanabilir bir ortam sağlar.

Örneğin, Iceberg önceden yüklü bir Docker görüntüsünü çekebilir ve uygun hacim bağlantılarıyla bir Spark kabuğu çalıştırabilirsiniz. Bu yöntem, veri dönüşümlerini Iceberg tablolarına karşı doğrulamanız gereken CI/CD hatlarında özellikle faydalıdır.

Sonuç

Apache Iceberg kurulumu, dağıtım mimarinize bağlı olarak biraz farklılık gösteren basit bir süreçtir. Maven'de bağımlılıkları doğru şekilde yapılandırarak, küme ortamlarında jar dosyalarını dağıtarak veya hızlı kurulumlar için Docker kullanarak açık tablo formatlarının gücünü açığa çıkarabilirsiniz. Kurulumunuzu doğrulamak için her zaman örnek bir tablo oluşturmayı ve metadata'yı kontrol etmeyi unutmayın. Veri lakehouse manzarası olgunlaşmaya devam ettikçe, Iceberg kurulumunu ustalaşmak, ciddi bir veri mühendisi için temel bir beceridir. Bir sonraki yazımızda, kataloğ uygulamaları ve yüksek iş yükleri için performans ayarlamaları gibi gelişmiş yapılandırmalara derinlemesine bakacağız; o yüzden takipte kalın.

Share: