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.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Fazla kilolardan mı şikayetçisiniz? O halde neden mide küçültme ameliyatı nı denemiyorsunuz. mide küçültme ameliyatı, zayıflamak isteyenler için kesin bir çözüm sunuyor. Üstelik çok kısa bir süre içersinde hayal ettiğiniz kilolara kavuşabilirsiniz.
Caminin önünde ve iki yanında geniş cami halısı dış avlusu olup bunun çevresi pencereli duvarlarla çevrilidir. Bu avulya 3 ü cephede olmak üzere, 8 kapıdan girilir. Şadırvan avlusu, 26 adet granit mermer ve porfir sütuna oturtulmuş, 30 kubbeyle çevrili geniş alandır. Mermer döşemeli bu geniş sahanın ortasında 6 mermer sütunlu şadırvan, sahanın azametini gösterir. Şadırvanın kemerleri, kabartma olarak Rumi geçmelerle ve köşebentleri, kabartma, lale ve karanfil motifleriyle bezelidir. İç avluya, biri cepheden ikisi yandan olmak üzere herbiri merdivenli 3 kapıdan girilmektedir. Bu kapılarla dış avlunun cümle kapısı, ozamana kadar benzeri görülmemiş bronz kapılardır. Kubbeden aşağı doğru indikçe mekan yayılmaktadır. Bu piramidel yükselme ve yayılma sonucunda göz yanlara ve yukarıya doğru aynı mesafelere ulaşmaktadır. Bu özelliklerden dolayı, mekanın neresinde olursanız olun, bütün mekana hakim görüş sağlarsınız. Kubbe yaklaşık olarak 43 metre yükseklikte ve köşeleri pandantifle doldurulmuş 4 muazzam kemer üzerine oturtulmaktadır. Caminin su basmanı üzerinde olması ve kubbe yüksekliği nedeniyle pencereleri oldukça fazladır. Böylece caminin içini süsleyen binlerce çini ve kalem işleri tatlı ışık altında görülmektedir. Caminin içindeki en önemli unsur, ince işçilikle yontulmuş mermerden yapılma mihraptır. Bitişik duvarları, seramik çinilerle kaplanmıştır fakat çevresindeki çok sayıdaki pencere onu daha az ihtişamlı gösterir. Mihrabın sağında, Caminin en kalabalık halinde dahi olsa, herkesin imamı rahatça duyabileceği şekilde dekore edilmiş mimber bulunur. Caminin içi her katında alçak düzeyde olmak üzere 50 farklı lale deseninden üretilmiş 20binden fazla çini ile döşenmiştir. Alt seviyelerdeki çiniler, geleneksel galerideki çinilerin desenleri çiçekler meyveler ve servilerle gösterişli ve ihtişamlıdır.