Di blog kami sebelumnya, kami telah mempelajari Hadoop Penghitung secara terperinci. Sekarang dalam tutorial ini, kita akan membahas RecordReader di Hadoop.
Di sini kita akan membahas pengenalan Hadoop RecordReader, cara kerja RecordReader. Kami juga akan membahas jenis RecordReader di MapReduce, ukuran satu Record di Hadoop MapReduce dalam Tutorial MapReduce ini.
Apa itu RecordReader di MapReduce?
RecordReader mengonversi tampilan input berorientasi byte menjadi tampilan berorientasi record untuk Mapper dan Peredam tugas untuk diproses.
Untuk memahami Hadoop RecordReader, kita perlu memahami MapReduce Dataflow. Mari kita pelajari bagaimana data mengalir:
MapReduce adalah model sederhana dari pemrosesan data. Masukan dan keluaran untuk peta dan fungsi pengurangan adalah pasangan nilai kunci . Berikut adalah bentuk umum dari peta dan fungsi reduksi:
- Peta: (K1, V1) → daftar (K2, V2)
- Kurangi: (K2, daftar (V2)) → daftar (K3, V3)
Sekarang sebelum pemrosesan dimulai, perlu diketahui data mana yang akan diproses. Jadi, InputFormat kelas membantu untuk mencapai ini. Kelas ini memilih file dari HDFS itu adalah input ke fungsi peta. Itu juga bertanggung jawab untuk membuat pemisahan input.
Juga, bagilah menjadi catatan. Ini membagi data menjadi jumlah pemisahan (biasanya 64/128 MB) di HDFS. Ini dikenal sebagai InputSplit. InputSplit adalah representasi logis dari data. Dalam tugas MapReduce, jumlah eksekusi tugas peta sama dengan jumlah InputSplits.
Dengan memanggil 'getSplit ()' klien menghitung pembagian untuk pekerjaan itu. Kemudian dikirim ke master aplikasi. Ini menggunakan lokasi penyimpanannya untuk menjadwalkan tugas peta yang akan memprosesnya di cluster.
Setelah tugas peta itu meneruskan pemisahan ke createRecordReader () metode. Dari situ, ia memperoleh RecordReader untuk pemisahan. RecordReader menghasilkan record (pasangan kunci-nilai). Kemudian diteruskan ke fungsi peta.
Hadoop RecordReader dalam eksekusi pekerjaan MapReduce menggunakan data dalam batas-batas yang dibuat oleh inputsplit. Dan kemudian membuat pasangan nilai kunci untuk pembuat peta. "Mulai" adalah posisi byte dalam file.
Di Mulai, Hadoop RecordReader mulai membuat pasangan kunci/nilai. "Akhir" adalah tempat RecordReader berhenti membaca catatan. Di RecordReader, data dimuat dari sumbernya.
Kemudian data diubah menjadi pasangan nilai kunci yang sesuai untuk dibaca oleh Mapper. Ini berkomunikasi dengan inputsplit sampai pembacaan file tidak selesai.
Bagaimana RecorReader bekerja di Hadoop?
Ini lebih dari iterator atas catatan. Tugas peta menggunakan satu catatan untuk menghasilkan pasangan nilai kunci yang diteruskan ke fungsi peta. Kita juga dapat melihat ini dengan menggunakan fungsi run mapper yang diberikan di bawah ini:
public void run(Context context ) throws IOException, InterruptedException{ setup(context); while(context.nextKeyValue()) { map(context.setCurrentKey(),context.getCurrentValue(),context) } cleanup(context); }
Meskipun tidak wajib bagi RecordReader untuk tetap berada di antara batas yang dibuat oleh inputsplit untuk menghasilkan pasangan nilai kunci, biasanya tetap ada. Selain itu, implementasi kustom bahkan dapat membaca lebih banyak data di luar inputsplit.
Kemudian, setelah menjalankan setup() , nextKeyValue() akan mengulang konteksnya. Ini mengisi objek kunci dan nilai untuk mapper. Melalui konteks, kerangka mengambil nilai kunci dari pembaca rekaman. Kemudian teruskan ke peta() metode untuk melakukan pekerjaannya.
Oleh karena itu, input (nilai kunci) ke fungsi peta diproses sesuai logika yang disebutkan dalam kode peta. Saat record mencapai akhir record, nextKeyValue() metode mengembalikan false.
Jenis Pembaca Rekaman Hadoop
InputFormat mendefinisikan instance RecordReader, di Hadoop. Secara default, dengan menggunakan TextInputFormat ReordReader mengonversi data menjadi pasangan nilai kunci. TextInputFormat juga menyediakan 2 jenis RecordReaders yaitu sebagai berikut:
1. LineRecordReader
Ini adalah RecordReader default. TextInputFormat menyediakan RecordReader ini. Itu juga memperlakukan setiap baris file input sebagai nilai baru. Kemudian kunci yang terkait adalah byte offset. Itu selalu melewati baris pertama dalam pemisahan (atau bagian darinya), jika itu bukan bagian pertama.
Itu selalu membaca satu baris setelah batas pemisahan di akhir (jika data tersedia, maka itu bukan pemisahan terakhir).
2. SequenceFileRecordReader
Hadoop RecordReader ini membaca data yang ditentukan oleh header file urutan.
Ukuran maksimum satu Record
Dengan menggunakan parameter di bawah ini, kami menetapkan nilai maksimum.
conf.setInt("mapred.linerecordreader.maxlength", Integer.MAX_VALUE);
Kesimpulan
Kesimpulannya, Hadoop RecorReader membuat input (nilai kunci) ke Mapper. Itu juga menggunakan TextInputFormat untuk mengonversi data menjadi pasangan nilai kunci.
Saya harap Anda menyukai blog ini jika Anda memiliki pertanyaan terkait Hadoop RecordReader, jangan ragu untuk berbagi dengan kami. Kami akan dengan senang hati menyelesaikannya.