Format file dalam data besar: program pendidikan singkat

Format file dalam data besar: program pendidikan singkat
Dewa Cuaca oleh Remarin

Tim Solusi Cloud Mail.ru menawarkan terjemahan artikel insinyur Rahul Bhatia dari Clairvoyant tentang format file apa saja yang terdapat dalam data besar, fitur apa yang paling umum dari format Hadoop dan format mana yang lebih baik untuk digunakan.

Mengapa diperlukan format file yang berbeda?

Hambatan performa utama untuk aplikasi berkemampuan HDFS seperti MapReduce dan Spark adalah waktu yang diperlukan untuk mencari, membaca, dan menulis data. Masalah-masalah ini diperburuk oleh kesulitan dalam mengelola kumpulan data yang besar jika kita memiliki skema yang berkembang dan bukan skema yang tetap, atau jika ada beberapa kendala penyimpanan.

Pemrosesan data besar meningkatkan beban pada subsistem penyimpanan - Hadoop menyimpan data secara berlebihan untuk mencapai toleransi kesalahan. Selain disk, prosesor, jaringan, sistem input/output, dan sebagainya juga dimuat. Seiring bertambahnya volume data, biaya pemrosesan dan penyimpanannya juga meningkat.

Berbagai format file di Hadoop diciptakan untuk memecahkan masalah-masalah ini dengan tepat. Memilih format file yang sesuai dapat memberikan beberapa manfaat signifikan:

  1. Waktu membaca lebih cepat.
  2. Waktu perekaman lebih cepat.
  3. File bersama.
  4. Dukungan untuk evolusi skema.
  5. Dukungan kompresi yang diperluas.

Beberapa format file ditujukan untuk penggunaan umum, yang lain untuk penggunaan yang lebih spesifik, dan beberapa dirancang untuk memenuhi karakteristik data tertentu. Jadi pilihannya cukup besar.

Format file Avro

Untuk serialisasi data Avro banyak digunakan - itu berbasis string, yaitu format penyimpanan data string di Hadoop. Ini menyimpan skema dalam format JSON, membuatnya mudah dibaca dan diinterpretasikan oleh program apa pun. Datanya sendiri dalam format biner, ringkas dan efisien.

Sistem serialisasi Avro bersifat netral bahasa. File dapat diproses dalam berbagai bahasa, saat ini C, C++, C#, Java, Python dan Ruby.

Fitur utama Avro adalah dukungannya yang kuat terhadap skema data yang berubah seiring waktu, yaitu berkembang. Avro memahami perubahan skemaβ€”menghapus, menambah, atau mengubah bidang.

Avro mendukung berbagai struktur data. Misalnya, Anda bisa membuat rekaman yang berisi larik, tipe enumerasi, dan subrekam.

Format file dalam data besar: program pendidikan singkat
Format ini ideal untuk menulis ke zona pendaratan (transisi) danau data (danau data, atau data lake - kumpulan instance untuk menyimpan berbagai jenis data selain sumber data secara langsung).

Jadi, format ini paling cocok untuk menulis ke landing zone data lake karena alasan berikut:

  1. Data dari zona ini biasanya dibaca secara keseluruhan untuk diproses lebih lanjut oleh sistem hilir - dan format berbasis baris lebih efisien dalam hal ini.
  2. Sistem hilir dapat dengan mudah mengambil tabel skema dari fileβ€”tidak perlu menyimpan skema secara terpisah di penyimpanan meta eksternal.
  3. Setiap perubahan pada skema asli mudah diproses (evolusi skema).

Format File Parket

Parket adalah format file sumber terbuka untuk Hadoop yang menyimpan struktur data bersarang dalam format kolom datar.

Dibandingkan dengan pendekatan baris tradisional, Parket lebih efisien dalam hal penyimpanan dan kinerja.

Hal ini sangat berguna untuk kueri yang membaca kolom tertentu dari tabel lebar (banyak kolom). Berkat format file, hanya kolom yang diperlukan yang dibaca, sehingga I/O dijaga agar tetap minimum.

Penyimpangan kecil dan penjelasan: Untuk lebih memahami format file Parket di Hadoop, mari kita lihat apa itu format berbasis kolom - yaitu berbentuk kolom. Format ini menyimpan nilai serupa untuk setiap kolom secara bersamaan.

Misalnya, catatan mencakup bidang ID, Nama, dan Departemen. Dalam hal ini, semua nilai kolom ID akan disimpan bersama, begitu pula nilai kolom Nama, dan seterusnya. Tabelnya akan terlihat seperti ini:

ID
Nama
Departemen

1
kosong1
d1

2
kosong2
d2

3
kosong3
d3

Dalam format string, data akan disimpan sebagai berikut:

1
kosong1
d1
2
kosong2
d2
3
kosong3
d3

Dalam format file kolom, data yang sama akan disimpan seperti ini:

1
2
3
kosong1
kosong2
kosong3
d1
d2
d3

Format kolom lebih efisien ketika Anda perlu menanyakan beberapa kolom dari sebuah tabel. Itu hanya akan membaca kolom yang diperlukan karena berdekatan. Dengan cara ini, operasi I/O dijaga agar tetap minimum.

Misalnya Anda hanya membutuhkan kolom NAMA saja. DI DALAM format string Setiap catatan dalam kumpulan data perlu dimuat, diurai berdasarkan bidang, dan kemudian diekstraksi data NAMA. Format kolom memungkinkan Anda menelusuri langsung ke kolom Nama karena semua nilai untuk kolom tersebut disimpan bersama. Anda tidak perlu memindai seluruh rekaman.

Dengan demikian, format kolom meningkatkan kinerja kueri karena memerlukan lebih sedikit waktu pencarian untuk mendapatkan kolom yang diperlukan dan mengurangi jumlah operasi I/O karena hanya kolom yang diinginkan yang dibaca.

Salah satu fitur uniknya Parket apakah dalam format ini bisa menyimpan data dengan struktur bersarang. Ini berarti bahwa dalam file Parket, bahkan bidang yang disarangkan dapat dibaca satu per satu tanpa harus membaca semua bidang dalam struktur yang disarangkan. Parket menggunakan algoritma penghancuran dan perakitan untuk menyimpan struktur bersarang.

Format file dalam data besar: program pendidikan singkat
Untuk memahami format file Parket di Hadoop, Anda perlu mengetahui istilah-istilah berikut:

  1. Sekelompok string (grup baris): pembagian data horizontal yang logis menjadi beberapa baris. Grup baris terdiri dari sebuah fragmen dari setiap kolom dalam kumpulan data.
  2. Fragmen kolom (column chunk): Sebuah fragmen dari kolom tertentu. Fragmen kolom ini berada dalam kelompok baris tertentu dan dijamin berdekatan dalam file.
  3. Halaman (halaman): Fragmen kolom dibagi menjadi halaman-halaman yang ditulis satu demi satu. Halaman-halaman tersebut memiliki judul yang sama, sehingga Anda dapat melewatkan judul yang tidak perlu saat membaca.

Format file dalam data besar: program pendidikan singkat
Di sini judulnya hanya berisi angka ajaib PAR1 (4 byte) yang mengidentifikasi file sebagai file Parket.

Footernya berbunyi sebagai berikut:

  1. Metadata file yang berisi koordinat awal metadata setiap kolom. Saat membaca, Anda harus terlebih dahulu membaca metadata file untuk menemukan semua bagian kolom yang diinginkan. Bagian kolom kemudian harus dibaca secara berurutan. Metadata lainnya mencakup versi format, skema, dan pasangan nilai kunci tambahan.
  2. Panjang metadata (4 byte).
  3. Angka ajaib PAR1 (4 byte).

Format File ORC

Format file baris-kolom yang dioptimalkan (Kolom Baris yang Dioptimalkan, ORC) menawarkan cara yang sangat efisien untuk menyimpan data dan dirancang untuk mengatasi keterbatasan format lain. Menyimpan data dalam bentuk yang sangat ringkas, memungkinkan Anda melewatkan detail yang tidak perlu - tanpa memerlukan pembuatan indeks yang besar, rumit, atau dikelola secara manual.

Keuntungan format ORC:

  1. Satu file adalah output dari setiap tugas, yang mengurangi beban pada NameNode (simpul nama).
  2. Dukungan untuk tipe data Hive, termasuk DateTime, desimal, dan tipe data kompleks (struct, list, map, dan union).
  3. Pembacaan file yang sama secara bersamaan dengan proses RecordReader yang berbeda.
  4. Kemampuan untuk membagi file tanpa memindai penanda.
  5. Estimasi kemungkinan alokasi memori heap maksimum untuk proses baca/tulis berdasarkan informasi di footer file.
  6. Metadata disimpan dalam format serialisasi biner Protocol Buffers, yang memungkinkan kolom ditambahkan dan dihapus.

Format file dalam data besar: program pendidikan singkat
ORC menyimpan kumpulan string dalam satu file, dan di dalam koleksi tersebut, data string disimpan dalam format kolom.

File ORC menyimpan kelompok garis yang disebut garis dan informasi pendukung di footer file. Postscript di akhir file berisi parameter kompresi dan ukuran footer terkompresi.

Ukuran garis default adalah 250 MB. Karena garis besar tersebut, pembacaan dari HDFS dilakukan lebih efisien: dalam blok besar yang bersebelahan.

Footer file mencatat daftar jalur dalam file, jumlah baris per jalur, dan tipe data setiap kolom. Nilai count, min, max dan sum yang dihasilkan untuk setiap kolom juga ditulis disana.

Footer strip berisi direktori lokasi aliran.

Data baris digunakan saat memindai tabel.

Data indeks mencakup nilai minimum dan maksimum setiap kolom serta posisi baris pada setiap kolom. Indeks ORC hanya digunakan untuk memilih kelompok garis dan baris, bukan untuk menjawab pertanyaan.

Perbandingan format file yang berbeda

Avro dibandingkan dengan Parket

  1. Avro adalah format penyimpanan baris, sedangkan Parket menyimpan data dalam kolom.
  2. Parket lebih cocok untuk kueri analitis, artinya operasi baca dan kueri data jauh lebih efisien daripada tulis.
  3. Operasi tulis di Avro dilakukan lebih efisien daripada di Parket.
  4. Avro menangani evolusi sirkuit dengan lebih matang. Parket hanya mendukung penambahan skema, sedangkan Avro mendukung evolusi multifungsi, yaitu menambah atau mengubah kolom.
  5. Parket sangat ideal untuk menanyakan subkumpulan kolom dalam tabel multi-kolom. Avro cocok untuk operasi ETL di mana kita menanyakan semua kolom.

ORC vs Parket

  1. Parket menyimpan data bersarang dengan lebih baik.
  2. ORC lebih cocok untuk predikat pushdown.
  3. ORC mendukung properti ACID.
  4. ORC mengompresi data dengan lebih baik.

Apa lagi yang harus dibaca tentang topik tersebut:

  1. Analisis data besar di cloud: bagaimana perusahaan bisa berorientasi pada data.
  2. Panduan Sederhana untuk Skema Basis Data.
  3. Saluran telegram kami tentang transformasi digital.

Sumber: www.habr.com

Tambah komentar