Tutorial Oozie: Pelajari Cara Menjadualkan Pekerjaan Hadoop anda



Tutorial Apache Oozie: Oozie adalah sistem penjadual aliran kerja untuk menguruskan pekerjaan Hadoop. Ia adalah sistem yang boleh diskalakan, boleh dipercayai dan dapat diperluas.

Sebelum memulakan tutorial Apache Oozie ini, marilah kita memahami di mana sistem penjadual digunakan. Dalam senario masa nyata, satu pekerjaan bergantung pada pekerjaan lain, seperti output tugas MapReduce dapat diserahkan ke pekerjaan Hive untuk diproses lebih lanjut. Senario seterusnya boleh, menjadualkan satu set tugas berdasarkan waktu seperti harian, mingguan, bulanan atau berdasarkan ketersediaan data. Apache Oozie memberi anda kekuatan untuk menangani senario seperti ini dengan mudah. Inilah sebabnya mengapa Apache Oozie adalah bahagian penting .

Dalam blog tutorial Apache Oozie ini, kita akan membahas:





  • Pengenalan Apache Oozie
  • Aliran Kerja Oozie
  • Penyelaras Oozie
  • Kumpulan Oozie
  • Kerja Aliran Kerja Word Count
  • Tugas Penyelaras Bilangan Perkataan Berdasarkan Masa

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

Tutorial Apache Oozie: Pengenalan kepada Apache Oozie

Tutorial Apache Oozie - Oozie - EdurekaApache Oozie adalah sistem penjadual untuk mengurus & melaksanakan pekerjaan Hadoop dalam lingkungan yang diedarkan. Kami dapat membuat saluran paip yang diinginkan dengan menggabungkan pelbagai jenis tugas. Ini boleh menjadi tugas Sarang, Babi, Sqoop atau MapReduce anda. Menggunakan Apache Oozie anda juga boleh menjadualkan pekerjaan anda. Dalam urutan tugas, dua atau lebih pekerjaan juga dapat diprogram untuk berjalan selari antara satu sama lain. Ia adalah sistem yang boleh diskalakan, boleh dipercayai dan dapat diperluas.



Oozie adalah aplikasi web Java Sumber terbuka, yang bertanggung jawab untuk memicu tindakan aliran kerja. Pada gilirannya, ia menggunakan mesin pelaksanaan Hadoop untuk melaksanakan tugas.

Apache Oozie mengesan penyelesaian tugas melalui panggilan balik dan pengundian. Apabila Oozie memulakan tugas, ia memberikan URL HTTP panggil balik yang unik untuk tugas itu dan memberitahu URL itu ketika tugas selesai. Sekiranya tugas gagal menggunakan URL panggil balik, Oozie dapat mengundikan tugas untuk diselesaikan.

Terdapat tiga jenis pekerjaan di Apache Oozie:



  • Pekerjaan Aliran Kerja Oozie & tolak Ini adalah Graf Asiklik Terarah (DAG) yang menentukan urutan tindakan yang akan dilaksanakan.
  • Kerja Penyelaras Oozie & tolak Ini terdiri daripada pekerjaan aliran kerja yang dicetuskan oleh masa dan ketersediaan data.
  • Kumpulan Oozie & tolak Ini boleh disebut sebagai pakej pelbagai penyelaras dan aliran kerja.

Sekarang, mari kita fahami semua pekerjaan ini satu persatu.

Tutorial Apache Oozie: Aliran Kerja Oozie

Aliran kerja adalah urutan tindakan yang disusun dalam Graf Aciklik Langsung (DAG). Tindakannya saling bergantung satu sama lain, kerana tindakan selanjutnya hanya dapat dilaksanakan setelah hasil dari tindakan saat ini. Tindakan aliran kerja dapat berupa aksi Babi, tindakan Hive, tindakan MapReduce, aksi Shell, tindakan Java dan lain-lain. Terdapat pohon keputusan untuk menentukan bagaimana dan dalam keadaan apa pekerjaan harus dijalankan.

Kita boleh membuat pelbagai jenis tindakan berdasarkan tugas dan setiap jenis tindakan boleh mempunyai jenis tag tersendiri.Alur kerja dan skrip atau tempayan harus diletakkan di jalur HDFS sebelum menjalankan aliran kerja.

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

Untuk memeriksa status pekerjaan, anda boleh pergi ke konsol web Oozie, iaitu http: // host_name: 11000 . Dengan mengklik pekerjaan anda akan melihat status pekerjaan tersebut.

Dalam senario, di mana kita mahu menjalankan beberapa pekerjaan secara selari, kita boleh menggunakan Garpu . Setiap kali kita menggunakan garpu, kita mesti menggunakan Join sebagai simpul akhir untuk garpu. Untuk setiap garpu mesti ada gabungan. Bergabung dengan anggapan bahawa semua nod yang dijalankan secara paralel, adalah anak dari satu garpu. Sebagai contoh, kita boleh membuat dua jadual pada masa yang sama secara selari.

Sekiranya kita ingin menjalankan tindakan berdasarkan output keputusan, kita dapat menambahkan tag keputusan. Contohnya, jika kita sudah mempunyai jadual sarang, kita tidak perlu membuatnya lagi. Dalam keadaan itu, kita dapat menambahkan tag keputusan untuk tidak menjalankan langkah membuat jadual jika jadual sudah ada. Node keputusan mempunyai tanda tukar yang serupa dengan huruf besar.

Nilai job-tracker, name-node, script dan param dapat diteruskan secara langsung. Tetapi, ini menjadi sukar untuk diuruskan. Di sinilah fail konfigurasi (iaitu. Fail hak milik) sangat berguna.

perpuluhan hingga kod python binari

Tutorial Apache Oozie: Penyelaras Oozie

Anda boleh menjadualkan aliran kerja yang kompleks dan juga aliran kerja yang dijadualkan secara berkala menggunakan Penyelaras. Penyelaras Oozie mencetuskan kerja aliran kerja berdasarkan masa, data atau predikat peristiwa. Aliran kerja di dalam koordinator kerja bermula apabila keadaan yang diberikan dipenuhi.

Definisi yang diperlukan untuk pekerjaan penyelaras adalah:

  • mulakan & tolak Mula masa waktu kerja.
  • akhir & tolak Masa tamat untuk kerja.
  • Zon masa & tolak Zon Waktu aplikasi penyelaras.
  • kekerapan & tolak Kekerapan, dalam beberapa minit, untuk melaksanakan tugas.

Beberapa lagi sifat tersedia untuk Maklumat Kawalan:

  • masa tamat & minus Masa maksimum, dalam beberapa minit, di mana tindakan akan menunggu untuk memenuhi syarat tambahan, sebelum dibuang. 0 menunjukkan bahawa jika semua peristiwa input tidak berpuas hati pada saat tindakan dilaksanakan, tindakan harus segera habis. -1 menunjukkan tiada masa tamat, tindakan akan menunggu selama-lamanya. Nilai lalai adalah -1.
  • serentak & tolak Bilangan maksimum tindakan untuk pekerjaan yang dapat berjalan selari. Nilai lalai adalah 1.
  • pelaksanaan - Ini menentukan perintah pelaksanaan jika beberapa contoh tugas penyelaras telah memenuhi kriteria pelaksanaannya. Ia boleh menjadi:
    • FIFO (lalai)
    • LIFO
    • LAST_ONLY

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

Sekiranya sifat konfigurasi yang digunakan dalam definisi tidak diberikan dengan konfigurasi tugas semasa menyerahkan tugas penyelaras, penyerahan tugas akan gagal.

Tutorial Apache Oozie: Oozie Bundle

Sistem Oozie Bundlemembolehkan anda menentukan dan melaksanakan sekumpulan aplikasi koordinator, yang sering disebut saluran data. Dalam kumpulan Oozie, tidak ada kebergantungan eksplisit antara aplikasi penyelaras. Namun, anda dapat menggunakan ketergantungan data aplikasi koordinator untuk membuat saluran aplikasi data tersirat.Anda boleh memulakan / menghentikan / menangguhkan / menyambung semula / menjalankan semula bundle. Ia memberikan kawalan operasi yang lebih baik dan mudah.

Masa permulaan & tolak Masa ketika kumpulan harus bermula dan mengemukakan permohonan penyelaras.

Melangkah dalam tutorial Apache Oozie ini, kita akan memahami bagaimana membuat Workflow Job.

Tutorial Apache Oozie: Kerja Alur Kerja Count Word

Dalam contoh ini, kita akan melaksanakan Word Count Job menggunakan Apache Oozie. Di sini kita tidak akan membincangkan tentang cara menulis program pengiraan kata MapReduce. Jadi, sebelum mengikuti tutorial Apache Oozie ini, anda perlu memuat turunnya balang kiraan perkataan fail. Sekarang, buat direktori WordCountTest di mana kita akan meletakkan semua fail. Buat direktori lib di mana kita akan meletakkan jar jumlah perkataan seperti yang ditunjukkan dalam gambar di bawah.

Sekarang, mari maju & buat pekerjaan.properties & aliran kerja.xml fail, di mana kita akan menentukan tugas dan parameter yang berkaitan dengannya.

pekerjaan.properties

Pertama, kita mencipta pekerjaan.properties fail, di mana kita menentukan jalan NameNode & ResourceManager. Path NameNode diperlukan untuk menyelesaikan jalan direktori alur kerja & jobTracker path akan membantu dalam menyerahkan tugas tersebut ke YARN. Kita perlu menyediakan jalan aliran kerja.xml fail, yang harus disimpan dalam HDFS.

aliran kerja.xml

Seterusnya, kita perlu membuat aliran kerja.xml fail, di mana kita akan menentukan semua tindakan kita dan melaksanakannya. Pertama, kita perlu menentukan nama aplikasi aliran kerja iaitu. WorkflowRunnerTest . Kemudian, kami menentukan simpul permulaan . Node permulaan ( dalam yang bermula untuk teg ) adalah titik masuk untuk kerja aliran kerja. Ini menunjuk ke arah aliran kerja pertama dari tempat kerja harus bermula. Seperti yang anda lihat pada gambar di bawah, simpul seterusnya adalah persimpangan0 dari mana kerja akan dimulakan.

Seterusnya, kami menentukan tugas yang akan dilakukan, di simpul tindakan. Kami menjalankan tugas MapReduce WordCount di sini. Kita perlu menentukan konfigurasi yang diperlukan untuk melaksanakan tugas MapReduce ini. Kami menentukan alamat penjejak pekerjaan & NameNode.

Selanjutnya adalah elemen yang disiapkan, yang digunakan secara eksklusif untuk pembersihan direktori, sebelum melakukan tindakan tersebut. Di sini kita melakukan operasi hapus dalam HDFS untuk menghapus keluar1 folder jika sudah dibuat. Prepare tag digunakan untuk membuat atau menghapus folder sebelum melaksanakan tugas. Kemudian kami menentukan sifat MapReduce seperti nama giliran kerja, kelas mapper, kelas pengurang, kelas kunci output & kelas nilai output.

Konfigurasi tugas MapReduce terakhir adalah direktori input & output dalam HDFS. Direktori input adalah data direktori, yang disimpan di laluan root NameNode . Akhirnya, kami akan menentukan elemen pembunuhan jika pekerjaan gagal.

Sekarang kita perlu memindahkan Ujian WordCount folder dalam HDFS, seperti yang telah kami nyatakan di oozie.wf.application.path harta tanah di pekerjaan.properties fail. Oleh itu, kami menyalin Ujian WordCount folder dalam direktori root Hadoop.

Perintah: hadoop fs -put WordCountTest /

Untuk mengesahkan, anda boleh pergi ke UI Web NameNode dan periksa sama ada folder tersebut telah dimuat naik dalam direktori root HDFS atau tidak.

Sekarang, kita sudah siap untuk maju dan melaksanakan kerja aliran kerja.

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

Setelah melaksanakan tugas kita, kita akan mendapat id pekerjaan (iaitu 0000009-171219160449620-oozie-edur-W ) seperti yang ditunjukkan dalam gambar di atas. Anda boleh pergi dan memeriksa pekerjaan yang telah anda kirimkan di UI Web Oozie iaitu localhost: 11000 . Anda dapat melihat pada gambar di bawah, pekerjaan yang kami serahkan disenaraikan di bawah.

Sekiranya anda melihat pada gambar di atas, anda akan melihat ID Pekerjaan, nama Pekerjaan, status pekerjaan, pengguna yang menyerahkan pekerjaan, waktu penciptaan, modifikasi awal & terakhir. Anda boleh mengklik pekerjaan untuk mendapatkan lebih banyak butiran seperti:

  • Maklumat Pekerjaan

  • Definisi Pekerjaan

  • Konfigurasi Kerja

Oleh kerana status pekerjaan berjaya, jadi kita perlu pergi ke direktori root HDFS dan memeriksa apakah direktori output telah dibuat atau tidak.

Seperti yang anda lihat bahawa oozieout direktori telah dibuat di HDFS, jadi sekarang mari kita lihat fail output yang telah dibuat.

fungsi goto c ++

Seperti yang telah kita lihat bagaimana membuat pekerjaan aliran kerja Oozie, sekarang kita akan maju dalam blog Tutorial Oozie Apache ini dan memahami bagaimana membuat pekerjaan penyelaras.

Tutorial Apache Oozie: Job Coordinator Word Count Berdasarkan Masa

Dalam contoh ini, kita akan membuat tugas penyelaras kiraan kata berdasarkan masa yang akan dilaksanakan setelah selang waktu tertentu. Anda boleh membuat dan menjadualkan pekerjaan menggunakan Apache Oozie yang perlu dilaksanakan setiap hari atau berkala.

Mari kita maju dengan cepat dalam tutorial Apache Oozie ini dan buat kerja penyelaras. Di sini kita akan membuat tiga fail iaitu penyelaras.properties , penyelaras.xml & aliran kerja.xml fail. Sekali lagi, di sini kita akan meletakkan w jumlah pesanan balang di dalam lib direktori seperti yang ditunjukkan dalam gambar di bawah.

Sekarang mari kita lihat fail ini secara individu. Pertama, kita akan mulakan dengan fail coordinator.properties.

Di sini, kami menentukan kekerapan aliran kerja akan dijalankan. Kekerapan selalu dinyatakan dalam beberapa minit. Dalam kes kami, tugas penyelaras ini akan dilaksanakan setiap jam antara waktu yang ditentukan. Frekuensi digunakan untuk menangkap selang berkala di mana set data dihasilkan, dan aplikasi penyelaras dijadualkan untuk dijalankan.

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

$ {koordinat: minit (int n)} n $ {koordinat: minit (45)} -> 45
$ {koordinat: jam (int n)} n * 60 $ {koordinat: jam (3)} -> 180
$ {koordinat: hari (int n)} pemboleh ubah $ {koordinat: hari (2)} -> minit dalam 2 hari penuh dari tarikh semasa
$ {koordinat: bulan (int n)} pemboleh ubah $ {koordinat: bulan (1)} -> minit dalam 1 bulan penuh dari tarikh semasa

Seterusnya, kami menentukan waktu mula & akhir kerja seperti yang ditunjukkan dalam gambar di atas. masa mula adalah masa permulaan untuk pekerjaan & masa tamat adalah tarikh akhir tugas.

Seterusnya, kami menentukan url NameNode & ResourceManager, yang akan digunakan untuk merujuk file workflow.xml dalam HDFS & menyerahkan pekerjaan ke YARN masing-masing. Akhirnya, kami menentukan jalan aliran kerja.xml, yang akan kami simpan dalam HDFS. Kami juga akan menentukan jalan aplikasi di mana semua fail & direktori lib akan disimpan.

kelebihan dan kekurangan python

Fail kedua ialah penyelaras.xml di mana kita akan menggunakan semua sifat yang telah kita tentukan di penyelaras.properties fail. Sekarang, pertama, kita akan menentukan sifat aplikasi penyelaras iaitu nama, frekuensi & zon waktu. Seterusnya, kami akan menentukan aliran kerja satu persatu. Di sini, kami hanya mempunyai satu aliran kerja. Jadi, elemen tindakan dalam kita akan membuat elemen aliran kerja, di mana kita akan menentukan jalan aplikasi.

Seterusnya, untuk maju, kita harus mencipta aliran kerja.xml fail di mana kita akan menentukan tugas. Ia serupa dengan aliran kerja.xml fail, yang telah kami buat dalam kerja aliran kerja.

Sekali lagi, kita akan memindahkannya WordCountTest_TimedBerdasarkan direktori ke HDFS.

Perintah : hadoop fs -put WordCountTest_TimeBased /

Sekarang, kita sudah siap untuk terus maju dan melaksanakan tugas penyelaras dalam Tutorial Oozie ini. Mari teruskan dan laksanakan.

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

Catat id pekerjaan penyelaras ini (iaitu 0000010-171219160449620-oozie-edur-C). Ini akan membantu anda melacak pekerjaan anda di Oozie Web UI.

Anda dapat melihat pekerjaan yang disenaraikan di tab Job Coordinator anda di Oozie Web UI. Sama seperti pekerjaan Alur Kerja yang kita ada nama, status, pengguna, kekerapan, waktu mula & akhir kerja. Apabila anda mengklik pekerjaan tertentu, anda akan melihat perincian pekerjaan, seperti yang ditunjukkan dalam gambar di bawah.

  • Maklumat Kerja Penyelaras

  • Definisi Kerja Penyelaras

  • Konfigurasi Kerja Penyelaras

Sekarang, seperti yang telah kita lihat melalui tab yang berbeza. Kami akan kembali ke direktori root HDFS di mana folder output akan dibuat. Seperti yang anda lihat pada gambar di bawah, oozieTimeBasedout direktori telah dibuat, seperti yang kami tentukan di aliran kerja.xml fail.

Sekarang, mari kita lihat fail output yang telah dibuat.

Saya harap anda dapati blog Tutorial Apache Oozie ini bermaklumat. Sekiranya anda berminat untuk mengetahui lebih lanjut, anda boleh melalui ini yang memberitahu anda tentang Big Data dan bagaimana Hadoop menyelesaikan cabaran yang berkaitan dengan Big Data.

Sekarang setelah anda memahami Apache Oozie, lihat oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai dengan rangkaian lebih daripada 250,000 pelajar berpuas hati yang tersebar di seluruh dunia. Kursus Latihan Pensijilan Hadoop Data Besar Edureka membantu pelajar menjadi pakar dalam bidang HDFS, Benang, MapReduce, Babi, Hive, HBase, Oozie, Flume dan Sqoop menggunakan kes penggunaan masa nyata pada domain Runcit, Media Sosial, Penerbangan, Pelancongan, Kewangan.

Ada soalan untuk kami? Sila sebutkan di bahagian komen dan kami akan menghubungi anda.