Apache Oozie Eğitimi: İş Akışı Diyagramı, Zamanlayıcı

⚡ Akıllı Özet

Apache Oozie, Hadoop için bağımlı işleri Yönlendirilmiş Döngüsel Olmayan Grafikler (Directed Acyclic Graphs) olarak çalıştıran, MapReduce, Pig ve Hive eylemleri için bir iş akışı motorunu zaman ve veri kullanılabilirliğine göre çalışan bir koordinatör motoruyla birleştiren bir iş akışı zamanlayıcısıdır.

  • 🔘 İki motor: Bir iş akışı motoru Hadoop iş grafiklerini çalıştırır; bir koordinatör motoru ise bunları planlı olarak veya veri geldiğinde tetikler.
  • ☑️ Düğüm türleri: Eylem düğümleri iş yapar; karar, çatallanma ve birleşme gibi kontrol düğümleri ise yolu yönlendirir.
  • ✅ Üç iş türü: İş akışı, koordinatör ve paket görevleri bir araya gelerek eksiksiz bir veri hattı oluşturur.
  • 🧪 Dağıtım: Bir iş akışı uygulaması, HDFS'ye kopyalanmış workflow.xml dosyasını ve bir lib klasörünü içeren bir dizindir.
  • ️ Komut satırı: OOZIE_'yi ayarlayınURL`oozie job -run` komutuyla işlemi başlatın, ardından `oozie job -info` komutuyla işlemin başarılı olup olmadığını kontrol edin.
  • ⚠️ Proje durumu: Oozie 2025 yılında Apache Attic'e kaldırıldı, bu nedenle yeni işlem hatları genellikle Apache Airflow kullanıyor.

Apache Oozie eğitiminde iş akışı, koordinatör görevleri ve Hadoop zamanlaması konuları ele alınıyor.

Apache Oozie nedir?

Apache Oozie, bir iş akışı zamanlayıcısıdır. Hadoop'unBu, bağımlı işlerin iş akışını yöneten bir sistemdir. Burada, kullanıcıların Hadoop'ta paralel ve sıralı olarak çalıştırılabilen iş akışlarının Yönlendirilmiş Döngüsüz Grafiklerini (Directed Acyclic Graphs) oluşturmalarına izin verilir.

İki bölümden oluşur:

  • İş akışı motoru: İş akışı motorunun sorumluluğu, Hadoop işlerinden oluşan iş akışlarını depolamak ve çalıştırmaktır, örneğin: Harita indirgeme, Domuz, kovan.
  • Koordinatör motoru: Önceden tanımlanmış zaman çizelgelerine ve veri kullanılabilirliğine bağlı olarak iş akışı görevlerini yürütür.

Oozie ölçeklenebilir bir yapıya sahiptir ve bir Hadoop kümesinde binlerce iş akışının (her biri düzinelerce işten oluşur) zamanında yürütülmesini yönetebilir. Aşağıdaki diyagram, zamanlayıcının kümeye göre konumunu ve yönettiği işleri göstermektedir.

Apache Oozie iş akışı zamanlayıcısı, bağımlı Hadoop işlerini yönlendirilmiş döngüsel olmayan bir grafik olarak çalıştırıyor.

Oozie oldukça esnek bir yapıya sahip. İşlemleri kolayca başlatabilir, durdurabilir, askıya alabilir ve yeniden çalıştırabilirsiniz. Oozie, başarısız iş akışlarını yeniden çalıştırmayı çok kolaylaştırıyor. Kesinti veya arıza nedeniyle kaçırılan veya başarısız olan işleri yakalamanın ne kadar zor olabileceğini kolayca anlayabilirsiniz. Hatta belirli bir başarısız düğümü atlamak bile mümkün.

Proje durumu: Apache Oozie, Apache Yazılım Geliştirme Şirketi tarafından kullanımdan kaldırıldı. Foundation Şubat 2025'te ve taşınma Apache Çatı Katı Nisan 2025'te tamamlandı. Son sürüm Şubat 2021 tarihli 5.2.1 sürümü olarak kaldı ve kaynak deposu artık salt okunur durumda. Mevcut kümeler hala bunu çalıştırıyor, bu nedenle aşağıdaki mekanizmaları bilmekte fayda var, ancak yeni işlem hatları genellikle Apache Airflow üzerine kuruluyor.

Oozie nasıl çalışır?

Oozie, küme içinde bir servis olarak çalışır ve istemciler, anında veya daha sonra işlenmek üzere iş akışı tanımları gönderir.

Oozie iş akışı, eylem düğümlerinden ve kontrol akışı düğümlerinden oluşur.

Bir eylem düğümü, bir iş akışı görevini temsil eder; örneğin, dosyaları bir yere taşımak. HDFSMapReduce, Pig veya Hive işi çalıştırmak, veri içe aktarmak için kepçeveya bir shell betiği ya da yazılmış bir program çalıştırmak Java.

Bir kontrol akışı düğümü, koşullu mantık gibi yapıları mümkün kılarak eylemler arasındaki iş akışı yürütmesini kontrol eder; bu sayede önceki bir eylem düğümünün sonucuna bağlı olarak farklı dallar izlenebilir.

Başlangıç ​​Düğümü, Bitiş Düğümü ve Hata Düğümü bu düğüm kategorisine girer.

  • Düğümü Başlat iş akışı işinin başlangıcını belirtir.
  • Bitiş Düğümü İşin sonunu işaret eder.
  • Hata Düğümü Bir hatanın meydana geldiğini ve yazdırılacak ilgili hata mesajını belirtir.

Bir iş akışının yürütülmesinin sonunda, Oozie istemciyi iş akışının durumuyla ilgili olarak güncellemek için bir HTTP geri çağırma işlevi kullanır. Bir eylem düğümüne giriş veya çıkış da geri çağırma işlevini tetikleyebilir.

Oozie Kontrol Düğümleri ve Eylem Türleri

Başlangıç, bitiş ve hata noktalarının ötesinde, iş akışı XML'i, grafiği şekillendiren küçük bir kontrol düğümü sözlüğünü destekler.

  • karar: Bir ifadeyi değerlendirir ve iş akışını çeşitli dallardan birine yönlendirir; bu, switch ifadesine eşdeğerdir.
  • çatal: İşlem yolunu ikiye bölerek iki veya daha fazla eylemin paralel olarak çalışmasını sağlar.
  • katılmak: Eşleşen her bir dalın tamamlanmasını bekler ve ardından devam eder.
  • öldürmek: İş akışını derhal sonlandırır ve hata mesajını kaydeder.

Eylem düğümleri, işin kendisini kapsar ve her birinin kendi XML öğesi vardır:

  • MapReduce, Pig, Hive ve Sqoop Bu işlemler ilgili Hadoop işini başlatır.
  • Java Küme üzerinde ana bir sınıf çalıştırır; kabuk hem de ssh Komut dosyalarını çalıştır.
  • fs HDFS ev temizlikçisi görevini yerine getiriyorping Taşıma, silme, mkdir ve chmod gibi komutlar.
  • E-posta Alıcılara bildirim gönderir ve alt iş akışı başka bir iş akışı uygulamasını çağırır.

Örnek İş Akış Şeması

Aşağıdaki diyagram tracBu, başlangıç ​​düğümünden başlayarak, bir MapReduce eylemi üzerinden, ya bitiş düğümüne ya da eylem başarısız olduğunda hata yoluna kadar uzanan küçük bir iş akışıdır.

Başlangıç ​​düğümü, eylem düğümü, hata işleme ve bitiş düğümünü gösteren örnek Oozie iş akışı diyagramı.

Balçıkla Yapılan İş Türleri

Oozie, iş akışını üç seviyede tanımlar. Her katman bir altındaki katmanı sarar, bu nedenle bir paket nihayetinde birçok bireysel iş akışını kontrol eder.

Iş türü Neyi tanımlar? Tetikleyen
İş Akışı workflow.xml dosyasında yazılmış, eylem ve kontrol düğümlerinden oluşan yönlendirilmiş döngüsel olmayan bir grafik. Manuel başvuru veya bir koordinatör
Koordinatör Başlangıç ​​zamanı, bitiş zamanı ve sıklığı belirtilmiş, tek bir iş akışı için tekrarlayan bir zamanlama. Saat zamanı ve giriş verilerinin kullanılabilirliği
demet Bir veri hattı olarak birlikte yönetilen koordinatör uygulamaları koleksiyonu. Tüm koordinatörler için geçerli bir başlangıç ​​saati belirlenmiştir.

Bu ayrım pratikte önemlidir: bir iş akışı "ne çalışır" sorusuna, bir koordinatör "ne zaman çalışır" sorusuna ve bir paket ise "ne birlikte başlar ve biter" sorusuna cevap verir.

Oozie İş Akışı Uygulamasının Paketlenmesi ve Dağıtımı

Bir iş akışı uygulaması, iş akışı tanımını ve MapReduce Jar dosyaları, Pig komut dosyaları vb. gibi ilgili tüm kaynakları içerir. Uygulamaların basit bir dizin yapısını izlemesi ve Oozie'nin bunlara erişebilmesi için HDFS'ye dağıtılması gerekir.

Aşağıda örnek bir dizin yapısı gösterilmiştir:

<name of workflow>/
├── lib/
│   └── hadoop-examples.jar
└── workflow.xml

İş akışı tanım dosyası olan workflow.xml dosyasını en üst düzey dizinde (iş akışı adını taşıyan üst dizin) tutmak gereklidir. lib dizini, MapReduce sınıflarını içeren Jar dosyalarını içerir. Bu düzene uygun bir iş akışı uygulaması, Ant veya Maven gibi herhangi bir derleme aracıyla oluşturulabilir.

Bu tür bir derlemenin HDFS'ye kopyalanması için örneğin şu komut kullanılmalıdır:

% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow

Oozie İş Akışı Görevini Çalıştırma Adımları

Bu bölümde iş akışı işinin nasıl çalıştırılacağını göreceğiz. Bunu çalıştırmak için Oozie komut satırı aracını (Oozie sunucusuyla iletişim kuran bir istemci programı) kullanacağız.

1. OOZIE_'yi dışa aktarınURL Oozie komutuna hangi Oozie sunucusunu kullanacağını söyleyen ortam değişkeni (burada yerel olarak çalışan bir sunucu kullanıyoruz):

% export OOZIE_URL="http://localhost:11000/oozie"

2. İş akışı görevini şu komutu kullanarak çalıştırın:

% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run

-config seçeneği yerel bir öğeyi ifade eder Java iş akışı XML dosyasındaki parametrelerin tanımlarını içeren özellikler dosyasının yanı sıra Oozie'ye HDFS'deki iş akışı uygulamasının konumunu söyleyen oozie.wf.application.path.

Özellikler dosyasının örnek içeriği:

nameNode=hdfs://localhost:8020
jobTracker=localhost:8021
oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>

3. İş akışı görevinin durumunu öğrenin.

Bir iş akışının durumunu, '-info' seçeneğiyle birlikte 'job' alt komutunu kullanarak ve '-info'dan sonra iş kimliğini belirterek görebilirsiniz.

e.g., % oozie job -info <job id>

Çıktı, ÇALIŞIYOR, ÖLDÜRÜLDÜ veya BAŞARILI durumlarından birini gösterir.

4. Başarılı iş akışı yürütmesinin sonuçları, aşağıdaki gibi bir Hadoop komutu kullanılarak görülebilir:

% hadoop fs -cat <location of result>

Neden Oozie'yi kullanmalısınız?

Oozie'nin kullanılmasının temel amacı, Hadoop sisteminde işlenen farklı türdeki işleri yönetmektir.

İşler arasındaki bağımlılıklar, kullanıcı tarafından Yönlendirilmiş Döngüsüz Grafikler (Directed Acyclic Graphs) biçiminde belirtilir. Oozie bu bilgiyi alır ve iş akışında belirtildiği gibi doğru sırayla yürütülmelerini sağlar. Bu sayede, kullanıcının tüm iş akışını yönetmek için harcayacağı zamandan tasarruf sağlanır. Ayrıca, Oozie belirli bir işin yürütülme sıklığını belirleme olanağı da sunar.

Oozie'nin Özellikleri

  • Oozie, bir istemci API'sine ve komut satırı arayüzüne sahiptir; bunlar, işleri başlatmak, kontrol etmek ve izlemek için kullanılabilir. Java uygulama.
  • Web servis API'lerini kullanarak, işleri her yerden kontrol edebilirsiniz.
  • Oozie, periyodik olarak çalışacak şekilde zamanlanmış görevleri yürütme olanağı sunar.
  • Oozie, işler tamamlandığında e-posta bildirimi gönderme özelliğine sahiptir.

Oozie ve Apache Airflow karşılaştırması

Oozie'nin kullanım dışı kalması nedeniyle, günümüzde bir zamanlayıcıyı değerlendiren çoğu ekip, halihazırda kullandıkları sistemi Apache Airflow ile karşılaştırıyor. İki araç da aynı problemi zıt yönlerden çözüyor.

Görünüş Apaçi Oozie'si Apache Hava Akışı
Tanım dili XML olarak yazılmış iş akışları DAG'ler şu şekilde yazılır: Python kod
kapsam MapReduce, Pig, Hive ve Sqoop gibi Hadoop işlemleri etrafında geliştirilmiştir. Bulut hizmetleri, veritabanları ve konteynerler için operatörler içeren genel amaçlı kullanım.
Çizelgeleme Koordinatörlük işleri zaman ve veri kullanılabilirliğine bağlıdır. Planlanmış aralıklar ve dış koşulları bekleyen sensörler.
Proje durumu 2025'te Apache Çatı Katı'na emekli edildi; son sürüm 5.2.1 Aktif olarak geliştirilen Apache üst düzey projesi

Oozie, halihazırda çalıştırıldığı bir kümede daha basit bir seçenek olmaya devam ediyor çünkü işlemler Hadoop bileşenleriyle birebir eşleşiyor. Airflow ise özellikle bir işlem hattı Hadoop'un ötesine uzandığında, yeni her şey için pratik bir seçimdir.

SSS

Hayır. Apache Yazılımı Foundation Oozie Şubat 2025'te emekliye ayrıldı ve Nisan 2025'te Attic taşıma işlemi tamamlandı. Son sürüm Şubat 2021 tarihli 5.2.1'dir ve depo yalnızca okunabilir durumdadır, ancak belgeler çevrimiçi olarak kalmaktadır.

Yapay zekâ asistanları, tanımlanan bir işlem hattını zamanlayıcı yapılandırmasına dönüştürür, bir iş grafiğinin neden kilitlendiğini açıklar ve küme günlüklerini olası temel nedene göre özetler. İlk taslak ve önceliklendirme için kullanışlıdır, ancak üretim planını onaylamak için uygun değildir.

Copilot, hızlı bir şekilde mantıklı workflow.xml dosyaları oluşturuyor, ancak sıklıkla öğe adları uyduruyor veya yanlış şema sürümü kullanıyor. Oluşturulan XML dosyasını 5.2.1 şemasına göre doğrulayın ve önce bir test kümesinde deneme çalıştırması yapın.

Bir koordinatör, frekansı, başlangıç ​​zamanını ve bitiş zamanını veri kümesi tanımlarıyla birleştirir. Yalnızca saat bir sonraki aralığa ulaştığında ve tanımlanan her giriş veri kümesi HDFS'de mevcut olduğunda tetiklenir; bu nedenle geç gelen veriler çalıştırmayı geciktirir.

Tekrar çalıştırma eylemi ve orijinal iş kimliğiyle işi yeniden gönderin ve atlanacak veya tekrarlanacak düğümleri adlandırın. Oozie tamamlanmış eylemleri yeniden kullanır, bu nedenle yalnızca grafiğin kalan kısmı çalışır.

PREP, işin kabul edildiği ancak başlatılmadığı anlamına gelir; genellikle HDFS'deki uygulama yolu yanlış olduğu veya somutlaştırma zamanı henüz gelmediği için başlatılmaz. SUSPENDED ise birinin işi duraklattığı veya bir işlemin başarısız olduğu ve iş akışının bekletildiği anlamına gelir.

Sunucu kendi ana kullanıcısı ve keytab'ı ile çalışır ve istemciler HTTP üzerinden SPNEGO aracılığıyla kimlik doğrulaması yapar. İş akışları yetkilendirme belirteçleri taşır, böylece her işlem HDFS ve YARN'a sunucu olarak değil, gönderen kullanıcı olarak ulaşır.

Cron bir komutu çalıştırır ve sonra onu unutur. Bir zamanlayıcı tracİşler arasındaki bağımlılıkları yönetir, giriş verilerinin gelmesini bekler, her eylemin durumunu kaydeder ve yalnızca başarısız olan kısmı yeniden çalıştırmanıza olanak tanır.

Bu yazıyı şu şekilde özetleyin: