Tutorial Apache Oozie: Diagram Alur Kerja, Penjadwal
⚡ Ringkasan Cerdas
Apache Oozie adalah penjadwal alur kerja untuk Hadoop yang menjalankan pekerjaan yang saling bergantung sebagai Directed Acyclic Graph (DAG), menggabungkan mesin alur kerja untuk aksi MapReduce, Pig, dan Hive dengan mesin koordinator yang didorong oleh waktu dan ketersediaan data.
Apa itu Apache Oozie?
Apache Oozie adalah penjadwal alur kerja untuk HadoopIni adalah sistem yang menjalankan alur kerja dari pekerjaan yang saling bergantung. Di sini, pengguna diizinkan untuk membuat Directed Acyclic Graph (DAG) dari alur kerja, yang dapat dijalankan secara paralel dan berurutan di Hadoop.
Ini terdiri dari dua bagian:
- Mesin alur kerja: Tanggung jawab dari sebuah workflow engine adalah untuk menyimpan dan menjalankan workflow yang terdiri dari job Hadoop, misalnya, PetaKurangi, Babi, Sarang lebah.
- Mesin koordinator: Sistem ini menjalankan tugas alur kerja berdasarkan jadwal yang telah ditentukan dan ketersediaan data.
Oozie dapat diskalakan dan mampu mengelola eksekusi ribuan alur kerja (masing-masing terdiri dari puluhan pekerjaan) secara tepat waktu dalam klaster Hadoop. Diagram di bawah ini menunjukkan posisi penjadwal dalam kaitannya dengan klaster dan pekerjaan yang dijalankannya.
Oozie juga sangat fleksibel. Kita dapat dengan mudah memulai, menghentikan, menangguhkan, dan menjalankan kembali pekerjaan. Oozie memudahkan untuk menjalankan kembali alur kerja yang gagal. Kita dapat dengan mudah memahami betapa sulitnya mengejar pekerjaan yang terlewat atau gagal karena waktu henti atau kegagalan. Bahkan dimungkinkan untuk melewati node yang gagal tertentu.
Status proyek: Apache Oozie telah dihentikan pengembangannya oleh Apache Software. Foundation pada Februari 2025 dan perpindahan ke Loteng Apache Selesai pada April 2025. Rilis final tetap 5.2.1 dari Februari 2021, dan repositori sumber sekarang hanya dapat dibaca. Klaster yang ada masih menjalankannya, itulah sebabnya mekanisme di bawah ini perlu diketahui, tetapi pipeline baru biasanya dibangun di atas Apache Airflow.
Bagaimana cara kerja Oozie?
Oozie berjalan sebagai layanan di dalam klaster, dan klien mengirimkan definisi alur kerja untuk diproses segera atau nanti.
Alur kerja Oozie terdiri dari node aksi dan node alur kontrol.
Node aksi mewakili tugas alur kerja, misalnya, memindahkan file ke dalam HDFS, menjalankan pekerjaan MapReduce, Pig atau Hive, mengimpor data menggunakan Skupatau menjalankan skrip shell atau program yang ditulis dalam Java.
Node kontrol alur mengendalikan eksekusi alur kerja antar tindakan dengan memungkinkan konstruksi seperti logika kondisional, di mana cabang yang berbeda dapat diikuti tergantung pada hasil dari node tindakan sebelumnya.
Node Awal, Node Akhir, dan Node Kesalahan termasuk dalam kategori node ini.
- Mulai Node menunjuk awal pekerjaan alur kerja.
- Node Akhir menandakan akhir dari pekerjaan.
- Node Kesalahan Menunjukkan terjadinya kesalahan dan pesan kesalahan yang akan dicetak.
Di akhir eksekusi alur kerja, Oozie menggunakan callback HTTP untuk memperbarui status alur kerja kepada klien. Masuk atau keluar dari node aksi juga dapat memicu callback tersebut.
Node Kontrol dan Tipe Aksi Oozie
Selain awal, akhir, dan kesalahan, XML alur kerja mendukung sejumlah kecil node kontrol yang membentuk grafik.
- keputusan: Mengevaluasi sebuah ekspresi dan mengirimkan alur kerja ke salah satu dari beberapa cabang, yang setara dengan pernyataan switch.
- garpu: Membagi alur sehingga dua atau lebih tindakan berjalan secara paralel.
- Ikuti: Menunggu setiap cabang dari percabangan yang cocok selesai sebelum melanjutkan.
- membunuh: Menghentikan alur kerja secara langsung dan mencatat pesan kesalahan.
Node aksi mencakup pekerjaan itu sendiri, dan masing-masing memiliki elemen XML-nya sendiri:
- map-reduce, pig, hive dan sqoop Tindakan tersebut meluncurkan pekerjaan Hadoop yang sesuai.
- Jawa menjalankan kelas utama pada klaster; tempurung ke ssh menjalankan skrip.
- fs melakukan pemeliharaan HDFSping seperti move, delete, mkdir dan chmod.
- email memberi tahu penerima, dan sub-alur kerja memanggil aplikasi alur kerja lain.
Contoh Diagram Alur Kerja
Diagram di bawah ini tracIni adalah alur kerja kecil dari node awalnya, melalui aksi MapReduce, hingga ke node akhir atau jalur kesalahan ketika aksi tersebut gagal.
Jenis Pekerjaan Oozie
Oozie menggambarkan pekerjaan pada tiga tingkatan. Setiap lapisan membungkus lapisan di bawahnya, sehingga pada akhirnya sebuah bundel mengendalikan banyak alur kerja individual.
| Jenis pekerjaan | Apa yang didefinisikannya | Dipicu oleh |
|---|---|---|
| Workflow | Sebuah Directed Acyclic Graph (DAG) dari node aksi dan kontrol, yang ditulis dalam workflow.xml. | Pengajuan manual, atau melalui koordinator. |
| Koordinator | Jadwal berulang untuk satu alur kerja, dengan waktu mulai, waktu berakhir, dan frekuensi. | Ketersediaan waktu jam dan data masukan |
| Bundel | Sekumpulan aplikasi koordinator yang dikelola bersama sebagai satu alur data. | Waktu kick-off berlaku untuk semua koordinatornya. |
Perbedaan ini penting dalam praktiknya: alur kerja menjawab "apa yang berjalan", koordinator menjawab "kapan berjalan", dan bundel menjawab "apa yang dimulai dan dihentikan bersamaan".
Mengemas dan Menerapkan Aplikasi Alur Kerja Oozie
Aplikasi alur kerja terdiri dari definisi alur kerja dan semua sumber daya terkait seperti file JAR MapReduce, skrip Pig, dll. Aplikasi perlu mengikuti struktur direktori yang sederhana dan di-deploy ke HDFS agar Oozie dapat mengaksesnya.
Berikut adalah contoh struktur direktori:
<name of workflow>/
├── lib/
│ └── hadoop-examples.jar
└── workflow.xml
Penting untuk menyimpan workflow.xml (file definisi alur kerja) di direktori tingkat atas (direktori induk yang memuat nama alur kerja). Direktori lib berisi file Jar yang memuat kelas MapReduce. Aplikasi alur kerja yang sesuai dengan tata letak ini dapat dibangun dengan alat pembangunan apa pun, misalnya, Ant atau Maven.
Hasil build tersebut perlu disalin ke HDFS menggunakan perintah, misalnya:
% hadoop fs -put hadoop-examples/target/<name of workflow dir> name of workflow
Langkah-langkah untuk Menjalankan Tugas Alur Kerja Oozie
Di bagian ini, kita akan melihat cara menjalankan pekerjaan alur kerja. Untuk menjalankannya, kita akan menggunakan alat baris perintah Oozie (program klien yang berkomunikasi dengan server Oozie).
1. Ekspor OOZIE_URL variabel lingkungan, yang memberi tahu perintah oozie server Oozie mana yang akan digunakan (di sini kita menggunakan server yang berjalan secara lokal):
% export OOZIE_URL="http://localhost:11000/oozie"
2. Jalankan tugas alur kerja menggunakan:
% oozie job -config ch05/src/main/resources/max-temp-workflow.properties -run
Opsi -config mengacu pada lokal Java file properti yang berisi definisi parameter dalam file XML alur kerja, serta oozie.wf.application.path, yang memberi tahu Oozie lokasi aplikasi alur kerja di HDFS.
Contoh isi file properti:
nameNode=hdfs://localhost:8020 jobTracker=localhost:8021 oozie.wf.application.path=${nameNode}/user/${user.name}/<name of workflow>
3. Dapatkan status pekerjaan alur kerja.
Status suatu pekerjaan alur kerja dapat dilihat menggunakan subperintah 'job' dengan opsi '-info', dengan menentukan ID pekerjaan setelah '-info'.
e.g., % oozie job -info <job id>
Output tersebut menampilkan status yang berupa RUNNING, KILLED, atau SUCCEEDED.
4. Hasil eksekusi alur kerja yang berhasil dapat dilihat menggunakan perintah Hadoop seperti:
% hadoop fs -cat <location of result>
Mengapa menggunakan Oozie?
Tujuan utama penggunaan Oozie adalah untuk mengelola berbagai jenis pekerjaan yang diproses dalam sistem Hadoop.
Ketergantungan antar pekerjaan ditentukan oleh pengguna dalam bentuk Directed Acyclic Graph (DAG). Oozie menggunakan informasi ini dan menangani eksekusinya dalam urutan yang benar seperti yang ditentukan dalam alur kerja. Dengan demikian, waktu pengguna untuk mengelola alur kerja lengkap dapat dihemat. Selain itu, Oozie memiliki fitur untuk menentukan frekuensi eksekusi pekerjaan tertentu.
Fitur Oozie
- Oozie memiliki API klien dan antarmuka baris perintah yang dapat digunakan untuk meluncurkan, mengontrol, dan memantau pekerjaan dari sebuah Java aplikasi.
- Dengan menggunakan API Layanan Web-nya, seseorang dapat mengontrol pekerjaan dari mana saja.
- Oozie memiliki fitur untuk menjalankan tugas yang dijadwalkan untuk berjalan secara berkala.
- Oozie memiliki fitur untuk mengirimkan notifikasi email setelah pekerjaan selesai.
Oozie vs Apache Airflow
Karena Oozie sudah tidak lagi digunakan, sebagian besar tim yang mengevaluasi penjadwal saat ini membandingkan apa yang sudah mereka jalankan dengan Apache Airflow. Kedua alat tersebut memecahkan masalah yang sama dari arah yang berlawanan.
| Aspek | Apache Oozie | Aliran Udara Apache |
|---|---|---|
| Bahasa definisi | Alur kerja yang ditulis dalam format XML. | DAG yang ditulis sebagai Python kode |
| Cakupan | Dibangun berdasarkan aksi Hadoop seperti MapReduce, Pig, Hive, dan Sqoop. | Serbaguna, dengan operator untuk layanan cloud, basis data, dan kontainer. |
| Penjadwalan | Tugas koordinator ditentukan oleh waktu dan ketersediaan data. | Interval jadwal ditambah sensor yang menunggu kondisi eksternal. |
| Status proyek | Dipensiunkan ke loteng Apache pada tahun 2025; rilis terakhir 5.2.1 | Proyek tingkat atas Apache yang dikembangkan secara aktif |
Oozie tetap menjadi pilihan yang lebih sederhana pada klaster yang sudah menjalankannya, karena aksi-aksinya dipetakan secara satu-per-satu ke komponen Hadoop. Airflow adalah pilihan praktis untuk hal-hal baru, terutama di mana alur kerja melampaui Hadoop.


