Ροή Hadoop: Γράφοντας ένα πρόγραμμα Hadoop MapReduce στο Python



Αυτή η ανάρτηση ιστολογίου στο Hadoop Streaming είναι ένας βήμα προς βήμα οδηγός για να μάθετε να γράφετε ένα πρόγραμμα Hadoop MapReduce στο Python για την επεξεργασία τεράστιων ποσοτήτων Big Data.

Η ποσότητα των ψηφιακών δεδομένων που δημιουργούνται καθημερινά αυξάνεται εκθετικά με την εμφάνιση των Ψηφιακών Μέσων, του Διαδικτύου των πραγμάτων μεταξύ άλλων εξελίξεων. Αυτό το σενάριο έχει δημιουργήσει προκλήσεις στη δημιουργία εργαλείων και τεχνολογιών επόμενης γενιάς για την αποθήκευση και τον χειρισμό αυτών των δεδομένων. Εδώ μπαίνει το Hadoop Streaming! Παρακάτω δίνεται ένα γράφημα που απεικονίζει την αύξηση των δεδομένων που παράγονται ετησίως στον κόσμο από το 2013. Η IDC εκτιμά ότι η ποσότητα των δεδομένων που δημιουργούνται ετησίως θα φτάσει τα 180 Zettabytes το 2025!

data-by-2025-hadoop-streaming





Πηγή: IDC

Η IBM δηλώνει ότι, κάθε μέρα, δημιουργούνται σχεδόν 2,5 quintillion byte δεδομένων, με το 90% των παγκόσμιων δεδομένων να δημιουργούνται τα τελευταία δύο χρόνια! Είναι μια δύσκολη εργασία για την αποθήκευση ενός τόσο μεγάλου όγκου δεδομένων. Η Hadoop μπορεί να χειριστεί μεγάλους όγκους δομημένων και μη δομημένων δεδομένων πιο αποτελεσματικά από την παραδοσιακή επιχείρηση Data Warehouse. Αποθηκεύει αυτά τα τεράστια σύνολα δεδομένων σε κατανεμημένες ομάδες υπολογιστών. Η Hadoop Streaming χρησιμοποιεί το πλαίσιο MapReduce που μπορεί να χρησιμοποιηθεί για τη σύνταξη εφαρμογών για την επεξεργασία τεράστιων ποσοτήτων δεδομένων.



Δεδομένου ότι το πλαίσιο MapReduce βασίζεται στην Java, ίσως αναρωτιέστε πώς ένας προγραμματιστής μπορεί να εργαστεί σε αυτό εάν δεν έχει εμπειρία στην Java. Λοιπόν, οι προγραμματιστές μπορούν να γράψουν την εφαρμογή mapper / Reducer χρησιμοποιώντας την προτιμώμενη γλώσσα τους και χωρίς να έχουν πολλή γνώση της Java Ροή Hadoop αντί να στραφούμε σε νέα εργαλεία ή τεχνολογίες όπως το Pig and Hive.

Τι είναι η ροή Hadoop;

Το Hadoop Streaming είναι ένα βοηθητικό πρόγραμμα που συνοδεύει τη διανομή Hadoop. Μπορεί να χρησιμοποιηθεί για την εκτέλεση προγραμμάτων για μεγάλη ανάλυση δεδομένων. Η ροή Hadoop μπορεί να πραγματοποιηθεί χρησιμοποιώντας γλώσσες όπως Python, Java, PHP, Scala, Perl, UNIX και πολλά άλλα. Το βοηθητικό πρόγραμμα μας επιτρέπει να δημιουργήσουμε και να εκτελέσουμε εργασίες Map / Reduce με οποιοδήποτε εκτελέσιμο ή σενάριο ως mapper ή / και μειωτή. Για παράδειγμα:

$ HADOOP_HOME / bin / hadoop βάζο $ HADOOP_HOME / hadoop-streaming.jar



-εισάγετε myInputDirs

- έξοδος myOutputDir

- φάκελος / κάδος / γάτα

- μειωτής / κάδος / wc

Περιγραφή παραμέτρων:

Κωδικός Python MapReduce:

mapper.py #! / usr / bin / python import sys #Word Count Παράδειγμα # η είσοδος προέρχεται από την τυπική είσοδο STDIN για γραμμή στο sys.stdin: line = line.strip () # αφαιρέστε τις αρχικές και τις τελικές λέξεις κενών λέξεων = line.split # # διαχωρίστε τη γραμμή σε λέξεις και επιστρέφει ως λίστα λέξεων σε λέξεις: # γράψτε τα αποτελέσματα σε τυπική έξοδο Εκτύπωση STDOUT '% s% s'% (word, 1) #Emit the word

reducer.py

#! / usr / bin / python sys εισαγωγής από τον τελεστή εισαγωγής itemgetter # χρησιμοποιώντας ένα λεξικό για να χαρτογραφήσουν τις λέξεις στις μετρήσεις τους () word, count = line.split ('', 1) try: count = int (count) εκτός από ValueError: συνέχεια εάν current_word == word: current_count + = count other: if current_word: print '% s% s'% (current_word, current_count) current_count = count current_word = word if current_word == word: εκτύπωση '% s% s'% (current_word, current_count)

Τρέξιμο:

  1. Δημιουργήστε ένα αρχείο με το ακόλουθο περιεχόμενο και ονομάστε το word.txt.

Γάτα ποντίκι λιοντάρι λιοντάρι Τίγρη λιοντάρι λιοντάρι ελέφαντα

  1. Αντιγράψτε τα σενάρια mapper.py και reducer.py στον ίδιο φάκελο όπου υπάρχει το παραπάνω αρχείο.

  1. Ανοίξτε το τερματικό και εντοπίστε τον κατάλογο του αρχείου. Εντολή: ls: για να εμφανίσετε όλα τα αρχεία στον κατάλογο cd: για να αλλάξετε τον κατάλογο / φάκελο

  1. Δείτε το περιεχόμενο του αρχείου.
    Εντολή: γάτα όνομα αρχείου

> περιεχόμενο του mapper.py

εντολή: cat mapper.py

> Περιεχόμενο του reducer.py

εντολή: γάτα reducer.py

Μπορούμε να τρέξουμε mapper και μειωτή σε τοπικά αρχεία (π.χ.: word.txt). Για να εκτελέσετε το Χάρτη και να μειώσετε το Hadoop Distributed File System (HDFS), χρειαζόμαστε το Βάζο ροής Hadoop. Έτσι, προτού εκτελέσουμε τα σενάρια σε HDFS, ας τα τρέξουμε τοπικά για να διασφαλίσουμε ότι λειτουργούν καλά.

> Εκτελέστε το χαρτογράφο

εντολή: cat word.txt | python mapper.py

> Εκτελέστε reducer.py

εντολή: cat word.txt | python mapper.py | είδος -k1,1 | python reducer.py

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

Τρέχοντας το Κωδικός Python στο Hadoop

Πριν εκτελέσουμε την εργασία MapReduce στο Hadoop, αντιγράψτε τοπικά δεδομένα (word.txt) στο HDFS

> παράδειγμα: hdfs dfs -put source_directory hadoop_destination_directory

εντολή: hdfs dfs -put /home/edureka/MapReduce/word.txt / χρήστης / edureka

τι είναι τα μεγάλα δεδομένα hadoop

Αντιγράψτε τη διαδρομή του αρχείου βάζου

Η διαδρομή του Hadoop Streaming jar με βάση την έκδοση του βάζου είναι:

/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar

Εντοπίστε λοιπόν το βάζο ροής Hadoop στο τερματικό σας και αντιγράψτε τη διαδρομή.

εντολή:

ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

Εκτελέστε την εργασία MapReduce

εντολή:

hadoop βάζο /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file /home/edureka/mapper.py -mapper mapper.py -file / home / edureka / reducer.py -reducer reducer.py -input / user / edureka / word -output / user / edureka / Wordcount

Το Hadoop παρέχει μια βασική διεπαφή ιστού για στατιστικά στοιχεία και πληροφορίες. Όταν εκτελείται το σύμπλεγμα Hadoop, ανοίξτε http: // localhost: 50070 στο πρόγραμμα περιήγησης. Εδώ είναι το στιγμιότυπο οθόνης της διεπαφής ιστού Hadoop.

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

Μπορούμε να δούμε την έξοδο στο τερματικό χρησιμοποιώντας αυτήν την εντολή

εντολή: hadoop fs -cat / user / edureka / Wordcount / μέρος-00000

Τώρα έχετε μάθει πώς να εκτελείτε ένα πρόγραμμα MapReduce γραμμένο στο Python χρησιμοποιώντας το Hadoop Streaming!

Η Edureka έχει ένα ζωντανό και εκπαιδευτικό μάθημα στο Big Data & Hadoop, το οποίο δημιουργήθηκε από επαγγελματίες του κλάδου.

Έχετε μια ερώτηση για εμάς; Παρακαλώ αναφέρετέ το στην ενότητα σχολίων και θα επικοινωνήσουμε μαζί σας.