Apache Oozie Eğitimi: Nedir, İş Akışı, Örnek – Hadoop
Oozie nedir?
Apache Oozie, Hadoop için bir iş akışı zamanlayıcısıdır. Bağımlı işlerin iş akışını yürüten bir sistemdir. Burada kullanıcıların oluşturmasına izin verilir Yönlendirilmiş Asiklik Grafikler Hadoop'ta paralel ve sıralı olarak çalıştırılabilen iş akışları.
İki bölümden oluşur:
-
İş akışı motoru: Bir iş akışı motorunun sorumluluğu, örneğin MapReduce, Pig, Hive gibi Hadoop işlerinden oluşan iş akışlarını depolamak ve çalıştırmaktır.
- Koordinatör motoru: İş akışı işlerini önceden tanımlanmış programlara ve verilerin kullanılabilirliğine göre çalıştırır.
Oozie ölçeklenebilir ve bir Hadoop kümesindeki binlerce iş akışının (her biri düzinelerce işten oluşan) zamanında yürütülmesini yönetebilir.
Oozie de oldukça esnektir. İşleri 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ır. Kesinti veya başarısızlık nedeniyle kaçırılan veya başarısız olan işleri tamamlamanın ne kadar zor olabileceğini kolayca anlayabilirsiniz. Belirli bir başarısız düğümü atlamak bile mümkündür.
Oozie nasıl çalışır?
Oozie kümede bir hizmet olarak çalışır ve istemciler iş akışı tanımlarını anında veya daha sonra işlenmek üzere gönderir.
Oozie iş akışı şunlardan oluşur: eylem düğümleri ve kontrol akışı düğümleri.
An eylem düğümü bir iş akışı görevini temsil eder; örneğin, dosyaları HDFS'ye taşımak, bir MapReduce, Pig veya kovan işleri yapmak, Sqoop kullanarak verileri içe aktarmak veya yazılmış bir programın kabuk komut dosyasını çalıştırmak Java.
A kontrol akışı düğümü Önceki eylem düğümünün sonucuna bağlı olarak farklı dalların izlenebileceği koşullu mantık gibi yapılara izin vererek eylemler arasındaki iş akışı yürütülmesini kontrol eder.
Düğümü Başlat, 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.
Son Düğüm, işin bittiğini gösterir.
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, istemciyi iş akışı durumuyla güncellemek için Oozie tarafından HTTP geri çağrısı kullanılır. Bir eylem düğümüne giriş veya çıkış da geri aramayı tetikleyebilir.
Örnek İş Akış Şeması
Oozie iş akışı uygulamasını paketleme ve dağıtma
Bir iş akışı uygulaması, iş akışı tanımından ve MapReduce Jar dosyaları, Pig komut dosyaları vb. gibi tüm ilişkili kaynaklardan oluşur. Uygulamaların basit bir dizin yapısını izlemesi gerekir ve HDFS Oozie'nin onlara erişebilmesi için.
Örnek bir dizin yapısı aşağıda gösterilmiştir.
<name of workflow>/</name> ??? lib/ ? ??? hadoop-examples.jar ??? workflow.xml
Workflow.xml'yi (bir iş akışı tanım dosyası) üst düzey dizinde (iş akışı adını taşıyan üst dizin) tutmak gerekir. Lib dizini MapReduce sınıflarını içeren Jar dosyalarını içerir. Bu düzene uygun iş akışı uygulaması, Ant veya Maven gibi herhangi bir oluşturma aracıyla oluşturulabilir.
Böyle bir yapının bir komut kullanılarak HDFS'ye kopyalanması gerekir, örneğin –
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Oozie iş akışı işini ç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 komutuna hangi Oozie sunucusunun kullanılacağını söyleyen OOZIE_URL ortam değişkenini dışa aktarın (burada yerel olarak çalışan bir tane kullanıyoruz):
% export OOZIE_URL="http://localhost:11000/oozie"
2. İş akışı işini şunu 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ışı işinin durumunu alın.
İş akışı işinin durumu, 'job' alt komutunu '-info' seçeneğiyle kullanarak ve '-info'dan sonra iş kimliğini belirterek görülebilir.
e.g., % oozie job -info <job id>
Çıkış ÇALIŞIYOR, ÖLDÜRÜLDÜ veya BAŞARILI durumunu gösterir.
4. Başarılı iş akışı yürütmenin sonuçları, aşağıdaki gibi Hadoop komutu kullanılarak görülebilir:
% hadoop fs -cat <location of result>
Neden Oozie'yi kullanmalısınız?
Oozie'yi kullanmanı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üsel Olmayan Grafikler biçiminde belirtilir. Oozie bu bilgileri kullanır ve bunların iş akışında belirtildiği şekilde doğru sırayla yürütülmesiyle ilgilenir. Bu şekilde kullanıcının iş akışının tamamını yönetme süresinden tasarruf edilir. Ek olarak, Oozie'nin belirli bir işin gerçekleştirilme sıklığını belirlemeye yönelik bir hükmü vardır.
Oozie'nin Özellikleri
- Oozie, işi başlatmak, kontrol etmek ve izlemek için kullanılabilecek istemci API'sine ve komut satırı arayüzüne sahiptir. Java uygulama.
- Web Hizmeti API'lerini kullanarak işleri her yerden kontrol edebilirsiniz.
- Oozie'nin periyodik olarak çalışması planlanan işleri yürütme olanağı var.
- Oozie'de işlerin tamamlanmasıyla birlikte e-posta bildirimleri gönderme özelliği bulunmaktadır.