Tutorial Oozie: Pelajari Cara Menjadwalkan Pekerjaan Hadoop Anda



Tutorial Apache Oozie: Oozie adalah sistem penjadwal alur kerja untuk mengelola pekerjaan Hadoop. Ini adalah sistem yang terukur, andal, dan dapat diperluas.

Sebelum memulai tutorial Apache Oozie ini, mari kita pahami di mana sistem penjadwal digunakan. Dalam skenario waktu nyata, satu pekerjaan bergantung pada pekerjaan lain, seperti output dari tugas MapReduce mungkin diteruskan ke pekerjaan Hive untuk diproses lebih lanjut. Skenario berikutnya dapat berupa, menjadwalkan serangkaian tugas berdasarkan waktu seperti harian, mingguan, bulanan, atau berdasarkan ketersediaan data. Apache Oozie memberi Anda kemampuan untuk menangani skenario semacam ini dengan mudah. Inilah mengapa Apache Oozie menjadi bagian penting dari .

Di blog tutorial Apache Oozie ini, kami akan membahas:





  • Pengenalan Apache Oozie
  • Alur Kerja Oozie
  • Koordinator Oozie
  • Bundel Oozie
  • Pekerjaan Alur Kerja Jumlah Kata
  • Pekerjaan Koordinator Penghitungan Kata Berbasis Waktu

Kami akan memulai tutorial Oozie ini dengan memperkenalkan Apache Oozie. Selanjutnya, kita akan memahami jenis pekerjaan yang dapat dibuat & dijalankan menggunakan Apache Oozie.

Tutorial Apache Oozie: Pengantar Apache Oozie

Apache Oozie - Tutorial Oozie - EdurekaApache Oozie adalah sistem penjadwal untuk mengelola & menjalankan tugas Hadoop dalam lingkungan terdistribusi. Kita dapat membuat pipeline yang diinginkan dengan menggabungkan berbagai jenis tugas. Ini bisa menjadi tugas Sarang, Babi, Sqoop atau MapReduce Anda. Menggunakan Apache Oozie Anda juga dapat menjadwalkan pekerjaan Anda. Dalam urutan tugas, dua atau lebih pekerjaan juga dapat diprogram untuk berjalan paralel satu sama lain. Ini adalah sistem yang terukur, andal, dan dapat diperluas.



Oozie adalah aplikasi web Java Open Source, yang bertanggung jawab untuk memicu tindakan alur kerja. Itu, pada gilirannya, menggunakan mesin eksekusi Hadoop untuk menjalankan tugas.

Apache Oozie mendeteksi penyelesaian tugas melalui callback dan polling. Saat Oozie memulai tugas, Oozie menyediakan URL HTTP panggilan balik unik untuk tugas tersebut dan memberi tahu URL tersebut saat tugas selesai. Jika tugas gagal memanggil URL panggilan balik, Oozie bisa mengumpulkan tugas untuk diselesaikan.

Ada tiga jenis pekerjaan di Apache Oozie:



  • Pekerjaan Alur Kerja Oozie & minus Ini adalah Grafik Asiklik Terarah (DAG) yang menentukan urutan tindakan yang akan dijalankan.
  • Pekerjaan Koordinator Oozie & minus Ini terdiri dari pekerjaan alur kerja yang dipicu oleh waktu dan ketersediaan data.
  • Bundel Oozie & minus Ini dapat disebut sebagai paket beberapa koordinator dan pekerjaan alur kerja.

Sekarang, mari kita pahami semua pekerjaan ini satu per satu.

Tutorial Apache Oozie: Alur Kerja Oozie

Alur kerja adalah urutan tindakan yang diatur dalam Grafik Asiklik Langsung (DAG). Tindakan bergantung satu sama lain, karena tindakan berikutnya hanya dapat dijalankan setelah keluaran dari tindakan saat ini. Tindakan alur kerja dapat berupa tindakan Pig, tindakan Hive, tindakan MapReduce, tindakan Shell, tindakan Java, dll. Ada pohon keputusan untuk memutuskan bagaimana dan pada kondisi apa pekerjaan harus dijalankan.

Kita dapat membuat berbagai jenis tindakan berdasarkan pekerjaan dan setiap jenis tindakan dapat memiliki jenis tagnya sendiri.Alur kerja dan skrip atau jars harus ditempatkan di jalur HDFS sebelum menjalankan alur kerja.

Perintah: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Untuk memeriksa status pekerjaan, Anda dapat pergi ke konsol web Oozie, mis. http: // host_name: 11000 . Dengan mengklik pekerjaan, Anda akan melihat status pekerjaan tersebut.

desimal ke kode python biner

Dalam skenario, di mana kami ingin menjalankan banyak pekerjaan secara paralel, kami dapat menggunakan Garpu . Kapanpun kita menggunakan fork, kita harus menggunakan Join sebagai simpul akhir untuk fork. Untuk setiap garpu harus ada gabungan. Gabung mengasumsikan bahwa semua node yang dijalankan secara paralel, adalah anak dari satu garpu. Misalnya, kita dapat membuat dua tabel sekaligus secara paralel.

Jika kita ingin menjalankan suatu tindakan berdasarkan keluaran keputusan, kita dapat menambahkan tag keputusan. Misalnya, jika kita sudah memiliki tabel sarang, kita tidak perlu membuatnya lagi. Dalam situasi tersebut, kita dapat menambahkan tag keputusan untuk tidak menjalankan langkah-langkah pembuatan tabel jika tabel sudah ada. Node keputusan memiliki tag switch yang mirip dengan switch case.

Nilai job-tracker, name-node, script dan param dapat diteruskan secara langsung. Tapi, ini menjadi sulit untuk dikelola. Di sinilah file konfigurasi (mis. File properti) berguna.

Tutorial Apache Oozie: Koordinator Oozie

Anda bisa menjadwalkan alur kerja kompleks serta alur kerja yang dijadwalkan secara teratur menggunakan Koordinator. Koordinator Oozie memicu pekerjaan alur kerja berdasarkan waktu, data, atau predikat peristiwa. Alur kerja di dalam koordinator pekerjaan dimulai ketika kondisi yang diberikan terpenuhi.

Definisi yang diperlukan untuk pekerjaan koordinator adalah:

  • Mulailah & minus Mulai tanggal waktu untuk pekerjaan itu.
  • akhir & minus Akhir waktu untuk pekerjaan itu.
  • zona waktu & minus Zona waktu aplikasi koordinator.
  • frekuensi & minus Frekuensi, dalam menit, untuk menjalankan pekerjaan.

Beberapa properti lainnya tersedia untuk Informasi Kontrol:

  • waktu habis & minus Waktu maksimum, dalam menit, di mana suatu tindakan akan menunggu untuk memenuhi ketentuan tambahan, sebelum dibuang. 0 menunjukkan bahwa jika semua peristiwa masukan tidak dipenuhi pada saat perwujudan tindakan, tindakan harus segera habis. -1 menunjukkan tidak ada batas waktu, tindakan akan menunggu selamanya. Nilai defaultnya adalah -1.
  • konkurensi & minus Jumlah maksimum tindakan untuk pekerjaan yang dapat berjalan paralel. Nilai defaultnya adalah 1.
  • eksekusi - Ini menentukan urutan eksekusi jika beberapa contoh pekerjaan koordinator telah memenuhi kriteria eksekusinya. Bisa jadi:
    • FIFO (default)
    • LIFO
    • LAST_ONLY

Perintah: pekerjaan oozie –oozie http: // localhost: 11000 / oozie -config -jalankan

Jika properti konfigurasi yang digunakan dalam definisi tidak disediakan dengan konfigurasi pekerjaan saat mengirimkan pekerjaan koordinator, pengiriman pekerjaan akan gagal.

Tutorial Apache Oozie: Bundel Oozie

Sistem Bundel Ooziememungkinkan Anda untuk menentukan dan mengeksekusi sekumpulan aplikasi koordinator, yang sering disebut pipeline data. Dalam bundel Oozie, tidak ada ketergantungan eksplisit di antara aplikasi koordinator. Namun, Anda bisa menggunakan ketergantungan data aplikasi koordinator untuk membuat pipeline aplikasi data implisit.Anda dapat memulai / menghentikan / menangguhkan / melanjutkan / menjalankan kembali bundel. Ini memberikan kontrol operasional yang lebih baik dan mudah.

Waktu kick-off & minus Waktu ketika bundel harus memulai dan mengirimkan aplikasi koordinator.

Melanjutkan tutorial Apache Oozie ini, kita akan memahami cara membuat Workflow Job.

Tutorial Apache Oozie: Pekerjaan Alur Kerja Word Count

Dalam contoh ini, kita akan menjalankan Pekerjaan Hitung Kata menggunakan Apache Oozie. Di sini kita tidak akan membahas tentang bagaimana menulis program penghitungan kata MapReduce. Jadi, sebelum mengikuti tutorial Apache Oozie ini, Anda perlu mengunduh ini stoples jumlah kata mengajukan. Sekarang, buat direktori WordCountTest tempat kita akan menempatkan semua file. Buat direktori lib di mana kita akan menempatkan toples jumlah kata seperti yang ditunjukkan pada gambar di bawah ini.

Sekarang, ayo maju & buat job.properties & workflow.xml file, di mana kami akan menentukan pekerjaan dan parameter yang terkait dengannya.

job.properties

Pertama, kami membuat file job.properties file, di mana kita mendefinisikan jalur NameNode & ResourceManager. Jalur NameNode diperlukan untuk menyelesaikan jalur direktori alur kerja & jalur jobTracker akan membantu dalam mengirimkan pekerjaan ke YARN. Kami perlu menyediakan jalur workflow.xml file, yang harus disimpan dalam HDFS.

workflow.xml

Selanjutnya, kita perlu membuat file workflow.xml file, di mana kita akan mendefinisikan semua tindakan kita dan menjalankannya. Pertama, kita perlu menentukan nama aplikasi alur kerja, mis. WorkflowRunnerTest . Kemudian, kami menentukan file mulai node . Node awal ( di itu mulai untuk menandai ) adalah titik masuk untuk pekerjaan alur kerja. Ini menunjuk ke node alur kerja pertama dari mana pekerjaan harus dimulai. Seperti yang Anda lihat pada gambar di bawah, node berikutnya adalah intersection0 dari mana pekerjaan akan dimulai.

Selanjutnya, kami menentukan tugas yang akan dilakukan, di node tindakan. Kami sedang menjalankan tugas MapReduce WordCount di sini. Kita perlu menentukan konfigurasi yang diperlukan untuk menjalankan tugas MapReduce ini. Kami mendefinisikan pelacak pekerjaan & alamat NameNode.

Berikutnya adalah elemen yang disiapkan, yang digunakan secara eksklusif untuk pembersihan direktori, sebelum menjalankan tindakan. Di sini kami melakukan operasi delete di HDFS untuk menghapus file out1 folder jika sudah dibuat. Siapkan tag digunakan untuk membuat atau menghapus folder sebelum menjalankan pekerjaan. Kemudian kita menentukan properti MapReduce seperti nama antrian pekerjaan, kelas mapper, kelas peredam, kelas kunci keluaran & kelas nilai keluaran.

Konfigurasi tugas MapReduce terakhir adalah direktori input & output di HDFS. Direktori masukan adalah data direktori, yang disimpan di jalur akar NameNode . Terakhir, kami akan menentukan elemen kill jika pekerjaan gagal.

cara membuat heap di java

Sekarang kita perlu memindahkan file WordCountTest folder di HDFS, seperti yang telah kami tentukan di oozie.wf.application.path properti di job.properties mengajukan. Jadi, kami menyalin file WordCountTest folder di direktori root Hadoop.

Perintah: hadoop fs -put WordCountTest /

Untuk memverifikasi, Anda dapat pergi ke NameNode Web UI dan memeriksa apakah folder telah diunggah di direktori root HDFS atau belum.

Sekarang, kita siap untuk melanjutkan dan menjalankan pekerjaan alur kerja.

Perintah: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Setelah kami melaksanakan pekerjaan kami, kami akan mendapatkan id pekerjaan (mis. 0000009-171219160449620-oozie-edur-W ) seperti yang ditunjukkan pada gambar di atas. Anda dapat pergi dan memeriksa pekerjaan yang telah Anda kirimkan di Oozie Web UI yaitu. localhost: 11000 . Anda dapat melihat pada gambar di bawah ini, pekerjaan yang telah kami kirimkan terdaftar.

Jika Anda melihat gambar di atas, Anda akan melihat ID Pekerjaan, nama Pekerjaan, status pekerjaan, pengguna yang mengirimkan pekerjaan, waktu pembuatan, mulai & modifikasi terakhir. Anda dapat mengklik pekerjaan untuk mendapatkan detail lebih lanjut seperti:

  • Info Pekerjaan

  • Definisi Pekerjaan

  • Konfigurasi Pekerjaan

Saat status pekerjaan berhasil, jadi kita perlu pergi ke direktori root HDFS dan memeriksa apakah direktori keluaran telah dibuat atau belum.

Seperti yang Anda lihat, file oozieout direktori telah dibuat di HDFS, jadi sekarang mari kita lihat file keluaran yang telah dibuat.

Seperti yang telah kita lihat cara membuat pekerjaan alur kerja Oozie, sekarang kita akan melanjutkan di blog Tutorial Apache Oozie ini dan memahami cara membuat pekerjaan koordinator.

Tutorial Apache Oozie: Pekerjaan Koordinator Penghitungan Kata Berbasis Waktu

Dalam contoh ini, kami akan membuat pekerjaan koordinator jumlah kata berbasis waktu yang akan dijalankan setelah interval waktu tertentu. Anda dapat membuat dan menjadwalkan pekerjaan menggunakan Apache Oozie yang harus dijalankan setiap hari atau secara berkala.

Mari kita lanjutkan dengan cepat dalam tutorial Apache Oozie ini dan membuat pekerjaan koordinator. Di sini kita akan membuat tiga file yaitu koordinator.properties , koordinator.xml & workflow.xml mengajukan. Sekali lagi, di sini kita akan menempatkan w ordcount toples di dalam lib direktori seperti yang ditunjukkan pada gambar di bawah ini.

Sekarang mari kita lihat file-file ini satu per satu. Pertama, kita akan mulai dengan file coordinator.properties.

Di sini, kami menentukan frekuensi di mana alur kerja akan dijalankan. Frekuensi selalu dinyatakan dalam menit. Dalam kasus kami, pekerjaan koordinator ini akan dijalankan setiap satu jam sekali antara waktu yang ditentukan. Frekuensi digunakan untuk menangkap interval periodik di mana kumpulan data diproduksi, dan aplikasi koordinator dijadwalkan untuk dijalankan.

Untuk menentukan frekuensi dalam menit, jam, hari & bulan gunakan format berikut:

$ {coord: menit (int n)} n $ {coord: menit (45)} -> 45
$ {coord: jam (int n)} n * 60 $ {coord: jam (3)} -> 180
$ {coord: days (int n)} variabel $ {coord: days (2)} -> menit dalam 2 hari penuh dari tanggal sekarang
$ {coord: months (int n)} variabel $ {coord: months (1)} -> menit dalam 1 bulan penuh dari tanggal sekarang

Selanjutnya, kami menentukan waktu mulai & berakhir pekerjaan seperti yang ditunjukkan pada gambar di atas. waktu mulai adalah tanggal waktu mulai untuk pekerjaan itu & akhir waktu adalah tanggal akhir pekerjaan.

Selanjutnya, kami menentukan url NameNode & ResourceManager, yang akan digunakan untuk merujuk file workflow.xml di HDFS & masing-masing mengirimkan pekerjaan ke YARN. Akhirnya, kami menentukan jalur alur kerja.xml, yang akan kami simpan di HDFS. Kami juga akan menentukan jalur aplikasi tempat semua file & direktori lib akan disimpan.

File kedua adalah koordinator.xml di mana kami akan menggunakan semua properti yang telah kami tentukan di koordinator.properties mengajukan. Sekarang, pertama, kita akan menentukan properti aplikasi koordinator yaitu nama, frekuensi & zona waktu. Selanjutnya, kami akan menentukan alur kerja satu per satu. Di sini, kami hanya memiliki satu alur kerja. Jadi, di dalam elemen aksi kita akan membuat elemen alur kerja, di mana kita akan menentukan jalur aplikasi.

Selanjutnya, maju ke depan kita harus membuat workflow.xml file tempat kami akan menentukan tugas. Ini mirip dengan workflow.xml file, yang telah kita buat dalam pekerjaan alur kerja.

Sekarang lagi, kita akan pindahkan ini WordCountTest_TimedBased direktori ke HDFS.

Perintah : hadoop fs -put WordCountTest_TimeBased /

Sekarang, kita siap untuk melanjutkan dan menjalankan tugas koordinator ini di Tutorial Oozie ini. Mari kita lanjutkan dan jalankan.

Perintah : pekerjaan oozie –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

Catat id pekerjaan koordinator ini (mis. 0000010-171219160449620-oozie-edur-C). Ini akan membantu Anda melacak pekerjaan Anda di Oozie Web UI.

Anda dapat melihat pekerjaan yang terdaftar di tab Pekerjaan Koordinator Anda di Oozie Web UI. Mirip dengan pekerjaan Alur Kerja kami memiliki nama, status, pengguna, frekuensi, waktu mulai & akhir pekerjaan. Saat Anda akan mengklik pekerjaan tertentu, Anda akan melihat detail pekerjaan tersebut, seperti yang ditunjukkan pada gambar di bawah ini.

  • Info Pekerjaan Koordinator

  • Definisi Pekerjaan Koordinator

  • Konfigurasi Pekerjaan Koordinator

Sekarang, seperti yang telah kita lihat melalui tab yang berbeda. Kami akan kembali ke direktori root HDFS tempat folder output akan dibuat. Seperti yang Anda lihat pada gambar di bawah ini, oozieTimeBasedout direktori telah dibuat, seperti yang kami tentukan di workflow.xml mengajukan.

Sekarang, mari kita lihat file keluaran yang telah dibuat.

cara menginstal hadoop di ubuntu

Saya harap Anda menemukan blog Tutorial Apache Oozie ini informatif. Jika Anda tertarik untuk mempelajari lebih lanjut, Anda bisa melalui ini yang memberi tahu Anda tentang Big Data dan bagaimana Hadoop memecahkan tantangan terkait Big Data.

Sekarang setelah Anda memahami Apache Oozie, lihat oleh Edureka, perusahaan pembelajaran online tepercaya dengan jaringan lebih dari 250.000 pelajar yang puas dan tersebar di seluruh dunia. Kursus Pelatihan Sertifikasi Edureka Big Data Hadoop membantu peserta didik menjadi ahli dalam domain HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume, dan Sqoop menggunakan kasus penggunaan waktu nyata pada Ritel, Media Sosial, Penerbangan, Pariwisata, domain Keuangan.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.