Bagikan melalui


Jalankan program MapReduce kustom

Sistem big data berbasis Apache Hadoop seperti HDInsight memungkinkan pemrosesan data menggunakan berbagai alat dan teknologi. Tabel berikut menjelaskan keuntungan dan pertimbangan utama untuk masing-masing tabel.

Mekanisme kueri Kelebihan Pertimbangan
Apache Hive menggunakan HiveQL
  • Solusi yang sangat baik untuk pemrosesan batch dan analisis sejumlah besar data yang tidak dapat diubah, untuk ringkasan data, dan untuk kueri sesuai permintaan. Menggunakan sintaks seperti SQL yang dikenal.
  • Ini dapat digunakan untuk menghasilkan tabel data persisten yang dapat dengan mudah dipartisi dan diindeks.
  • Beberapa tabel dan tampilan eksternal dapat dibuat melalui data yang sama.
  • Mendukung implementasi gudang data sederhana yang menyediakan skala besar dan kemampuan toleransi kesalahan untuk penyimpanan dan pemrosesan data.
  • Membutuhkan data sumber untuk memiliki setidaknya beberapa struktur yang dapat diidentifikasi.
  • Tidak cocok untuk kueri realtime dan pembaruan tingkat baris. Paling baik digunakan untuk proses batch pada sekumpulan data yang besar.
  • Mungkin tidak dapat melakukan beberapa jenis tugas pemrosesan yang kompleks.
Apache Pig menggunakan Pig Latin
  • Solusi yang sangat baik untuk memanipulasi data sebagai kumpulan, menggabungkan dan memfilter kumpulan data, menerapkan fungsi ke rekaman atau grup rekaman, dan merestrukturisasi data dengan menentukan kolom, dengan mengelompokkan nilai, atau dengan mengonversi kolom menjadi baris.
  • Dapat menggunakan pendekatan berbasis alur kerja sebagai urutan operasi pada data.
  • Pengguna SQL mungkin menemukan Pig Latin kurang dikenali dan lebih sulit digunakan daripada HiveQL.
  • Output default biasanya berupa file teks dan bisa lebih sulit digunakan dengan alat visualisasi seperti Excel. Biasanya Anda akan melapisi tabel Hive di atas output.
MapReduce Kustom
  • Ini memberikan kendali penuh atas peta serta mengurangi tahap dan pelaksanaan.
  • Ini memungkinkan kueri untuk dioptimalkan guna mencapai kinerja maksimum dari kluster, atau untuk meminimalkan beban pada server dan jaringan.
  • Komponen dapat ditulis dalam berbagai bahasa yang sangat dikenal.
  • Lebih sulit daripada menggunakan Pig atau Hive karena Anda harus membuat sendiri komponen map dan reduce.
  • Proses yang mengharuskan bergabung dengan kumpulan data lebih sulit diterapkan.
  • Meskipun ada kerangka kerja pengujian yang tersedia, kode debugging lebih kompleks daripada aplikasi normal karena kode berjalan sebagai tugas batch di bawah kendali penjadwal pekerjaan Hadoop.
Apache HCatalog
  • Ini mengabstraksi detail jalur penyimpanan, membuat administrasi lebih mudah dan menghapus kebutuhan pengguna untuk mengetahui di mana data disimpan.
  • Ini memungkinkan pemberitahuan peristiwa seperti ketersediaan data, memungkinkan alat lain seperti Oozie mendeteksi kapan operasi telah terjadi.
  • Ini memaparkan tampilan relasional data, termasuk partisi berdasarkan kunci, dan membuat data mudah diakses.
  • Ini mendukung format file RCFile, CSV, teks JSON, SequenceFile, dan ORC secara default, tetapi Anda mungkin perlu menulis SerDe kustom untuk format lain.
  • HCatalog tidak aman utas.
  • Ada beberapa batasan pada jenis data untuk kolom saat menggunakan HCatalog loader dalam skrip Pig. Untuk informasi selengkapnya, lihat Jenis Data HCatLoader di dalam dokumentasi Apache HCatalog.

Biasanya, Anda menggunakan pendekatan paling sederhana ini yang dapat memberikan hasil yang Anda butuhkan. Misalnya, Anda mungkin dapat mencapai hasil tersebut dengan hanya menggunakan Hive, tetapi untuk skenario yang lebih kompleks Anda mungkin perlu menggunakan Pig, atau bahkan menulis komponen map dan reduce Anda sendiri. Anda juga dapat memutuskan, setelah bereksperimen dengan Hive atau Pig, bahwa komponen map dan reduce dapat memberikan kinerja yang lebih baik dengan memungkinkan Anda untuk menyempurnakan dan mengoptimalkan pemrosesan.

Komponen MapReduce kustom

Kode MapReduce terdiri dari dua fungsi terpisah yang diimplementasikan sebagai komponen peta dan pengurangan . Komponen map dijalankan secara paralel pada beberapa node kluster, setiap node menerapkan pemetaan ke subset data node sendiri. Komponen reduce menyusun dan meringkas hasil dari semua fungsi peta. Untuk informasi selengkapnya tentang kedua komponen ini, lihat Menggunakan MapReduce pada Hadoop di HDInsight.

Dalam sebagian besar skenario pemrosesan HDInsight, lebih sederhana dan lebih efisien untuk menggunakan abstraksi tingkat yang lebih tinggi seperti Pig atau Hive. Anda juga dapat membuat komponen 'map' dan 'reduce' khusus untuk digunakan dalam skrip Hive guna melakukan pemrosesan yang lebih canggih.

Komponen MapReduce kustom biasanya ditulis dalam Java. Hadoop menyediakan antarmuka streaming yang juga memungkinkan komponen untuk digunakan yang dikembangkan dalam bahasa lain seperti C#, F#, Visual Basic, Python, dan JavaScript.

Pertimbangkan untuk membuat komponen pemetaan dan pengurangan untuk kondisi-kondisi berikut:

  • Anda perlu memproses data yang benar-benar tidak terstruktur dengan memparsing data dan menggunakan logika kustom untuk mendapatkan informasi terstruktur darinya.
  • Anda ingin melakukan tugas-tugas kompleks yang sulit (atau tidak mungkin) untuk diekspresikan melalui Pig atau Hive tanpa harus membuat UDF. Misalnya, Anda mungkin perlu menggunakan layanan geocoding eksternal untuk mengonversi koordinat lintang dan bujur atau alamat IP dalam data sumber ke nama lokasi geografis.
  • Anda ingin menggunakan kembali kode .NET, Python, atau JavaScript yang ada di komponen MapReduce dengan menggunakan antarmuka streaming Hadoop.

Mengunggah dan menjalankan program MapReduce kustom Anda

Program MapReduce yang paling umum ditulis di Java dan dikompilasi ke file jar.

  1. Setelah mengembangkan, menyusun, dan menguji program MapReduce, gunakan perintah scp untuk mengunggah file jar Anda ke headnode.

    scp mycustomprogram.jar sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    

    Ganti CLUSTERNAME dengan nama kluster. Jika Anda menggunakan kata sandi untuk mengamankan akun SSH, Anda akan diminta untuk memasukkan kata sandi. Jika Anda menggunakan sertifikat, Anda mungkin perlu menggunakan parameter -i untuk menentukan file kunci pribadi.

  2. Gunakan perintah ssh untuk menyambungkan ke kluster Anda. Edit perintah di bawah ini dengan mengganti CLUSTERNAME dengan nama klaster Anda, lalu masukkan perintah:

    ssh sshuser@CLUSTERNAME-ssh.azurehdinsight.net
    
  3. Dari sesi SSH, jalankan program MapReduce Anda melalui YARN.

    yarn jar mycustomprogram.jar mynamespace.myclass /example/data/sample.log /example/data/logoutput
    

    Perintah ini mengirimkan tugas MapReduce ke YARN. File inputnya adalah /example/data/sample.log, dan direktori outputnya adalah /example/data/logoutput. File input dan file output apa pun disimpan ke penyimpanan default untuk kluster.

Langkah berikutnya