Kami telah membahas Fitur Hadoop di tutorial Hadoop kami sebelumnya. Sekarang kita akan membahas batasan Hadoop. Ada berbagai kelemahan kerangka kerja Apache Hadoop.
Misalnya, masalah File Kecil, Pemrosesan Lambat, Pemrosesan Batch saja, Latensi, Masalah Keamanan, Kerentanan, Tanpa Caching, dll.
Semua keterbatasan Hadoop ini akan kita bahas secara detail di tutorial Hadoop ini.
Apa itu Hadoop?
Apache Hadoop adalah kerangka kerja perangkat lunak sumber terbuka untuk penyimpanan terdistribusi &pemrosesan sejumlah besar kumpulan data. Open source artinya tersedia secara bebas dan bahkan kita dapat mengubah kode sumbernya sesuai kebutuhan.
Apache Hadoop juga memungkinkan untuk menjalankan aplikasi pada sistem dengan ribuan node. Sistem file terdistribusinya menyediakan kecepatan transfer data yang cepat antar node.
Ini juga memungkinkan sistem untuk terus beroperasi jika terjadi kegagalan node. Fitur utama Hadoop adalah sebagai berikut:
- Di Apache Hadoop, data tersedia meskipun mesin mengalami kegagalan karena banyak salinan data. Jadi, jika ada mesin yang mogok, maka seseorang dapat mengakses data dari jalur lain.
- Apache Hadoop dapat diskalakan, karena mudah untuk menambahkan perangkat keras baru ke node.
- Hadoop sangat toleran terhadap kesalahan, karena secara default 3 replika setiap blok disimpan di seluruh cluster. Jadi, jika ada node dalam cluster yang down, data pada node tersebut dapat dipulihkan dari node lain dengan mudah.
- Apache Hadoop berjalan pada sekelompok perangkat keras komoditas yang tidak terlalu mahal.
- Di Apache Hadoop, data disimpan dengan andal di kluster meskipun terjadi kegagalan perangkat keras karena replikasi data di kluster.
Meskipun Hadoop adalah alat Big Data yang paling kuat, ada berbagai batasan untuk itu. Karena keterbatasan Hadoop, Apache Spark dan Apache Flink muncul.
Batasan Hadoop
Berbagai batasan Apache Hadoop diberikan di bawah ini beserta solusinya-
a. Masalah dengan File Kecil
Masalah utama dengan Hadoop adalah tidak cocok untuk data kecil. HDFS tidak memiliki kemampuan untuk mendukung pembacaan acak kecil karena desain kapasitasnya yang tinggi.
File kecil lebih kecil dari ukuran Blok HDFS (default 128MB). Jika Anda menyimpan sejumlah besar file kecil ini, HDFS tidak dapat menangani banyak file kecil ini.
Karena HDFS dirancang untuk bekerja dengan sejumlah kecil file besar untuk menyimpan kumpulan data besar daripada sejumlah besar file kecil. Jika ada banyak file kecil, NameNode akan kelebihan beban karena menyimpan namespace HDFS.
Solusi:
Cukup gabungkan file kecil untuk membuat file yang lebih besar, lalu salin file yang lebih besar ke HDFS.
Arsip Hadoop (File HAR) menangani masalah banyak file kecil. Hadoop Archives bekerja dengan membangun sistem file berlapis di atas HDFS.
Dengan bantuan perintah arsip Hadoop, file HAR dibuat; ini menjalankan tugas MapReduce untuk mengemas file yang diarsipkan ke dalam sejumlah kecil file HDFS. Membaca file melalui HAR tidak lebih efisien daripada membaca melalui HDFS.
Karena setiap akses file HAR memerlukan dua file indeks untuk dibaca serta file data untuk dibaca, ini akan membuatnya lebih lambat.
File urutan juga mengatasi masalah file kecil. Di mana kita menggunakan nama file sebagai kunci dan isi file sebagai nilainya.
Dengan menulis program untuk file (100 KB), kita dapat memasukkannya ke dalam satu file Urutan dan kemudian kita dapat memprosesnya dalam mode streaming yang beroperasi pada file Urutan.
MapReduce di Hadoop dapat memecah file Sequence menjadi beberapa bagian dan beroperasi pada setiap bagian secara independen karena file Sequence dapat dipisah.
Dengan menyimpan file di Hbase kita bisa mengatasi masalah file kecil. Kami sebenarnya tidak menyimpan jutaan file kecil ke dalam HBase, melainkan menambahkan konten biner file ke sel.
b. Kecepatan Pemrosesan Lambat
MapReduce memproses sejumlah besar data. Di Hadoop, MapReduce bekerja dengan memecah pemrosesan menjadi beberapa fase:Peta dan Kurangi . Jadi, MapReduce membutuhkan banyak waktu untuk melakukan tugas ini, sehingga meningkatkan latensi. Oleh karena itu, mengurangi kecepatan pemrosesan.
Solusi:
Dengan pemrosesan data dalam memori, Apache Spark mengatasi masalah ini. Seperti dalam pemrosesan dalam memori, tidak ada waktu yang dihabiskan untuk memindahkan data/proses masuk dan keluar dari disk, sehingga ini membuatnya lebih cepat.
Apache Spark 100 kali lebih cepat dibandingkan dengan MapReduce karena memproses semua yang ada di memori.
Flink juga bisa mengatasi masalah ini. Flink memproses lebih cepat daripada Spark karena arsitektur streamingnya.
c. Dukungan untuk Pemrosesan Batch saja
Hadoop hanya mendukung pemrosesan batch, tidak cocok untuk streaming data. Oleh karena itu, kinerja keseluruhan lebih lambat. Kerangka kerja MapReduce tidak memanfaatkan memori cluster Hadoop secara maksimal.
Solusi
Apache Spark memecahkan masalah ini karena mendukung pemrosesan aliran. Tetapi pemrosesan aliran Spark tidak seefisien Flink karena menggunakan pemrosesan mikro-batch. Apache Flink meningkatkan kinerja keseluruhan karena menyediakan run-time tunggal untuk streaming serta pemrosesan batch.
d. Tidak Ada Pemrosesan Waktu Nyata
Apache Hadoop adalah kerangka kerja pemrosesan batch. Artinya, dibutuhkan sejumlah besar data dalam input, memprosesnya, dan menghasilkan hasilnya.
Pemrosesan batch sangat efisien untuk memproses volume data yang tinggi, tetapi tergantung pada ukuran data yang diproses dan daya komputasi sistem; output dapat ditunda secara signifikan. Apache Hadoop tidak cocok untuk pemrosesan Real-time.
Solusi:
Spark cocok untuk pemrosesan aliran. Pemrosesan steaming menyediakan data input/output yang berkelanjutan. Ini memproses data dalam waktu singkat.
Flink menyediakan run-time tunggal untuk streaming maupun pemrosesan batch.
e. Pemrosesan Iteratif
Apache Hadoop tidak terlalu efisien untuk pemrosesan berulang. Karena Hadoop tidak mendukung aliran data siklis (yaitu rantai tahapan di mana setiap keluaran dari tahap sebelumnya merupakan masukan ke tahap berikutnya).
Solusi:
Spark mengatasi masalah ini. Karena Apache Spark mengakses data dari RAM, bukan dari Disk. Ini secara dramatis meningkatkan kinerja algoritme iteratif yang mengakses kumpulan data yang sama berulang kali.
Di Apache Spark, untuk pemrosesan berulang, setiap iterasi harus dijadwalkan dan dieksekusi secara terpisah.
f. Latensi
MapReduce di Hadoop lebih lambat karena mendukung format yang berbeda, terstruktur, dan data dalam jumlah besar. Di MapReduce, Map mengambil satu set data dan mengubahnya menjadi set data lain, di mana elemen individual dipecah menjadi pasangan nilai kunci.
Reduce mengambil output dari peta sebagai dan Reduce mengambil output dari peta sebagai input dan proses lebih lanjut. MapReduce membutuhkan banyak waktu untuk melakukan tugas ini sehingga meningkatkan latensi.
Solusi:
Apache Spark dapat mengurangi masalah ini. Meskipun Spark adalah sistem batch, ini relatif lebih cepat, karena menyimpan banyak data input di memori oleh RDD. Streaming data Apache Flink mencapai latensi rendah dan throughput tinggi.
g. Tidak Ada Kemudahan Penggunaan
Pengembang MapReduce di Hadoop perlu memberikan kode untuk setiap operasi yang membuatnya sangat sulit untuk bekerja. Di Hadoop, MapReduce tidak memiliki mode interaktif, tetapi menambahkan hive dan pig membuat bekerja dengan MapReduce sedikit lebih mudah.
Solusi:
Spark telah mengatasi masalah ini, karena Spark memiliki mode interaktif. Jadi, pengembang dan pengguna sama-sama dapat memiliki umpan balik perantara untuk kueri dan aktivitas lainnya.
Karena Spark memiliki banyak operator tingkat tinggi sehingga mudah untuk memprogram Spark. Seseorang juga dapat menggunakan Apache Flink karena juga memiliki operator tingkat tinggi.
h. Masalah Keamanan
Apache Hadoop menantang dalam memelihara aplikasi yang kompleks. Hadoop tidak memiliki enkripsi di tingkat penyimpanan dan jaringan, yang menjadi perhatian utama. Apache Hadoop mendukung autentikasi Kerberos, yang sulit dikelola.
Solusi:
Apache Spark memberikan bonus keamanan. Jika Anda menjalankan Apache Spark dalam HDFS, ia dapat menggunakan ACL HDFS dan izin tingkat file.
i. Rentan Secara Alami
Apache Hadoop ditulis dalam Java. Java, adalah bahasa yang paling populer, oleh karena itu Java paling banyak dieksploitasi oleh penjahat dunia maya.
j. Tanpa Caching
Apache Hadoop tidak efisien untuk caching. MapReduce tidak dapat menyimpan data perantara dalam memori untuk kebutuhan lebih lanjut dan ini mengurangi kinerja Hadoop.
Solusi:
Spark dan Flink mengatasi masalah ini. Data cache Spark dan Flink di memori untuk iterasi lebih lanjut yang meningkatkan kinerja secara keseluruhan.
k. Kode Panjang
Apache Hadoop memiliki 1,20.000 baris kode. Jumlah baris menghasilkan jumlah bug. Oleh karena itu akan membutuhkan lebih banyak waktu untuk menjalankan program.
Solusi:
Spark dan Flink ditulis dalam Scala dan Java. Tapi implementasinya di Scala, jadi jumlah baris kodenya lebih sedikit daripada Hadoop. Dengan demikian, dibutuhkan lebih sedikit waktu untuk menjalankan program.
Kesimpulan
Sebagai akibat dari keterbatasan Hadoop, kebutuhan akan Spark dan Flink muncul. Jadi, buat sistem lebih ramah untuk bermain dengan data dalam jumlah besar.
Apache Spark menyediakan pemrosesan data dalam memori, sehingga meningkatkan kecepatan pemrosesan. Flink meningkatkan kinerja karena menyediakan run-time tunggal untuk streaming serta pemrosesan batch.
Spark memberikan bonus keamanan. Oleh karena itu, seseorang dapat mengatasi semua batasan Hadoop ini dengan menggunakan teknologi data besar lainnya seperti Apache Spark dan Flink.
Jika Anda menemukan batasan lain dari Hadoop, jadi beri tahu kami dengan meninggalkan komentar di bagian yang diberikan di bawah ini.