Oozie Eğitimi: Hadoop İşlerinizi Nasıl Planlayacağınızı Öğrenin

Apache Oozie Eğitimi: Oozie, Hadoop işlerini yönetmek için bir iş akışı zamanlayıcı sistemidir. Ölçeklenebilir, güvenilir ve genişletilebilir bir sistemdir.

Bu Apache Oozie öğreticisine başlamadan önce, zamanlayıcı sisteminin nerede kullanıldığını anlayalım. Gerçek zamanlı senaryolarda, bir iş diğer işlere bağlıdır, örneğin bir MapReduce görevinin çıktısı daha fazla işlem için Hive işine geçirilebilir. Sonraki senaryo, bir dizi görevi günlük, haftalık, aylık gibi zaman temelinde veya veri kullanılabilirliğine göre zamanlamak olabilir. Apache Oozie, bu tür senaryoların üstesinden kolaylıkla gelme gücü sağlar. Apache Oozie'nin önemli bir parçası olmasının nedeni budur. .



javada fasulye nedir

Bu Apache Oozie eğitim blogunda şunları ele alacağız:



  • Apache Oozie Giriş
  • Oozie İş Akışı
  • Oozie Koordinatörü
  • Oozie Paketi
  • Kelime Sayımı İş Akışı İşi
  • Zamana Dayalı Kelime Sayımı Koordinatörü Görevi

Bu Oozie eğitimine Apache Oozie'yi tanıtarak başlayacağız. Ardından, Apache Oozie kullanılarak oluşturulabilen ve yürütülebilen iş türlerini anlayacağız.

Apache Oozie Eğitimi: Apache Oozie'ye Giriş

Apache Oozie - Oozie Eğitimi - EdurekaApache Oozie, Hadoop işlerini dağıtılmış bir ortamda yönetmek ve yürütmek için bir zamanlayıcı sistemidir. Farklı türdeki görevleri birleştirerek istenen bir boru hattı oluşturabiliriz. Bu sizin Hive, Pig, Sqoop veya MapReduce göreviniz olabilir. Apache Oozie'yi kullanarak işlerinizi de planlayabilirsiniz. Görevin bir dizisi içinde, iki veya daha fazla iş birbirine paralel çalışacak şekilde programlanabilir. Ölçeklenebilir, güvenilir ve genişletilebilir bir sistemdir.



Oozie, iş akışı eylemlerini tetiklemekten sorumlu olan açık Kaynak Java web uygulamasıdır. Sırasıyla, görevleri yürütmek için Hadoop yürütme motorunu kullanır.

Apache Oozie, geri arama ve yoklama yoluyla görevlerin tamamlandığını algılar. Oozie bir görevi başlattığında, göreve benzersiz bir geri arama HTTP URL'si sağlar ve görev tamamlandığında bu URL'yi bildirir. Görev geri arama URL'sini çağırmazsa, Oozie görevi tamamlamak için yoklayabilir.

Apache Oozie'de üç tür iş vardır:



  • Oozie İş Akışı İşleri & eksi Bunlar, yürütülecek bir dizi eylemi belirten Yönlendirilmiş Asiklik Grafiklerdir (DAG'ler).
  • Oozie Koordinatör İşleri & eksi Bunlar, zaman ve veri kullanılabilirliği ile tetiklenen iş akışı işlerinden oluşur.
  • Oozie Paketleri & eksi Bunlar, birden çok koordinatör ve iş akışı işi paketi olarak adlandırılabilir.

Şimdi tüm bu işleri tek tek anlayalım.

Apache Oozie Eğitimi: Oozie İş Akışı

İş akışı, Doğrudan Asiklik Grafikte (DAG) düzenlenen bir eylemler dizisidir. Eylemler, bir sonraki eylem yalnızca mevcut eylemin çıktısından sonra yürütülebileceğinden birbirine bağlıdır. Bir iş akışı eylemi, bir Pig eylemi, Hive eylemi, MapReduce eylemi, Shell eylemi, Java eylemi vb. Olabilir. Bir işin nasıl ve hangi koşulda çalışması gerektiğine karar vermek için karar ağaçları olabilir.

İşe bağlı olarak farklı eylem türleri oluşturabiliriz ve her eylem türünün kendine özgü etiketleri olabilir.İş akışı ve komut dosyaları veya kavanozlar, iş akışını yürütmeden önce HDFS yoluna yerleştirilmelidir.

Komut: oozie işi –oozie http: // localhost: 11000 / oozie -config job.properties -run

İşin durumunu kontrol etmek için Oozie web konsoluna gidebilirsiniz, örn. http: // ana bilgisayar_adı: 11000 . İşe tıklayarak işin durumunu göreceksiniz.

Birden fazla işi paralel olarak yürütmek istediğimiz senaryolarda, Çatal . Fork'u ne zaman kullanırsak kullanalım, Join'i fork için bir uç düğüm olarak kullanmamız gerekir. Her çatal için bir birleştirme olmalıdır. Join, paralel olarak çalışan tüm düğümlerin tek bir çatalın alt öğesi olduğunu varsayar. Örneğin, paralel olarak aynı anda iki tablo oluşturabiliriz.

Kararın çıktısına göre bir eylem yürütmek istiyorsak, karar etiketleri ekleyebiliriz. Örneğin, zaten kovan tablosuna sahipsek, onu yeniden oluşturmamız gerekmeyecektir. Bu durumda, tablo zaten mevcutsa, tablo oluşturma adımlarını çalıştırmamak için bir karar etiketi ekleyebiliriz. Karar düğümleri, büyük / küçük harf geçişine benzer bir anahtar etiketine sahiptir.

Job-tracker, name-node, script ve parametrenin değeri doğrudan aktarılabilir. Ancak bunu yönetmek zorlaşır. Bu, bir yapılandırma dosyasının (yani .property dosyasının) kullanışlı olduğu yerdir.

Apache Oozie Eğitimi: Oozie Koordinatörü

Koordinatör'ü kullanarak düzenli olarak planlanan iş akışlarının yanı sıra karmaşık iş akışlarını da planlayabilirsiniz. Oozie Koordinatörleri, iş akışı işlerini zamana, verilere veya olay tahminlerine göre tetikler. İş koordinatörü içindeki iş akışları, verilen koşul yerine getirildiğinde başlar.

Koordinatörlük işleri için gerekli tanımlar şunlardır:

  • Başlat & eksi İş için başlangıç ​​tarih saati.
  • son & eksi İş için bitiş tarih saati.
  • saat dilimi & eksi koordinatör uygulamasının Zaman Dilimi.
  • Sıklık & eksi İşlerin dakika cinsinden gerçekleştirilme sıklığı.

Kontrol Bilgileri için birkaç özellik daha mevcuttur:

  • zaman aşımı & eksi Bir eylemin ek koşulları yerine getirmek için atılmadan önce bekleyeceği dakika cinsinden maksimum süredir. 0, eylemin gerçekleştirildiği anda tüm girdi olaylarının karşılanmaması durumunda eylemin hemen zaman aşımına uğraması gerektiğini belirtir. -1 zaman aşımı olmadığını gösterir, eylem sonsuza kadar bekleyecektir. Varsayılan değer -1'dir.
  • eşzamanlılık & eksi Paralel olarak çalışabilen bir iş için maksimum eylem sayısı. Varsayılan değer 1'dir.
  • icra - Koordinatör işinin birden çok örneği yürütme kriterlerini karşılamışsa yürütme sırasını belirtir. Olabilir:
    • FIFO (varsayılan)
    • LIFO
    • LAST_ONLY

Komut: oozie işi –oozie http: // localhost: 11000 / oozie -config -run

Tanımda kullanılan bir yapılandırma özelliği, koordinatör işi gönderirken iş yapılandırmasıyla sağlanmadıysa, iş gönderimi başarısız olur.

Apache Oozie Eğitimi: Oozie Paketi

Oozie Bundle sistemigenellikle veri hattı adı verilen bir dizi koordinatör uygulamasını tanımlamanıza ve yürütmenize olanak tanır. Bir Oozie paketinde, koordinatör uygulamalar arasında açık bir bağımlılık yoktur. Ancak, örtük bir veri uygulama ardışık düzeni oluşturmak için koordinatör uygulamalarının veri bağımlılığını kullanabilirsiniz.Paketi başlatabilir / durdurabilir / askıya alabilir / devam ettirebilir / yeniden çalıştırabilirsiniz. Daha iyi ve kolay bir operasyonel kontrol sağlar.

Başlama zamanı & eksi Bir paketin başlatılması ve koordinatör uygulamalarını göndermesi gereken zaman.

Bu Apache Oozie eğitiminde ilerledikçe, İş Akışı İşinin nasıl oluşturulacağını anlayacağız.

Apache Oozie Eğitimi: Kelime Sayımı İş Akışı İşi

Bu örnekte, Apache Oozie'yi kullanarak bir Kelime Sayma İşini yürüteceğiz. Burada bir MapReduce kelime sayımı programının nasıl yazılacağını tartışmayacağız. Yani, bu Apache Oozie öğreticisini izlemeden önce bunu indirmeniz gerekir kelime sayısı kavanozu dosya. Şimdi, tüm dosyaları yerleştireceğimiz bir WordCountTest dizini oluşturun. Aşağıdaki resimlerde gösterildiği gibi kelime sayısı kavanozunu yerleştireceğimiz bir kitaplık dizini oluşturun.

Şimdi ilerleyelim ve oluşturalım job.properties & workflow.xml iş ve bununla ilişkili parametreleri belirleyeceğimiz dosyalar.

job.properties

İlk olarak, bir job.properties NameNode & ResourceManager'ın yolunu tanımladığımız dosya. İş akışı dizini yolunu çözmek için NameNode yolu gereklidir ve jobTracker yolu, işin YARN'a gönderilmesine yardımcı olacaktır. Yolunu sağlamalıyız workflow.xml HDFS'de depolanması gereken dosya.

workflow.xml

Ardından, workflow.xml dosyası, tüm eylemlerimizi tanımlayıp yürüteceğimiz yer. Öncelikle iş akışı-uygulama adını belirtmemiz gerekiyor, yani WorkflowRunnerTest . Ardından, düğüm başlat . Başlangıç ​​düğümü ( içinde başlamak etiket ) bir iş akışı işinin giriş noktasıdır. İşin başlaması gereken ilk iş akışı düğümüne doğru işaret eder. Aşağıdaki resimde görebileceğiniz gibi, sonraki düğüm kavşak0 işin nereden başlayacağı.

Ardından, eylem düğümünde gerçekleştirilecek görevi belirliyoruz. Burada bir MapReduce WordCount görevi yürütüyoruz. Bu MapReduce görevini yürütmek için gerekli konfigürasyonları belirtmemiz gerekiyor. Job tracker & NameNode adresini tanımlıyoruz.

Sırada, eylemi yürütmeden önce özellikle dizin temizliği için kullanılan hazırlanmış öğedir. Burada HDFS'de silme işlemini gerçekleştiriyoruz. out1 zaten oluşturulmuşsa klasör. Hazırla etiketi, işi yürütmeden önce bir klasör oluşturmak veya silmek için kullanılır. Daha sonra iş kuyruğu adı, mapper sınıfı, indirgeyici sınıfı, çıktı anahtarı sınıfı ve çıktı değeri sınıfı gibi MapReduce özelliklerini belirliyoruz.

Son MapReduce görev yapılandırması, HDFS'deki giriş ve çıkış dizinidir. Giriş dizini veri NameNode'un kök yolunda depolanan dizin . Sonunda, iş başarısız olursa kill öğesini belirleyeceğiz.

Şimdi hareket etmeliyiz WordCountTest HDFS'deki klasör, belirttiğimiz gibi oozie.wf.application.path mülk job.properties dosya. Yani kopyalıyoruz WordCountTest Hadoop kök dizinindeki klasör.

Komut: hadoop fs -put WordCountTest /

Doğrulamak için, NameNode Web Kullanıcı Arayüzüne gidebilir ve klasörün HDFS kök dizinine yüklenip yüklenmediğini kontrol edebilirsiniz.

Şimdi, hepimiz ilerlemeye ve iş akışı işini yürütmeye hazırız.

Komut: oozie işi –oozie http: // localhost: 11000 / oozie -config job.properties -run

İşimizi yaptıktan sonra iş kimliğini alacağız (ör. 0000009-171219160449620-oozie-edur-W ) yukarıdaki resimde gösterildiği gibi. Oozie Web Kullanıcı Arayüzünde gönderdiğiniz işi gidip kontrol edebilirsiniz, yani localhost: 11000 . Aşağıdaki görselde görebilirsiniz, göndermiş olduğumuz iş aşağıda listelenmiştir.

Yukarıdaki görüntüde gözlemlerseniz, İş Kimliğini, İşin adını, işin durumunu, işi gönderen kullanıcıyı, oluşturma zamanını, başlangıç ​​ve son değişikliği göreceksiniz. Aşağıdakiler gibi daha fazla ayrıntı almak için işe tıklayabilirsiniz:

  • İş Bilgisi

  • İş Tanımı

  • İş Yapılandırması

İşin durumu başarılı olduktan sonra, HDFS kök dizinine gidip çıktı dizininin oluşturulup oluşturulmadığını kontrol etmemiz gerekiyor.

Gördüğünüz gibi sızmak dizini HDFS'de oluşturulmuştur, bu yüzden şimdi oluşturulan çıktı dosyasına bakalım.

Bir Oozie iş akışı işini nasıl oluşturacağımızı gördüğümüz gibi, şimdi bu Apache Oozie Eğitim blogunda ilerleyeceğiz ve nasıl bir koordinatör işi oluşturacağımızı anlayacağız.

Apache Oozie Eğitimi: Zamana Dayalı Kelime Sayımı Koordinatörü İşi

Bu örnekte, belirli bir zaman aralığından sonra yürütülecek, zamana dayalı bir kelime sayısı koordinatörü işi oluşturacağız. Günlük veya periyodik olarak yürütülmesi gereken Apache Oozie'yi kullanarak bir iş oluşturabilir ve planlayabilirsiniz.

fibonacci sayıları c ++

Bu Apache Oozie eğitiminde hızlı bir şekilde ilerleyelim ve bir koordinatör işi oluşturalım. Burada üç dosya oluşturacağız, yani coordinator.properties , coordinator.xml & workflow.xml dosya. Yine, burada w'yi yerleştireceğiz ordcount içindeki kavanoz lib Aşağıdaki resimde gösterildiği gibi dizin.

Şimdi bu dosyalara ayrı ayrı bakalım. İlk olarak coordinator.properties dosyasıyla başlayacağız.

Burada, iş akışının yürütüleceği sıklığı belirliyoruz. Frekans her zaman dakika cinsinden ifade edilir. Bizim durumumuzda, bu koordinatörlük işi belirlenen saatler arasında saatte bir yapılacaktır. Frekans, veri setlerinin üretildiği periyodik aralıkları yakalamak için kullanılır ve koordinatör uygulamalarının çalışması planlanır.

Sıklığı dakika, saat, gün ve ay olarak tanımlamak için aşağıdaki biçimi kullanın:

$ {koordinat: dakika (int n)} n $ {koordinat: dakika (45)} -> 45
$ {koordinat: saat (int n)} n * 60 $ {coord: hours (3)} -> 180
$ {koordinat: günler (int n)} değişken $ {coord: days (2)} -> dakika, geçerli tarihten itibaren 2 tam gün içinde
$ {koordinat: aylar (int n)} değişken $ {coord: months (1)} -> dakika, geçerli tarihten itibaren 1 tam ay içinde

Ardından, işin başlangıç ​​ve bitiş zamanını yukarıdaki resimde gösterildiği gibi tanımlıyoruz. Başlangıç ​​saati iş için başlangıç ​​tarih saatidir & bitiş zamanı işin bitiş tarih saatidir.

Ardından, HDFS'deki workflow.xml dosyasına başvurmak ve işleri sırasıyla YARN'ye göndermek için kullanılacak NameNode ve ResourceManager url'sini belirliyoruz. Sonunda, HDFS'de saklayacağımız workflow.xml yolunu belirliyoruz. Ayrıca tüm dosyaların & lib dizininin saklanacağı uygulama yolunu da belirteceğiz.

İkinci dosya coordinator.xml belirttiğimiz tüm özellikleri kullanacağımız yer coordinator.properties dosya. Şimdi, önce koordinatör uygulamanın özelliklerini, yani ad, sıklık ve saat dilimini belirleyeceğiz. Ardından iş akışlarını tek tek belirleyeceğiz. Burada sadece bir iş akışımız var. Böylece, eylem öğesi içinde, uygulama yolunu belirleyeceğimiz iş akışı öğesi oluşturacağız.

Daha sonra, ilerleyerek yaratmak zorundayız workflow.xml görevi belirleyeceğimiz dosya. Şuna benzer workflow.xml iş akışı işinde oluşturduğumuz dosya.

Şimdi yine, bunu hareket ettireceğiz WordCountTest_TimedBased HDFS dizini.

Komut : hadoop fs -put WordCountTest_TimeBased /

Şimdi, hepimiz ilerlemeye ve bu koordinatör işini bu Oozie Eğitiminde yürütmeye hazırız. Devam edelim ve uygulayalım.

Komut : oozie işi –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

Bu koordinatör iş kimliğini not edin (ör. 0000010-171219160449620-oozie-edur-C). İşinizi Oozie Web Kullanıcı Arayüzünde izlemenize yardımcı olacaktır.

Oozie Web Kullanıcı Arayüzündeki Koordinatör İşler sekmenizde listelenen işi görebilirsiniz. İş Akışı işine benzer şekilde, işin adı, durumu, kullanıcısı, sıklığı, başlangıç ​​ve bitiş zamanına sahibiz. Belirli bir işe tıkladığınızda, işin ayrıntılarını aşağıdaki resimlerde gösterildiği gibi göreceksiniz.

  • Koordinatör İş Bilgisi

  • Koordinatör İş Tanımı

Java'da değere göre geçmek
  • Koordinatör İş Yapılandırması

Şimdi, farklı sekmelere baktığımız gibi. Çıktı klasörünün oluşturulacağı HDFS kök dizinine geri döneceğiz. Aşağıdaki resimde görebileceğiniz gibi, oozieTimeBasedout dizin oluşturuldu, belirttiğimiz gibi workflow.xml dosya.

Şimdi yaratılan çıktı dosyasına bir göz atalım.

Umarım bu Apache Oozie Tutorial blogunu bilgilendirici bulmuşsunuzdur. Daha fazlasını öğrenmek istiyorsanız, bunun üzerinden geçebilirsiniz. Bu size Büyük Veri ve Hadoop'un Büyük Veri ile ilgili zorlukları nasıl çözdüğünü anlatır.

Artık Apache Oozie'yi anladığınıza göre, Dünya çapında 250.000'den fazla memnun öğrenciden oluşan bir ağa sahip güvenilir bir çevrimiçi öğrenme şirketi olan Edureka tarafından. Edureka Büyük Veri Hadoop Sertifikasyon Eğitimi kursu, öğrencilerin Perakende, Sosyal Medya, Havacılık, Turizm, Finans alanında gerçek zamanlı kullanım durumlarını kullanarak HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume ve Sqoop konularında uzman olmalarına yardımcı olur.

Bizim için bir sorunuz mu var? Lütfen yorum bölümünde belirtin, size geri döneceğiz.