Μορφές αρχείων σε μεγάλα δεδομένα: ένα σύντομο εκπαιδευτικό πρόγραμμα

Μορφές αρχείων σε μεγάλα δεδομένα: ένα σύντομο εκπαιδευτικό πρόγραμμα
Weather Deity από τον Remarin

Ομάδα Mail.ru Cloud Solutions προσφέρει μετάφραση άρθρου μηχανικός Rahul Bhatia από το Clairvoyant σχετικά με τις μορφές αρχείων που υπάρχουν στα μεγάλα δεδομένα, ποια είναι τα πιο κοινά χαρακτηριστικά των μορφών Hadoop και ποια μορφή είναι καλύτερη να χρησιμοποιήσετε.

Γιατί χρειάζονται διαφορετικές μορφές αρχείων;

Ένα σημαντικό σημείο συμφόρησης απόδοσης για εφαρμογές με δυνατότητα HDFS, όπως το MapReduce και το Spark, είναι ο χρόνος που χρειάζεται για την αναζήτηση, την ανάγνωση και την εγγραφή δεδομένων. Αυτά τα προβλήματα επιδεινώνονται από τη δυσκολία διαχείρισης μεγάλων συνόλων δεδομένων εάν έχουμε ένα σχήμα που εξελίσσεται και όχι σταθερό ή εάν υπάρχουν κάποιοι περιορισμοί αποθήκευσης.

Η επεξεργασία μεγάλων δεδομένων αυξάνει το φορτίο στο υποσύστημα αποθήκευσης - το Hadoop αποθηκεύει δεδομένα πλεονάζοντα για να επιτύχει ανοχή σφαλμάτων. Εκτός από τους δίσκους, φορτώνεται ο επεξεργαστής, το δίκτυο, το σύστημα εισόδου/εξόδου κ.λπ. Καθώς αυξάνεται ο όγκος των δεδομένων, αυξάνεται και το κόστος επεξεργασίας και αποθήκευσης τους.

Διάφορες μορφές αρχείων σε Hadoop εφευρέθηκε για να λύσει ακριβώς αυτά τα προβλήματα. Η επιλογή της κατάλληλης μορφής αρχείου μπορεί να προσφέρει ορισμένα σημαντικά οφέλη:

  1. Ταχύτερος χρόνος ανάγνωσης.
  2. Ταχύτερος χρόνος εγγραφής.
  3. Κοινόχρηστα αρχεία.
  4. Υποστήριξη για την εξέλιξη του σχήματος.
  5. Διευρυμένη υποστήριξη συμπίεσης.

Ορισμένες μορφές αρχείων προορίζονται για γενική χρήση, άλλες για πιο συγκεκριμένες χρήσεις και ορισμένες έχουν σχεδιαστεί για να πληρούν συγκεκριμένα χαρακτηριστικά δεδομένων. Οπότε η επιλογή είναι πραγματικά πολύ μεγάλη.

Μορφή αρχείου Avro

Για σειριοποίηση δεδομένων Το Avro χρησιμοποιείται ευρέως - αυτό με βάση τη χορδή, δηλαδή μια μορφή αποθήκευσης δεδομένων συμβολοσειρών στο Hadoop. Αποθηκεύει το σχήμα σε μορφή JSON, καθιστώντας το εύκολο στην ανάγνωση και την ερμηνεία του από οποιοδήποτε πρόγραμμα. Τα ίδια τα δεδομένα είναι σε δυαδική μορφή, συμπαγή και αποτελεσματικά.

Το σύστημα σειριοποίησης του Avro είναι γλωσσικό ουδέτερο. Τα αρχεία μπορούν να υποβληθούν σε επεξεργασία σε διάφορες γλώσσες, προς το παρόν σε C, C++, C#, Java, Python και Ruby.

Ένα βασικό χαρακτηριστικό του Avro είναι η ισχυρή του υποστήριξη για σχήματα δεδομένων που αλλάζουν με την πάροδο του χρόνου, δηλαδή εξελίσσονται. Το Avro κατανοεί τις αλλαγές σχήματος—διαγραφή, προσθήκη ή αλλαγή πεδίων.

Το Avro υποστηρίζει μια ποικιλία δομών δεδομένων. Για παράδειγμα, μπορείτε να δημιουργήσετε μια εγγραφή που περιέχει έναν πίνακα, έναν απαριθμημένο τύπο και μια δευτερεύουσα εγγραφή.

Μορφές αρχείων σε μεγάλα δεδομένα: ένα σύντομο εκπαιδευτικό πρόγραμμα
Αυτή η μορφή είναι ιδανική για εγγραφή στη ζώνη προσγείωσης (μετάβασης) μιας λίμνης δεδομένων (λίμνη δεδομένων, ή data lake - μια συλλογή περιπτώσεων για την αποθήκευση διαφόρων τύπων δεδομένων εκτός από τις πηγές δεδομένων απευθείας).

Έτσι, αυτή η μορφή είναι η καταλληλότερη για εγγραφή στη ζώνη προσγείωσης μιας λίμνης δεδομένων για τους ακόλουθους λόγους:

  1. Τα δεδομένα από αυτήν τη ζώνη διαβάζονται συνήθως στο σύνολό τους για περαιτέρω επεξεργασία από συστήματα κατάντη - και μια μορφή που βασίζεται σε γραμμές είναι πιο αποτελεσματική σε αυτήν την περίπτωση.
  2. Τα μεταγενέστερα συστήματα μπορούν εύκολα να ανακτήσουν πίνακες σχημάτων από αρχεία—δεν χρειάζεται να αποθηκεύονται τα σχήματα χωριστά σε εξωτερικό χώρο αποθήκευσης μεταδεδομένων.
  3. Οποιαδήποτε αλλαγή στο αρχικό σχήμα επεξεργάζεται εύκολα (εξέλιξη σχήματος).

Μορφή αρχείου παρκέ

Το Parquet είναι μια μορφή αρχείου ανοιχτού κώδικα για το Hadoop που αποθηκεύει ένθετες δομές δεδομένων σε επίπεδη μορφή στήλης.

Σε σύγκριση με την παραδοσιακή προσέγγιση σειρών, το παρκέ είναι πιο αποτελεσματικό όσον αφορά την αποθήκευση και την απόδοση.

Αυτό είναι ιδιαίτερα χρήσιμο για ερωτήματα που διαβάζουν συγκεκριμένες στήλες από έναν ευρύ πίνακα (πολλές στήλες). Χάρη στη μορφή του αρχείου, διαβάζονται μόνο οι απαραίτητες στήλες, επομένως η είσοδος/έξοδος περιορίζεται στο ελάχιστο.

Μια μικρή παρέκκλιση και εξήγηση: Για να κατανοήσουμε καλύτερα τη μορφή αρχείου Parquet στο Hadoop, ας δούμε τι είναι η μορφή που βασίζεται σε στήλη - δηλαδή στη στήλη. Αυτή η μορφή αποθηκεύει παρόμοιες τιμές για κάθε στήλη μαζί.

Για παράδειγμα, η εγγραφή περιλαμβάνει τα πεδία ID, Όνομα και Τμήμα. Σε αυτήν την περίπτωση, όλες οι τιμές της στήλης ID θα αποθηκευτούν μαζί, όπως και οι τιμές της στήλης Όνομα κ.λπ. Ο πίνακας θα μοιάζει κάπως έτσι:

ID
Όνομα
Τμήμα

1
emp1
d1

2
emp2
d2

3
emp3
d3

Σε μορφή συμβολοσειράς, τα δεδομένα θα αποθηκευτούν ως εξής:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Σε μορφή αρχείου στήλης, τα ίδια δεδομένα θα αποθηκευτούν ως εξής:

1
2
3
emp1
emp2
emp3
d1
d2
d3

Η μορφή στηλών είναι πιο αποτελεσματική όταν χρειάζεται να υποβάλετε ερώτημα σε πολλές στήλες από έναν πίνακα. Θα διαβάσει μόνο τις απαιτούμενες στήλες επειδή είναι γειτονικές. Με αυτόν τον τρόπο, οι λειτουργίες I/O περιορίζονται στο ελάχιστο.

Για παράδειγμα, χρειάζεστε μόνο τη στήλη NAME. ΣΕ μορφή συμβολοσειράς Κάθε εγγραφή στο σύνολο δεδομένων πρέπει να φορτωθεί, να αναλυθεί κατά πεδίο και στη συνέχεια να εξαχθούν τα δεδομένα NAME. Η μορφή στήλης σάς επιτρέπει να κάνετε αναλυτική αναζήτηση απευθείας στη στήλη Όνομα επειδή όλες οι τιμές για αυτήν τη στήλη αποθηκεύονται μαζί. Δεν χρειάζεται να σαρώσετε ολόκληρη την εγγραφή.

Έτσι, η μορφή στηλών βελτιώνει την απόδοση του ερωτήματος επειδή απαιτεί λιγότερο χρόνο αναζήτησης για να φτάσετε στις απαιτούμενες στήλες και μειώνει τον αριθμό των λειτουργιών I/O επειδή διαβάζονται μόνο οι επιθυμητές στήλες.

Ένα από τα μοναδικά χαρακτηριστικά Παρκέ είναι ότι σε αυτή τη μορφή μπορεί αποθήκευση δεδομένων με ένθετες δομές. Αυτό σημαίνει ότι σε ένα αρχείο Parquet, ακόμη και τα ένθετα πεδία μπορούν να διαβαστούν μεμονωμένα χωρίς να χρειάζεται να διαβάσετε όλα τα πεδία στην ένθετη δομή. Το Parquet χρησιμοποιεί έναν αλγόριθμο τεμαχισμού και συναρμολόγησης για την αποθήκευση ένθετων δομών.

Μορφές αρχείων σε μεγάλα δεδομένα: ένα σύντομο εκπαιδευτικό πρόγραμμα
Για να κατανοήσετε τη μορφή αρχείου Parquet στο Hadoop, πρέπει να γνωρίζετε τους ακόλουθους όρους:

  1. Ομάδα χορδών (ομάδα σειρών): λογική οριζόντια διαίρεση δεδομένων σε σειρές. Μια ομάδα σειρών αποτελείται από ένα τμήμα κάθε στήλης στο σύνολο δεδομένων.
  2. Θραύσμα στήλης (κομμάτι στήλης): Ένα θραύσμα μιας συγκεκριμένης στήλης. Αυτά τα τμήματα στηλών ζουν σε μια συγκεκριμένη ομάδα σειρών και είναι εγγυημένα συνεχόμενα στο αρχείο.
  3. Σελίδα (σελίδα): Τα θραύσματα στηλών χωρίζονται σε σελίδες που γράφονται η μία μετά την άλλη. Οι σελίδες έχουν κοινό τίτλο, ώστε να μπορείτε να παραλείψετε τις περιττές κατά την ανάγνωση.

Μορφές αρχείων σε μεγάλα δεδομένα: ένα σύντομο εκπαιδευτικό πρόγραμμα
Εδώ ο τίτλος περιέχει απλώς τον μαγικό αριθμό PAR1 (4 byte) που προσδιορίζει το αρχείο ως αρχείο Parquet.

Το υποσέλιδο λέει τα εξής:

  1. Μεταδεδομένα αρχείου που περιέχουν τις αρχικές συντεταγμένες των μεταδεδομένων κάθε στήλης. Κατά την ανάγνωση, πρέπει πρώτα να διαβάσετε τα μεταδεδομένα του αρχείου για να βρείτε όλα τα τμήματα της στήλης που σας ενδιαφέρουν. Τα τμήματα της στήλης θα πρέπει στη συνέχεια να διαβάζονται διαδοχικά. Άλλα μεταδεδομένα περιλαμβάνουν την έκδοση μορφής, το σχήμα και τυχόν πρόσθετα ζεύγη κλειδιού-τιμής.
  2. Μήκος μεταδεδομένων (4 byte).
  3. Μαγικός αριθμός PAR1 (4 byte).

Μορφή αρχείου ORC

Βελτιστοποιημένη μορφή αρχείου γραμμής-στήλης (Βελτιστοποιημένη στήλη γραμμής, CRO) προσφέρει έναν πολύ αποτελεσματικό τρόπο αποθήκευσης δεδομένων και σχεδιάστηκε για να ξεπεράσει τους περιορισμούς άλλων μορφών. Αποθηκεύει δεδομένα σε μια τέλεια συμπαγή μορφή, επιτρέποντάς σας να παραλείψετε περιττές λεπτομέρειες - χωρίς να απαιτείται η κατασκευή μεγάλων, πολύπλοκων ή χειροκίνητων ευρετηρίων.

Πλεονεκτήματα της μορφής ORC:

  1. Ένα αρχείο είναι η έξοδος κάθε εργασίας, η οποία μειώνει το φορτίο στο NameNode (όνομα κόμβου).
  2. Υποστήριξη για τύπους δεδομένων Hive, συμπεριλαμβανομένων των τύπων DateTime, δεκαδικών και σύνθετων τύπων δεδομένων (δομή, λίστα, χάρτης και ένωση).
  3. Ταυτόχρονη ανάγνωση του ίδιου αρχείου από διαφορετικές διαδικασίες RecordReader.
  4. Δυνατότητα διαχωρισμού αρχείων χωρίς σάρωση για δείκτες.
  5. Εκτίμηση της μέγιστης δυνατής εκχώρησης μνήμης σωρού για διαδικασίες ανάγνωσης/εγγραφής με βάση τις πληροφορίες στο υποσέλιδο του αρχείου.
  6. Τα μεταδεδομένα αποθηκεύονται στη μορφή δυαδικής σειριοποίησης Protocol Buffers, η οποία επιτρέπει την προσθήκη και την αφαίρεση πεδίων.

Μορφές αρχείων σε μεγάλα δεδομένα: ένα σύντομο εκπαιδευτικό πρόγραμμα
Το ORC αποθηκεύει συλλογές συμβολοσειρών σε ένα μόνο αρχείο και μέσα στη συλλογή, τα δεδομένα συμβολοσειρών αποθηκεύονται σε μορφή στήλης.

Ένα αρχείο ORC αποθηκεύει ομάδες γραμμών που ονομάζονται ρίγες και υποστηρικτικές πληροφορίες στο υποσέλιδο του αρχείου. Το Postscript στο τέλος του αρχείου περιέχει παραμέτρους συμπίεσης και το μέγεθος του συμπιεσμένου υποσέλιδου.

Το προεπιλεγμένο μέγεθος λωρίδας είναι 250 MB. Λόγω τόσο μεγάλων λωρίδων, η ανάγνωση από HDFS εκτελείται πιο αποτελεσματικά: σε μεγάλα συνεχόμενα μπλοκ.

Το υποσέλιδο αρχείου καταγράφει τη λίστα των λωρίδων στο αρχείο, τον αριθμό των γραμμών ανά λωρίδα και τον τύπο δεδομένων κάθε στήλης. Η προκύπτουσα τιμή του count, min, max και sum για κάθε στήλη γράφεται επίσης εκεί.

Το υποσέλιδο της ταινίας περιέχει έναν κατάλογο με τοποθεσίες ροής.

Τα δεδομένα σειρών χρησιμοποιούνται κατά τη σάρωση πινάκων.

Τα δεδομένα ευρετηρίου περιλαμβάνουν τις ελάχιστες και μέγιστες τιμές για κάθε στήλη και τη θέση των σειρών σε κάθε στήλη. Τα ευρετήρια ORC χρησιμοποιούνται μόνο για την επιλογή λωρίδων και ομάδων σειρών, όχι για την απάντηση ερωτημάτων.

Σύγκριση διαφορετικών μορφών αρχείων

Avro σε σύγκριση με Παρκέ

  1. Το Avro είναι μια μορφή αποθήκευσης σειρών, ενώ το Parquet αποθηκεύει δεδομένα σε στήλες.
  2. Το παρκέ είναι πιο κατάλληλο για αναλυτικά ερωτήματα, πράγμα που σημαίνει ότι οι λειτουργίες ανάγνωσης και τα δεδομένα ερωτημάτων είναι πολύ πιο αποτελεσματικά από την εγγραφή.
  3. Οι λειτουργίες εγγραφής στο Avro εκτελούνται πιο αποτελεσματικά από ότι στο Parquet.
  4. Η Avro ασχολείται με την εξέλιξη του κυκλώματος πιο ώριμα. Το παρκέ υποστηρίζει μόνο προσθήκη σχήματος, ενώ το Avro υποστηρίζει την πολυλειτουργική εξέλιξη, δηλαδή την προσθήκη ή την αλλαγή στηλών.
  5. Το παρκέ είναι ιδανικό για την αναζήτηση ενός υποσυνόλου στηλών σε έναν πίνακα πολλών στηλών. Το Avro είναι κατάλληλο για λειτουργίες ETL όπου ρωτάμε όλες τις στήλες.

ORC εναντίον παρκέ

  1. Το παρκέ αποθηκεύει τα ένθετα δεδομένα καλύτερα.
  2. Το ORC είναι πιο κατάλληλο για την καταγγελία pushdown.
  3. Το ORC υποστηρίζει ιδιότητες ACID.
  4. Το ORC συμπιέζει καλύτερα τα δεδομένα.

Τι άλλο να διαβάσετε για το θέμα:

  1. Ανάλυση μεγάλων δεδομένων στο cloud: πώς μια εταιρεία μπορεί να γίνει προσανατολισμένη στα δεδομένα.
  2. Ένας ταπεινός οδηγός για σχήματα βάσεων δεδομένων.
  3. Το τηλεγραφικό μας κανάλι για τον ψηφιακό μετασχηματισμό.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο