Apache Oozie Nedir? Nasıl Kullanılır? Örnek Java Uygulaması Bölüm-1/3

Oozie nedir? Ne işe yarar? Hadoop sistemindeki yeri nedir?

Hadoop en yaygın büyük veri platformu olarak piyasadaki öncülüğünü devam ettirmektedir. Hadoop ekosistemi sürekli büyümekte ve yeni ihtiyaçlar için yeni projeler ortaya çıkmakta mevcut projeler ise sürekli iyileşmekte ve gelişmektedir. Apache Oozie sürekli büyüyüp gelişen bu sistemde, yerine getirdiği rol ile önemini korumaktadır. Çünkü sistem büyüdükçe onu oluşturan unsurların görevlerini belli bir düzende yerine getirmek, zamanlamak ve koordine etmek ihtiyacı artmaktadır. ACID teoremine dayalı klasik sitemlerde şimdiye kadar gelişmiş unsurlar büyük veri dünyasında da gelişmektedir. Bu minvalde Hadoop ekosistemindeki işleri yönetmek için iş akışı yönetim ve zamanlama aracına (workflow management and scheduling) ihtiyaç vardır. İşte Oozie’nin ekosistemdeki yeri buradadır.

Oozie’nin Hadoop ekosistemi içindeki rolü; Hadoop işleri diye adlandırabileceğimiz bir çok veri aktarımı ve dosya işlemlerini programlaması ve bunların sonuçları hakkında bilgi vermesidir. Çünkü sistemde yapılan bir çok iş birbirine bağımlıdır. Başka bir deyişle bir görevin ürettiği çıktıyı başka bir görev girdi olarak kullanmaktadır. Örneğin bir seri MapReduce ve HDFS görevi verip bunları belli bir zaman çizelgesi ve ardışık düzene bağlayıp Oozie üzerinden çalışmasını sağlayabilirsiniz. Daha somut bir örnek ile Sqoop’un RDBMS’den Hive’a aktardığı tabloyu Spark kaynak veri olarak kullanıp makine öğrenmesi yapabilir ve sonuçlarını raporlamak maksadıyla kullanılan başka bir RDBMS veri tabanına Sqoop ile yazdırabilir. Yani Ooozie’ye Haoop’un orkestrasyon sistemi diyebiliriz. Hadoop yaratıcılarından birinin çocuğunun oyuncak filine verdiği addan geldiği için Oozie’nin geliştiricileri de Oozie’ye hem fil hem de Hint kültürüyle ilgisi olan Mahout(fil bakıcısı/şoförü) ismi vermeye niyet etmişler ancak Mahout kullanıldığından Birmanca’da benzer anlam taşıyan Oozie de karar kılmışlar.

Bu yazı serisi üç bölümden oluşacak ve basit bir java programını Oozie ile çalıştıracağız. Benim örnekler için kullanacağım Hadoop sistemi Cloudera’nın quickstart sandbox’u olacak. Ön gereksinimlerimiz sadece bir Hadoop ortamının olmasıdır. Bunun dışında zaten Oozie’ye ilgi duymuş birisi zaten Hadoop konusunda belli bir aşama kaydetmiştir diye düşünüyorum. En iyi öğrenme örnek üzerinden yaparak öğrenmedir prensibince tıraşı kısa kesip icraata başlıyorum.

Oozie ile örnek uygulama

Öncelikle Cloudera Manager’a tarayıcıdan erişip zaten kurulmuş bir şekilde gelen Oozie’yi çalıştıralım.
 

Oozie çalışıyor mu?

Oozie rolünün yüklü olduğu sunucuya bağlanıp (burada tek sunucu olduğundan quickstart.cludera) oozie hayatta mı sorusunu soralım:

[cloudera@quickstart ~]\$ oozie admin -oozie http://quickstart.cloudera:11000/oozie -status
System mode: NORMAL
Oozie web arayüzüne erişmek

Oozie normal cevabını aldık. Oozie hayatta mı komutunda kullandığımız adresi tarayıcıya girdiğimizde Oozie’nin web arayüzüne erişmiş oluruz.

Oozie’nin versiyonunu nasıl öğrenirim? Benim Oozie’m kaç versiyon?

Bu da oldukça basit. Yukarıdaki komutun sadece sonunu değiştirip öğrenelim:

[cloudera@quickstart ~]\$ oozie admin -oozie http://quickstart.cloudera:11000/oozie -version
Oozie server build version: 4.1.0-cdh5.7.0

Öğrenmeyi kolaylaştırmak için için Hadoop sistemine Oozie kurulurken Oozie kullanımında lazım olan örnek/alıştırma dosyalar da yükleniyor. Şimdi bu örnek dosyaları bulalım ve lokal kullanıcımızın dizininde bir yere kopyalayalım. Benim bu yazı dizisindeki kullanıcı adım cloudera.

Oozie örnek dosyalarını bulma
[cloudera@quickstart ~]\$sudo find /usr -name "oozie*examples*"

Birçok arama sonucu arasından bize lazım olan sıkıştırılmış dosya

/usr/share/doc/oozie-4.1.0+cdh5.7.0+267/demo/oozie-examples.tar.gz

Önce nerede olduğumuza bakalım ve sonra oozie_ornekler isminde bir klasör oluşturalım:

[cloudera@quickstart ~]\$ pwd
/home/cloudera
Oozie örnek dosyalarını yeni bir dizine taşıma

Klasör oluştur:

[cloudera@quickstart ~]\$ sudo mkdir oozie_ornekler

Oluşan klasörün içine oozie-examples.tar.gz dosyasını kopyalama:

[cloudera@quickstart ~]\$sudo cp /usr/share/doc/oozie-4.1.0+cdh5.7.0+267/demo/oozie-examples.tar.gz /home/cloudera/oozie_ornekler/

Kopyaladığımız dizini kontrol edelim:

[cloudera@quickstart ~]\$ ls oozie_ornekler/
oozie-examples.tar.gz

Sıkıştırılmış dosyayı açalım:

[cloudera@quickstart oozie_ornekler]\$ sudo tar xvzf oozie-examples.tar.gz
oozie örnek dosyalarını inceleme

Açılan dosyalarda neler var bakalım:

[cloudera@quickstart oozie_ornekler]\$ ls
examples  oozie-examples.tar.gz
[cloudera@quickstart oozie_ornekler]\$ ls examples/
apps  input-data  src

Önce tüm dosyalar examples klasörü içine açıldı. daha sonra examples içinde üç tana daha klasör gördük.
apps klasörü içine bakalım:

[cloudera@quickstart oozie_ornekler]\$ ls -ltr examples/apps/
total 96
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 streaming
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 sqoop-freeform
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 pig
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 map-reduce
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 hive2
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 subwf
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 ssh
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 spark
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 no-op
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 distcp
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 demo
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 custom-main
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 cron
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 aggregator
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 shell
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 java-main
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 hcatalog
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 hadoop-el
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 cron-schedule
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 bundle
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 sqoop
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 sla
drwxr-xr-x 2 1106 4001 4096 Aug 26 02:06 hive
drwxr-xr-x 3 1106 4001 4096 Aug 26 02:06 datelist-java-main

Yukarıdaki listeyi incelediğimizde Oozie ile Hadoop platformunda ne tür işleri idare edebileceğimiz hakkında fikir edinebiliriz. Bir klasörün içine bakalım (spark olsun) neler varmış:

[cloudera@quickstart oozie_ornekler]\$ ls -ltr examples/apps/spark/
total 12
-rw-r--r-- 1 1106 4001 1920 Mar 23  2016 workflow.xml
-rw-r--r-- 1 1106 4001 1019 Mar 23  2016 job.properties
drwxr-xr-x 2 root root 4096 Aug 26 02:06 lib

Lib diye ayrı bir klasör daha çıktı onun da içine bakalım ne varmış?:

[cloudera@quickstart oozie_ornekler]\$ ls -ltr examples/apps/spark/lib/
total 28
-rw-r--r-- 1 1106 4001 27652 Mar 23  2016 oozie-examples.jar

jar dosyamız varmış. Buradaki jar dosyası Oozie örneğini kullanmak için derlenmiş bir uygulamaya ait. Bir üst dizindeki workflow.xml adından da anlaşılacağı üzere iş akışı ile yapılan konfigürasyonların tutulduğu xml dosyasıdır.

Şimdiye kadar examples dosyasının içinde neler varmış göz attık. Yazı daha fazla uzamasın ikinci bölümde kaldığımız yerden devam edeceğiz.

Yazar Hakkında
Toplam 180 yazı
Erkan ŞİRİN
Erkan ŞİRİN
10 yılı aşkın süredir yurtiçi ve yurtdışında sektörde büyük veri mühendisliği, platform yönetimi ve makine öğrenmesi ile ilgili çalışmalar yürütmekte ve aynı zamanda birçok kurum ve şirkete danışmanlık ve eğitimler vermektedir. Çalışma alanları: Data ve MLOps platformları, gerçek zamanlı veri işleme, değişen veriyi yakalama (CDC) ve Lakehouse.
Yorumlar (Yorum yapılmamış)

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

×

Bir Şeyler Ara