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.

  • 🔘 Dua mesin: Mesin alur kerja menjalankan grafik pekerjaan Hadoop; mesin koordinator memicunya sesuai jadwal atau saat data tiba.
  • ☑️ Jenis simpul: Node aksi melakukan pekerjaan; node kontrol seperti node keputusan, percabangan, dan penggabungan mengarahkan jalannya proses.
  • Tiga jenis pekerjaan: Alur kerja, koordinator, dan tugas pengemasan tersusun menjadi sebuah alur data yang lengkap.
  • 🧪 Penyebaran: Aplikasi alur kerja adalah direktori yang berisi file workflow.xml dan folder lib, yang disalin ke HDFS.
  • Garis komando: Set OOZIE_URL, jalankan dengan oozie job -run, lalu periksa oozie job -info sampai muncul laporan SUCCEEDED.
  • ⚠️ Status proyek: Oozie dipensiunkan dan dipindahkan ke Apache Attic pada tahun 2025, sehingga pipeline baru biasanya menggunakan Apache Airflow.

Tutorial Apache Oozie yang membahas alur kerja, tugas koordinator, dan penjadwalan Hadoop.

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.

Penjadwal alur kerja Apache Oozie menjalankan pekerjaan Hadoop yang saling bergantung sebagai grafik asiklik terarah.

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.

Contoh diagram alur kerja Oozie yang menunjukkan node awal, node aksi, penanganan kesalahan, dan node akhir.

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.

Pertanyaan Umum Demo Slot

Tidak. Perangkat Lunak Apache Foundation Oozie dihentikan pengembangannya pada Februari 2025 dan pemindahan ke Attic diselesaikan pada April 2025. Rilis terakhir adalah 5.2.1 dari Februari 2021 dan repositori bersifat hanya baca, meskipun dokumentasi tetap tersedia daring.

Asisten AI mengubah alur kerja yang dijelaskan menjadi konfigurasi penjadwal, menjelaskan mengapa grafik pekerjaan mengalami kebuntuan, dan meringkas log klaster menjadi kemungkinan penyebab utama. Berguna untuk draf pertama dan untuk penapisan masalah, bukan untuk menyetujui jadwal produksi.

Copilot menulis workflow.xml yang masuk akal dengan cepat, tetapi sering kali menciptakan nama elemen atau versi skema yang salah. Validasi XML yang dihasilkan terhadap skema 5.2.1 dan lakukan uji coba terlebih dahulu pada klaster pengujian.

Koordinator menggabungkan frekuensi, waktu mulai, dan waktu akhir dengan definisi dataset. Koordinator hanya akan aktif ketika jam mencapai interval berikutnya dan setiap dataset input yang dideklarasikan ada di HDFS, sehingga keterlambatan data akan menunda eksekusi.

Kirimkan kembali pekerjaan tersebut dengan tindakan jalankan ulang dan ID pekerjaan asli, sebutkan node yang akan dilewati atau diulang. Oozie menggunakan kembali tindakan yang telah selesai, sehingga hanya bagian grafik yang tersisa yang akan dijalankan.

PREP berarti pekerjaan telah diterima tetapi belum dimulai, biasanya karena jalur aplikasi di HDFS salah atau waktu materialisasi belum tiba. SUSPENDED berarti seseorang telah menjeda pekerjaan tersebut, atau suatu tindakan gagal dan alur kerja tertunda.

Server berjalan dengan principal dan keytab-nya sendiri, dan klien melakukan autentikasi melalui SPNEGO melalui HTTP. Alur kerja membawa token delegasi sehingga setiap tindakan mencapai HDFS dan YARN sebagai pengguna pengirim, bukan sebagai server.

Cron menjalankan perintah lalu melupakannya. Sebuah penjadwal. tracks mengelola ketergantungan antar pekerjaan, menunggu data masukan masuk, mencatat status setiap tindakan, dan memungkinkan Anda menjalankan ulang hanya bagian yang gagal.

Ringkaslah postingan ini dengan: