diff --git a/report.adoc b/report.adoc index 2e65c6d..13d2138 100644 --- a/report.adoc +++ b/report.adoc @@ -4,7 +4,7 @@ |=== | Oulis Evangelos | -| Drosos Katsimpras | +| Katsimpras Drosos | | Oulis Nikolaos | | Kampoli Agathi | @@ -29,51 +29,121 @@ === Utilities Το framework αποτελείται από ένα προγραμματισμένο μοντέλο *Map Reduce* το οποίο αποτελείται -από ένα κατανεμημένο σύστημα αποθήκευσης (storage) για την επεξεργασία δεδομένων μεγάλης κλίμακας -(Big Data Processing). +από ένα κατανεμημένο σύστημα αποθήκευσης (storage) και βασικές μεθόδους για την επεξεργασία δεδομένων +μεγάλης κλίμακας (Big Data Processing) μέσω του προγραμματισμένου μοντέλου. == Why? Το hadoop έχει αναπτυχθεί για μεγάλα υπολογιστικά συστήματα (clusters) τα οποία αποτελούνται -από 2, 3 ακόμα και εκατοντάδες υπολογιστικές μηχανές. Το υλικό αυτών των μηχανών (commodity -hardware) να αποτελείται από υλικό εξειδικευμένο για παράλληλο υπολογισμό το αποίο από τη φύση -του είναι φτηνό. Ακόμα, έχει αναπτυχθεί και χρησιμοποιείται και σε πλέγματα υπολογιστών -όπου τα μηχανήματα διαθέτουν πιο αποδοτικό hardware. +από 2, 3 ακόμα και εκατοντάδες υπολογιστικές μηχανές. Το hadoop εξ' αρχής σχεδιάστηκε έτσι +ώστε να συνδυάζει το υλικό τέτοιων υπολογιστικών μηχανών (commodity hardware clusters), το οποίο μπορεί +να είναι απλό, με σκοπό την δυμιουργία παράλληλης επεξεργασίας και με μικρό κόστος στην αγορά του υλικού. == How? Όλα τα κομμάτια του hadoop έχουν αναπτυχθεί με σκοπό την διαχείριση των σφαλμάτων του Hardware με -μηχανισμούς που ορίζει το Framework. +μηχανισμούς που ορίζει το Framework αυτόματα. == Hadoop Description -Ο πυρήνας του hadoop αποτελείται από ένα μέρος που αφορά την αποθήκη των δεδομένων. Είναι γνωστή ως -*Hadoop Distributed File System (HDFS)*, και το μέρος την υπολογιστικής επεηεργασίας δεδομένων που είναι -γνωστό ως *MapReduce programming Model*. +Ο πυρήνας του hadoop αποτελείται από ένα μέρος που αφορά την αποθήκη των δεδομένων. Αυτή είναι γνωστή ως +*Hadoop Distributed File System (HDFS)*, και το μέρος την υπολογιστικής επεξεργασίας δεδομένων και η διαμοίραση +της εργασίας σε όλους τους κόμβους της τοπολογίας που είναι γνωστό ως *MapReduce programming Model*. === Hadoop Destributed File System (HDFS) -Το Hadoop Desctributed File System αποτελείται από έναν κατανεμημένο χώρο αποθήκευσης ο οποίος -μοιράζεται από τις υπολογιστικές μηχανές ενός πλέγματος όπου το Hadoop διαχειρίζεται. Η κύρια +Το HDFS αποτελείται από έναν κατανεμημένο χώρο αποθήκευσης ο οποίος +διαμοιράζεται από τις υπολογιστικές μηχανές ενός πλέγματος όπου το Hadoop διαχειρίζεται. Η κύρια λειτουργία του είναι η κατάτμηση των αρχείων σε μεγάλα τμήματα (blocks) και η κατανομή αυτών σε όλες τις μηχανές του πλέγματος (cluster). -Έπειτα αναλαμβάνει την διαμοίραση ενός τμήματος του +=== Hadoop YARN +Έπειτα ο YARN αναλαμβάνει την διαμοίραση ενός τμήματος του κώδικα ο οποίος είναι χρήσιμος για κάθε μηχανή, όπου τους δίνει τη δυνατότητα εφαρμογής ενός συνόλου εντολών για την παράλληλη επεξεργασία των δεδομένων αντίστοιχα σε κάθε μηχανή. Αυτό δίνει τη δυνατότητα στην κάθε μηχανή του πλέγματος να διαχειρίζεται το δικό της μέρος των δεδομένων σαν να είναι στο τοπικό της σύστημα. +Ο YARN ακόμα αναλαμβάνει την έναρξη της διεργασίας που αφορά την εφαρμογή σε επίπεδο κόμβου. + +=== Hadoop MapReduce +Το προγραμματισμένο μοντέλο MapReduce αναλαμβάνει την συλλογή των αποτελεσμάτων κάθε κόμβου της +τοπολογίας και την δημιουργία της εξόδου. Η έξοδος κάθε κόμβου δρομολογείται σε ξεχωριστό αρχείο. + +=== Απόδοση Hadoop Αυτό επιτυγχάνει μεγάλες ταχύτητες στην επεξεργασία δεδομένων μεγάλης κλίμακας, και ακόμα ταχύτερη μπορεί να γίνει όταν το δίκτυο το οποίο διέπει αυτό το πλέγμα προσφέρει μεγάλες ταχύτητες επικοινωνίες μεταξύ των υπολογιστικών μηχανών. -=== Hadoop Modules +=== Hadoop Modules (Συνοπτικά) * Hadoop Common – contains libraries and utilities needed by other Hadoop modules, * Hadoop Distributed File System (HDFS) – a distributed file-system that stores data on commodity machines, providing very high aggregate bandwidth across the cluster, - +oyROEaFv0v * Hadoop YARN – (introduced in 2012) a platform responsible for managing computing resources in clusters and using them for scheduling users' applications, * Hadoop MapReduce – an implementation of the MapReduce programming model for large-scale data processing. + +== Εγκατάσταση και Εκτέλεση μίας Clustered Hadoop Υπηρεσίας + +=== Έλεγχος του Cluster μας +Για να πραγματοποιήσουμε έλεγχο του cluster μας θα εκτελέσμουμε την εντολή: + +[source, bash] +---- +docker node ls +---- + +έτσι ώστε να πάρουμε σε μία λίστα την κατάσταση και την τοπολογία του cluster-kubernete (leader) καθώς +και την κατάσταση κάθε node (slave) του cluster. + +[source, txt] +---- +ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION +gcnl3yrd9f8m3eiihdvssw02b * snf-12294 Ready Active Leader 19.03.8 +kj7ymjntacu719r3wz10q71wy snf-12296 Ready Active 18.09.7 +t7zdlnw882xxv1unel5mt2zij snf-12399 Ready Active 19.03.11 +hublulhmmp42s9vhdp3pquyx2 snf-12418 Ready Active 19.03.8 +---- + + +=== Απαραίτητα Πακέτα Που θα Χρειαστούν + +==== Docker +Το Docker είναι ένα σύνολο Platform-as-a-Service (PaaS) προϊόντων που χρησιμοποιεί εικονικοποίηση σε επίπεδο +λειτουργικού συστήματος (OS-level virtualization) για την μεταφορά λογισμικού σε πακέτα τα οποία καλούνται +Containers. Τα Containers είναι απομονομένα το ένα από το άλλο και φέρουν το καθένα τα δικά του λογισμικά, +βιβλιοθήκες και αρχεία παραμετροποίησης (configuration files). + +Τα Containers μπορούν να επικοινωνήσουν μεταξύ διαμέσου καλά ορισμένων καναλιών. Όλα τα Containers +τρέχουν από ένα μόνο πυρήνα λειτουργικού συστήματος (Operating System kernel) και ως εκ' τούτου χρήζουν +λιγότερες απαιτήσεις στους πόρους ενός υπολογιστικού συστήματος σε σχέση με τα Virtual Machines. + +Το λογισμικό που φυλοξενεί (hosts) πολλά Containers καλείται Docker Engine. + + +==== Docker Compose +Το Docker Compose είναι ένα εργαλείο το οποίο ορίζει/παραμετροποιεί και τρέχει ένα multi-container Docker application. +Για την χρήση αυτού του εργαλείου είναι υποχρεωτική η χρήση αρχείου YAML για την παραμετροποίηση μιας υπηρεσίας +μιας εφαρμογής. Έπειτα, με μία απλή εντολή μπορεί κανείς να δημιουργήσει και να εκκινήσει όλες της υπηρεσίες +που έχουν περιγραφεί σε αυτό το YAML αρχείο. + +==== GitHub +Ακόμα θα πρέπει να έχουμε πρόσβαση στο GitHub. Αυτό προειποθέτει να έχουμε ένα Git client. + + +=== Setting Up a Hadoop Cluster Using Docker +Για την εγκατάσταση του Hadoop σε ένα Docker, πρώτα απ' όλα χρειαζόμαστε μία εικόνα του Hadoop +(Hadoop Docker Image). Για την παραγωγή της εικόνας (Image), θα χρησιμοποιήσουμε έναν έτοιμο +πρότζεκτ το οποίο δίνεται από την βιβλιογραφεία ως link:++https://github.com/big-data-europe/docker-hadoop++[Big Data Europe] +και είναι ανοιχτό στο GitHub. + +[source, bash] +---- +git clone git@github.com:big-data-europe/docker-hadoop.git +---- + + + == References * [1] link:++https://en.wikipedia.org/wiki/Apache_Hadoop++[Hadoop General Description] +* [2] link:++https://clubhouse.io/developer-how-to/how-to-set-up-a-hadoop-cluster-in-docker/++[Setting Up Hadoop on a Cluster] diff --git a/report.html b/report.html index 9080b68..59875f5 100644 --- a/report.html +++ b/report.html @@ -457,7 +457,7 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

<cs151051@uniwa.gr>

-

Drosos Katsimpras

+

Katsimpras Drosos

<cs131110@uniwa.gr>

@@ -487,8 +487,8 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

Utilities

Το framework αποτελείται από ένα προγραμματισμένο μοντέλο Map Reduce το οποίο αποτελείται -από ένα κατανεμημένο σύστημα αποθήκευσης (storage) για την επεξεργασία δεδομένων μεγάλης κλίμακας -(Big Data Processing).

+από ένα κατανεμημένο σύστημα αποθήκευσης (storage) και βασικές μεθόδους για την επεξεργασία δεδομένων +μεγάλης κλίμακας (Big Data Processing) μέσω του προγραμματισμένου μοντέλου.

@@ -498,10 +498,9 @@ body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-b

Το hadoop έχει αναπτυχθεί για μεγάλα υπολογιστικά συστήματα (clusters) τα οποία αποτελούνται -από 2, 3 ακόμα και εκατοντάδες υπολογιστικές μηχανές. Το υλικό αυτών των μηχανών (commodity -hardware) να αποτελείται από υλικό εξειδικευμένο για παράλληλο υπολογισμό το αποίο από τη φύση -του είναι φτηνό. Ακόμα, έχει αναπτυχθεί και χρησιμοποιείται και σε πλέγματα υπολογιστών -όπου τα μηχανήματα διαθέτουν πιο αποδοτικό hardware.

+από 2, 3 ακόμα και εκατοντάδες υπολογιστικές μηχανές. Το hadoop εξ' αρχής σχεδιάστηκε έτσι +ώστε να συνδυάζει το υλικό τέτοιων υπολογιστικών μηχανών (commodity hardware clusters), το οποίο μπορεί +να είναι απλό, με σκοπό την δυμιουργία παράλληλης επεξεργασίας και με μικρό κόστος στην αγορά του υλικού.

@@ -510,7 +509,7 @@ hardware) να αποτελείται από υλικό εξειδικευμέν

Όλα τα κομμάτια του hadoop έχουν αναπτυχθεί με σκοπό την διαχείριση των σφαλμάτων του Hardware με -μηχανισμούς που ορίζει το Framework.

+μηχανισμούς που ορίζει το Framework αυτόματα.

@@ -518,40 +517,57 @@ hardware) να αποτελείται από υλικό εξειδικευμέν

Hadoop Description

-

Ο πυρήνας του hadoop αποτελείται από ένα μέρος που αφορά την αποθήκη των δεδομένων. Είναι γνωστή ως -Hadoop Distributed File System (HDFS), και το μέρος την υπολογιστικής επεηεργασίας δεδομένων που είναι -γνωστό ως MapReduce programming Model.

+

Ο πυρήνας του hadoop αποτελείται από ένα μέρος που αφορά την αποθήκη των δεδομένων. Αυτή είναι γνωστή ως +Hadoop Distributed File System (HDFS), και το μέρος την υπολογιστικής επεξεργασίας δεδομένων και η διαμοίραση +της εργασίας σε όλους τους κόμβους της τοπολογίας που είναι γνωστό ως MapReduce programming Model.

Hadoop Destributed File System (HDFS)

-

Το Hadoop Desctributed File System αποτελείται από έναν κατανεμημένο χώρο αποθήκευσης ο οποίος -μοιράζεται από τις υπολογιστικές μηχανές ενός πλέγματος όπου το Hadoop διαχειρίζεται. Η κύρια +

Το HDFS αποτελείται από έναν κατανεμημένο χώρο αποθήκευσης ο οποίος +διαμοιράζεται από τις υπολογιστικές μηχανές ενός πλέγματος όπου το Hadoop διαχειρίζεται. Η κύρια λειτουργία του είναι η κατάτμηση των αρχείων σε μεγάλα τμήματα (blocks) και η κατανομή αυτών σε όλες τις μηχανές του πλέγματος (cluster).

+
+
+

Hadoop YARN

-

Έπειτα αναλαμβάνει την διαμοίραση ενός τμήματος του +

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

+

Ο YARN ακόμα αναλαμβάνει την έναρξη της διεργασίας που αφορά την εφαρμογή σε επίπεδο κόμβου.

+
+
+
+

Hadoop MapReduce

+
+

Το προγραμματισμένο μοντέλο MapReduce αναλαμβάνει την συλλογή των αποτελεσμάτων κάθε κόμβου της +τοπολογίας και την δημιουργία της εξόδου. Η έξοδος κάθε κόμβου δρομολογείται σε ξεχωριστό αρχείο.

+
+
+
+

Απόδοση Hadoop

+

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

-

Hadoop Modules

+

Hadoop Modules (Συνοπτικά)

  • Hadoop Common – contains libraries and utilities needed by other Hadoop modules,

  • -

    Hadoop Distributed File System (HDFS) – a distributed file-system that stores data on commodity machines, providing very high aggregate bandwidth across the cluster,

    +

    Hadoop Distributed File System (HDFS) – a distributed file-system that stores data on commodity machines, providing very high aggregate bandwidth across the cluster, +oyROEaFv0v

  • Hadoop YARN – (introduced in 2012) a platform responsible for managing computing resources in clusters and using them for scheduling users' applications,

    @@ -565,6 +581,84 @@ hardware) να αποτελείται από υλικό εξειδικευμέν
+

Εγκατάσταση και Εκτέλεση μίας Clustered Hadoop Υπηρεσίας

+
+
+

Έλεγχος του Cluster μας

+
+

Για να πραγματοποιήσουμε έλεγχο του cluster μας θα εκτελέσμουμε την εντολή:

+
+
+
+
docker node ls
+
+
+
+

έτσι ώστε να πάρουμε σε μία λίστα την κατάσταση και την τοπολογία του cluster-kubernete (leader) καθώς +και την κατάσταση κάθε node (slave) του cluster.

+
+
+
+
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
+gcnl3yrd9f8m3eiihdvssw02b *   snf-12294           Ready               Active              Leader              19.03.8
+kj7ymjntacu719r3wz10q71wy     snf-12296           Ready               Active                                  18.09.7
+t7zdlnw882xxv1unel5mt2zij     snf-12399           Ready               Active                                  19.03.11
+hublulhmmp42s9vhdp3pquyx2     snf-12418           Ready               Active                                  19.03.8
+
+
+
+
+

Απαραίτητα Πακέτα Που θα Χρειαστούν

+
+

Docker

+
+

Το Docker είναι ένα σύνολο Platform-as-a-Service (PaaS) προϊόντων που χρησιμοποιεί εικονικοποίηση σε επίπεδο +λειτουργικού συστήματος (OS-level virtualization) για την μεταφορά λογισμικού σε πακέτα τα οποία καλούνται +Containers. Τα Containers είναι απομονομένα το ένα από το άλλο και φέρουν το καθένα τα δικά του λογισμικά, +βιβλιοθήκες και αρχεία παραμετροποίησης (configuration files).

+
+
+

Τα Containers μπορούν να επικοινωνήσουν μεταξύ διαμέσου καλά ορισμένων καναλιών. Όλα τα Containers +τρέχουν από ένα μόνο πυρήνα λειτουργικού συστήματος (Operating System kernel) και ως εκ' τούτου χρήζουν +λιγότερες απαιτήσεις στους πόρους ενός υπολογιστικού συστήματος σε σχέση με τα Virtual Machines.

+
+
+

Το λογισμικό που φυλοξενεί (hosts) πολλά Containers καλείται Docker Engine.

+
+
+
+

Docker Compose

+
+

Το Docker Compose είναι ένα εργαλείο το οποίο ορίζει/παραμετροποιεί και τρέχει ένα multi-container Docker application. +Για την χρήση αυτού του εργαλείου είναι υποχρεωτική η χρήση αρχείου YAML για την παραμετροποίηση μιας υπηρεσίας +μιας εφαρμογής. Έπειτα, με μία απλή εντολή μπορεί κανείς να δημιουργήσει και να εκκινήσει όλες της υπηρεσίες +που έχουν περιγραφεί σε αυτό το YAML αρχείο.

+
+
+
+

GitHub

+
+

Ακόμα θα πρέπει να έχουμε πρόσβαση στο GitHub. Αυτό προειποθέτει να έχουμε ένα Git client.

+
+
+
+
+

Setting Up a Hadoop Cluster Using Docker

+
+

Για την εγκατάσταση του Hadoop σε ένα Docker, πρώτα απ' όλα χρειαζόμαστε μία εικόνα του Hadoop +(Hadoop Docker Image). Για την παραγωγή της εικόνας (Image), θα χρησιμοποιήσουμε έναν έτοιμο +πρότζεκτ το οποίο δίνεται από την βιβλιογραφεία ως Big Data Europe +και είναι ανοιχτό στο GitHub.

+
+
+
+
git clone git@github.com:big-data-europe/docker-hadoop.git
+
+
+
+
+
+

References

@@ -572,6 +666,9 @@ hardware) να αποτελείται από υλικό εξειδικευμέν
  • [1] Hadoop General Description

  • +
  • +

    [2] Setting Up Hadoop on a Cluster

    +
  • @@ -579,7 +676,7 @@ hardware) να αποτελείται από υλικό εξειδικευμέν