Apa gunanya Hadoop? (Penggunaan, Alternatif, & Alat Terbaik)

Mari kita lihat proyek Hadoop – apa itu dan kapan penggunaannya mungkin cocok untuk proyek Anda. Hadoop digunakan oleh daftar perusahaan yang mengesankan, termasuk Facebook, LinkedIn, Alibaba, eBay, dan Amazon.


Singkatnya, Hadoop sangat bagus untuk analisis data MapReduce pada sejumlah besar data. Kasus penggunaan spesifiknya meliputi: pencarian data, analisis data, pelaporan data, pengindeksan file dalam skala besar (misalnya, file log atau data dari perayap web), dan tugas pemrosesan data lainnya menggunakan apa yang secara sehari-hari dikenal di dunia pengembangan sebagai “Big Data . “

Dalam artikel ini, kami akan membahas: kapan harus menggunakan Hadoop, kapan TIDAK untuk menggunakan Hadoop, dasar-dasar Hadoop (HDFS, MapReduce, dan YARN), alat terkait Hadoop, dan alternatif Hadoop.

Setelah kami membahas semua topik di atas, Anda harus dapat dengan yakin menjawab pertanyaan: Apakah Hadoop memiliki sesuatu untuk ditawarkan kepada bisnis saya?

Kapan Menggunakan Hadoop

HadoopSebelum membahas cara kerja Hadoop, mari kita pertimbangkan beberapa skenario di mana Hadoop mungkin menjadi jawaban untuk kebutuhan pemrosesan data Anda. Setelah itu, kami akan membahas situasi ketika TIDAK menggunakan Hadoop.

Perlu diingat bahwa infrastruktur Hadoop dan pemrograman kerja MapReduce berbasis Java membutuhkan keahlian teknis untuk pengaturan dan pemeliharaan yang tepat. Jika keterampilan ini terlalu mahal untuk disewa atau servis sendiri, Anda mungkin ingin mempertimbangkan opsi pemrosesan data lain untuk Big Data Anda. (Lewati ke alternatif untuk Hadoop!)

1. Untuk Memproses Data yang SANGAT BESAR:

Jika data Anda sangat besar – kami berbicara setidaknya terabyte atau petabyte data – Hadoop adalah untuk Anda. Untuk set data yang tidak terlalu besar (pikirkan gigabyte), ada banyak alat lain yang tersedia dengan biaya implementasi dan pemeliharaan yang jauh lebih rendah (mis., Berbagai RDBM dan sistem basis data NoSQL). Mungkin kumpulan data Anda tidak terlalu besar saat ini, tetapi ini dapat berubah karena ukuran data Anda membesar karena berbagai faktor. Dalam hal ini, perencanaan yang cermat mungkin diperlukan – terutama jika Anda ingin semua data mentah selalu tersedia untuk pemrosesan data yang fleksibel.

2. Untuk Menyimpan Berbagai Set Data:

Hadoop dapat menyimpan dan memproses data file apa pun: besar atau kecil, baik itu file teks biasa atau file biner seperti gambar, bahkan beberapa versi berbeda dari beberapa format data tertentu dalam periode waktu yang berbeda. Anda dapat setiap saat mengubah cara Anda memproses dan menganalisis data Hadoop Anda. Pendekatan fleksibel ini memungkinkan untuk pengembangan inovatif, sambil tetap memproses sejumlah besar data, daripada migrasi data tradisional yang lambat dan / atau kompleks. Istilah yang digunakan untuk jenis penyimpanan data yang fleksibel ini adalah data danau.

3. Untuk Pemrosesan Data Paralel:

Algoritma MapReduce mengharuskan Anda untuk memparalelkan pemrosesan data. MapReduce berfungsi sangat baik dalam situasi di mana variabel diproses satu per satu (mis., Penghitungan atau agregasi); namun, saat Anda perlu memproses variabel secara bersama-sama (mis., dengan banyak korelasi antar variabel), model ini tidak berfungsi.

Pemrosesan data berbasis grafik (berarti jaringan data yang kompleks tergantung pada data lain) tidak cocok untuk metodologi standar Hadoop. Oleh karena itu, kerangka kerja Apache Tez terkait memungkinkan penggunaan pendekatan berbasis grafik untuk memproses data menggunakan BENANG alih-alih alur kerja MapReduce yang lebih linier..

Kapan TIDAK Menggunakan Hadoop

Sekarang mari kita membahas beberapa contoh di mana TIDAK akan tepat untuk menggunakan Hadoop.

1. Untuk Analisis Data Real-Time:

Hadoop bekerja dengan batch (tidak semuanya sekaligus!), Memproses pekerjaan yang sudah berjalan lama di set data besar. Pekerjaan ini akan membutuhkan waktu lebih banyak untuk diproses daripada permintaan basis data relasional pada beberapa tabel. Tidak jarang pekerjaan Hadoop membutuhkan waktu berjam-jam atau bahkan berhari-hari untuk menyelesaikan pemrosesan, terutama dalam kasus kumpulan data yang sangat besar.

Peringatan: Solusi yang mungkin untuk masalah ini adalah menyimpan data Anda dalam HDFS dan menggunakan kerangka Spark. Dengan Spark, pemrosesan dapat dilakukan secara waktu nyata dengan menggunakan data dalam memori. Ini memungkinkan kecepatan 100x; namun, peningkatan 10x juga dimungkinkan saat menggunakan memori disk, karena pendekatan pekerjaan MapReduce “multi-stage” nya.

2. Untuk Sistem Database Relasional:

Karena waktu respons yang lambat, Hadoop tidak boleh digunakan untuk database relasional.

Peringatan: Solusi yang mungkin untuk masalah ini adalah dengan menggunakan mesin Hive SQL, yang menyediakan ringkasan data dan mendukung kueri ad-hoc. Hive menyediakan mekanisme untuk memproyeksikan beberapa struktur ke data Hadoop dan kemudian meminta data menggunakan bahasa seperti SQL yang disebut HiveQL.

3. Untuk Sistem File Jaringan Umum:

Waktu respons yang lambat juga mengesampingkan Hadoop sebagai sistem file jaringan umum yang potensial. Ada juga masalah sistem file lainnya, karena HDFS tidak memiliki banyak fitur sistem file POSIX standar yang aplikasi harapkan dari sistem file jaringan umum. Menurut dokumentasi Hadoop, “Aplikasi HDFS memerlukan model akses tulis-sekali-baca-banyak untuk file. File yang pernah dibuat, ditulis, dan ditutup tidak boleh diubah kecuali untuk menambahkan dan memotong. ” Anda dapat menambahkan konten ke akhir file, tetapi Anda tidak dapat memperbarui pada titik “sewenang-wenang”.

4. Untuk Pemrosesan Data Non-Paralel:

MapReduce tidak selalu merupakan algoritma terbaik untuk kebutuhan pemrosesan data Anda. Setiap operasi MapReduce harus independen dari yang lainnya. Jika operasi membutuhkan mengetahui banyak informasi dari pekerjaan yang diproses sebelumnya (keadaan bersama), model pemrograman MapReduce mungkin bukan pilihan terbaik.

Diagram Alur Kerja Hadoop MadReduce

Hadoop dan model pemrograman MapReduce-nya paling baik digunakan untuk memproses data secara paralel.

Peringatan: Masalah-masalah ketergantungan negara ini kadang-kadang sebagian dapat dibantu dengan menjalankan beberapa pekerjaan MapReduce, dengan output dari satu menjadi input untuk yang berikutnya. Ini adalah sesuatu kerangka kerja Apache Tez yang menggunakan pendekatan berbasis grafik untuk pemrosesan data Hadoop. Pilihan lain untuk dipertimbangkan adalah menggunakan HBase untuk menyimpan keadaan bersama di sistem tabel besar ini. Namun, solusi ini menambah kerumitan pada alur kerja Hadoop.

Apa itu Hadoop? – 3 Komponen Inti

Hadoop terdiri dari tiga komponen inti: sistem file terdistribusi, kerangka pemrograman paralel, dan sistem manajemen sumber daya / pekerjaan. Linux dan Windows adalah sistem operasi yang didukung untuk Hadoop, tetapi BSD, Mac OS / X, dan OpenSolaris diketahui bekerja dengan baik.

1. Sistem File Terdistribusi Hadoop (HDFS)

Hadoop adalah implementasi open-source berbasis Java dari sistem file cluster yang disebut HDFS, yang memungkinkan Anda untuk melakukan komputasi terdistribusi yang efisien, andal, dan terukur. Arsitektur HDFS sangat toleran terhadap kesalahan dan dirancang untuk digunakan pada perangkat keras berbiaya rendah.

Tidak seperti database relasional, cluster Hadoop memungkinkan Anda untuk menyimpan data file apa pun dan kemudian menentukan bagaimana Anda ingin menggunakannya tanpa harus memformat ulang data tersebut terlebih dahulu. Beberapa salinan data direplikasi secara otomatis di seluruh cluster. Jumlah replikasi dapat dikonfigurasi per file dan dapat diubah kapan saja.

2. Hadoop MapReduce

Hadoop berfokus pada penyimpanan dan pemrosesan terdistribusi dari kumpulan data besar di seluruh kelompok komputer menggunakan model pemrograman MapReduce: Hadoop MapReduce.

Dengan MapReduce, set file input dipecah menjadi potongan-potongan kecil, yang diproses secara independen satu sama lain (bagian “peta”). Hasil dari proses independen ini kemudian dikumpulkan dan diproses sebagai kelompok (bagian “perkecil”) sampai tugas selesai. Jika sebuah file individual sangat besar sehingga akan mempengaruhi kinerja waktu pencarian, itu dapat dipecah menjadi beberapa “split Hadoop.”

Diagram MapReduce Hadoop

Ekosistem Hadoop menggunakan model pemrograman MapReduce untuk menyimpan dan memproses set data yang besar.

Berikut adalah contoh program WordCount MapReduce yang ditulis untuk Hadoop.

3. BENANG Hadoop

Kerangka kerja Hadoop YARN memungkinkan seseorang untuk melakukan penjadwalan pekerjaan dan manajemen sumber daya klaster, yang berarti pengguna dapat mengirim dan membunuh aplikasi melalui API Hadoop REST. Ada juga UI web untuk memantau cluster Hadoop Anda. Di Hadoop, kombinasi dari semua file dan kelas Java JAR yang diperlukan untuk menjalankan program MapReduce disebut pekerjaan. Anda dapat mengirimkan pekerjaan ke JobTracker dari baris perintah atau dengan memposting HTTP ke REST API. Pekerjaan ini berisi “tugas” yang mengeksekusi peta individual dan mengurangi langkah. Ada juga cara untuk memasukkan kode non-Jawa saat menulis tugas ini. Jika karena alasan apa pun node Hadoop cluster turun, pekerjaan pemrosesan yang terpengaruh secara otomatis dipindahkan ke node cluster lainnya.

Alat Hadoop

Di bawah ini Anda akan menemukan daftar proyek terkait Hadoop yang diselenggarakan oleh yayasan Apache:

Ambari: Alat berbasis web untuk penyediaan, pengelolaan, dan pemantauan kelompok Apache Hadoop, Ambari mencakup dukungan untuk Hadoop HDFS, Hadoop MapReduce, Hive, HCatalog, HBase, ZooKeeper, Oozie, Pig, dan Sqoop. Ambari juga menyediakan dasbor untuk melihat faktor kesehatan cluster, menampilkan heatmap dan kemampuan untuk melihat aplikasi MapReduce, Pig, dan Hive secara visual, serta fitur untuk mendiagnosis karakteristik kinerja dengan cara yang ramah pengguna.

Avro: Avro adalah sistem serialisasi data.

Cassandra: Cassandra adalah database multi-master yang dapat diskalakan tanpa titik kegagalan tunggal.

Chukwa: Sistem pengumpulan data, Chukwa digunakan untuk mengelola sistem terdistribusi besar.

HBase: Basis data terukur dan terdistribusi, HBase mendukung penyimpanan data terstruktur untuk tabel besar.

Sarang lebah: Hive adalah infrastruktur gudang data yang menyediakan ringkasan data dan kueri ad-hoc.

Sais gajah: Mahout adalah perpustakaan pembelajaran mesin dan data mining yang dapat diskalakan.

Babi: Ini adalah bahasa aliran data tingkat tinggi dan kerangka kerja eksekusi untuk komputasi paralel.

Percikan: Mesin komputasi cepat dan umum untuk data Hadoop, Spark menyediakan model pemrograman sederhana dan ekspresif yang mendukung berbagai aplikasi, termasuk ETL, pembelajaran mesin, pemrosesan aliran, dan perhitungan grafik.

Tez: Tez adalah kerangka kerja pemrograman aliran data umum yang dibangun di atas Hadoop YARN yang menyediakan mesin yang kuat dan fleksibel untuk melakukan tugas-tugas DAG yang sewenang-wenang untuk memproses data untuk batch dan kasus penggunaan interaktif. Tez sedang diadopsi oleh Hive, Babi, dan kerangka kerja lainnya di ekosistem Hadoop, dan juga oleh perangkat lunak komersial lainnya (mis., Alat ETL), untuk menggantikan Hadoop MapReduce sebagai mesin eksekusi yang mendasarinya.

Penjaga kebun binatang: Ini adalah layanan koordinasi kinerja tinggi untuk aplikasi terdistribusi.

Alternatif Hadoop

Untuk alternatif terbaik untuk Hadoop, Anda dapat mencoba salah satu dari yang berikut:

Apache Storm: Ini adalah Hadoop dari pemrosesan waktu-nyata yang ditulis dalam bahasa Clojure.

Pertanyaan Besar: Platform Google yang dikelola penuh, berbiaya rendah untuk analisis skala besar, BigQuery memungkinkan Anda untuk bekerja dengan SQL dan tidak khawatir tentang mengelola infrastruktur atau basis data.

Apache Mesos: Mesos mengabstraksi CPU, memori, penyimpanan, dan sumber daya komputasi lainnya dari mesin (fisik atau virtual), memungkinkan sistem yang toleran terhadap kesalahan dan elastis dapat dibangun dengan mudah dan berjalan secara efektif.

Apache Flink: Flink adalah platform untuk pemrosesan data stream dan batch terdistribusi yang dapat digunakan dengan Hadoop.

Binatang yg berkulit tebal: Pachyderm mengklaim untuk memberikan kekuatan MapReduce tanpa kompleksitas Hadoop dengan menggunakan wadah Docker untuk mengimplementasikan cluster.

Tutorial Hadoop Ditinjau

Gajah Hadoop Memberi TutorialHadoop adalah teknologi Big Data yang kuat dan kuat (termasuk alat yang agak membingungkan dan berevolusi dengan cepat yang terkait dengannya); namun, pertimbangkan kekuatan dan kelemahannya sebelum memutuskan untuk menggunakannya atau tidak di pusat data Anda. Mungkin ada solusi yang lebih baik, lebih sederhana, atau lebih murah tersedia untuk memenuhi kebutuhan pemrosesan data spesifik Anda.

Jika Anda ingin mempelajari lebih lanjut tentang Hadoop, lihat dokumentasinya dan wiki Hadoop.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me