Tidak seperti subsistem I/O lainnya, Hadoop juga dilengkapi dengan seperangkat primitif. Pertimbangan primitif ini, meskipun bersifat generik, sejalan dengan sistem Hadoop IO juga dengan beberapa konotasi khusus untuk itu, tentu saja. Hadoop menangani kumpulan data multi-terabyte; pertimbangan khusus pada primitif ini akan memberikan gambaran bagaimana Hadoop menangani input dan output data. Artikel ini dengan cepat menelusuri primitif ini untuk memberikan perspektif tentang sistem input output Hadoop.
Integritas Data
Integritas data berarti bahwa data harus tetap akurat dan konsisten di seluruh operasi penyimpanan, pemrosesan, dan pengambilannya. Untuk memastikan bahwa tidak ada data yang hilang atau rusak selama persistensi dan pemrosesan, Hadoop mempertahankan batasan integritas data yang ketat. Setiap operasi baca/tulis terjadi di disk, terlebih lagi melalui jaringan rentan terhadap kesalahan. Dan, volume data yang ditangani Hadoop hanya memperburuk situasi. Cara biasa untuk mendeteksi data yang rusak adalah melalui checksum. Sebuah checksum dihitung ketika data pertama kali masuk ke dalam sistem dan dikirim melintasi saluran selama proses pengambilan. Ujung pengambilan menghitung checksum lagi dan mencocokkan dengan yang diterima. Jika cocok persis maka data dianggap bebas kesalahan jika tidak mengandung kesalahan. Tetapi masalahnya adalah – bagaimana jika checksum yang dikirim sendiri rusak? Ini sangat tidak mungkin karena ini adalah data kecil, tetapi bukan kemungkinan yang tidak dapat disangkal. Menggunakan jenis perangkat keras yang tepat seperti memori ECC dapat digunakan untuk meringankan situasi.
Ini hanya deteksi. Oleh karena itu, untuk memperbaiki kesalahan, digunakan teknik lain, yang disebut CRC (Cyclic Redundancy Check).
Hadoop membawanya lebih jauh dan membuat checksum yang berbeda untuk setiap 512 (default) byte data. Karena CRC-32 hanya 4 byte, overhead penyimpanan tidak menjadi masalah. Semua data yang masuk ke dalam sistem diverifikasi oleh datanode sebelum diteruskan untuk disimpan atau diproses lebih lanjut. Data yang dikirim ke pipa datanode diverifikasi melalui checksum dan setiap kerusakan yang ditemukan segera diberitahukan kepada klien dengan ChecksumException . Pembacaan klien dari datanode juga melalui latihan yang sama. Datanode menyimpan log verifikasi checksum untuk melacak blok terverifikasi. Log diperbarui oleh datanode setelah menerima sinyal sukses verifikasi blok dari klien. Jenis statistik ini membantu mencegah disk buruk.
Selain itu, verifikasi berkala di toko blok dilakukan dengan bantuan DataBlockScanner berjalan bersama dengan utas datanode di latar belakang. Ini melindungi data dari kerusakan di media penyimpanan fisik.
Hadoop menyimpan salinan atau replika data. Ini secara khusus digunakan untuk memulihkan data dari korupsi besar-besaran. Setelah klien mendeteksi kesalahan saat membaca blok, klien segera melaporkan ke datanode tentang blok buruk dari namenode sebelum melempar ChecksumException . Namenode kemudian menandainya sebagai blok buruk dan menjadwalkan referensi lebih lanjut ke blok tersebut ke replikanya. Dengan cara ini, replika dipertahankan dengan replika lain dan blok buruk yang ditandai akan dihapus dari sistem.
Untuk setiap file yang dibuat di Hadoop LocalFileSystem , file tersembunyi dengan nama yang sama di direktori yang sama dengan ekstensi .
Kompresi
Mengingat volume data yang ditangani Hadoop, kompresi bukanlah kemewahan tetapi persyaratan. Ada banyak manfaat nyata dari kompresi file yang benar digunakan oleh Hadoop. Ini menghemat persyaratan penyimpanan dan merupakan kemampuan yang harus dimiliki untuk mempercepat transmisi data melalui jaringan dan disk. Ada banyak tools, teknik, dan algoritma yang biasa digunakan oleh Hadoop. Banyak dari mereka yang cukup populer dan telah digunakan dalam kompresi file selama berabad-abad. Misalnya, gzip, bzip2, LZO, zip, dan sebagainya sering digunakan.
Serialisasi
Proses yang mengubah objek terstruktur menjadi aliran byte disebut serialisasi . Ini secara khusus diperlukan untuk transmisi data melalui jaringan atau menyimpan data mentah dalam disk. Deserialization hanyalah proses sebaliknya, di mana aliran byte diubah menjadi objek terstruktur. Ini terutama diperlukan untuk implementasi objek dari byte mentah. Oleh karena itu, tidak mengherankan jika komputasi terdistribusi menggunakan ini dalam beberapa area berbeda:komunikasi antar-proses dan persistensi data.
Hadoop menggunakan RPC (Remote Procedure Call) untuk melakukan komunikasi antar proses antar node. Oleh karena itu, protokol RPC menggunakan proses serialisasi dan deserialisasi untuk merender pesan ke aliran byte dan sebaliknya dan mengirimkannya melalui jaringan. Namun, prosesnya harus cukup ringkas agar dapat menggunakan bandwidth jaringan dengan baik, serta cepat, dapat dioperasikan, dan fleksibel untuk mengakomodasi pembaruan protokol dari waktu ke waktu.
Hadoop memiliki format serialisasi yang ringkas dan cepat, Writables , yang digunakan program MapReduce untuk menghasilkan kunci dan tipe nilai.
Struktur Data File
Ada beberapa wadah tingkat tinggi yang menguraikan struktur data khusus di Hadoop untuk menampung jenis data khusus. Misalnya, untuk memelihara log biner, SequenceFile container menyediakan struktur data untuk mempertahankan pasangan nilai kunci biner. Kami kemudian dapat menggunakan kunci, seperti stempel waktu yang diwakili oleh LongWritable dan nilai menurut Dapat ditulis , yang mengacu pada jumlah yang dicatat.
Ada wadah lain, turunan yang diurutkan dari SequenceFile , bernama MapFile . Ini memberikan indeks untuk pencarian yang mudah berdasarkan kunci.
Kedua kontainer ini dapat dioperasikan dan dapat dikonversi ke dan dari satu sama lain.
Kesimpulan
Ini hanyalah gambaran singkat dari sistem input/output Hadoop. Kami akan mempelajari banyak detail rumit di artikel berikutnya. Tidak terlalu sulit untuk memahami sistem input/output Hadoop jika seseorang memiliki pemahaman dasar tentang sistem I/O secara umum. Hadoop hanya menambahkan beberapa jus ekstra untuk mengikuti sifat terdistribusi yang bekerja dalam skala besar data. Itu saja.
Referensi
Putih, Tom. Hadoop, Panduan Definitif, 2009 . Publikasi O'Reilly.