You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
149 lines
10 KiB
149 lines
10 KiB
= Laboratory Report - Cloud Computing & Services
|
|
|
|
*_Authors_*
|
|
|===
|
|
|
|
| Oulis Evangelos | <cs151051@uniwa.gr>
|
|
| Katsimpras Drosos | <cs131110@uniwa.gr>
|
|
| Oulis Nikolaos | <cs161079@uniwa.gr>
|
|
| Kampoli Agathi | <cs131031@uniwa.gr>
|
|
|
|
|===
|
|
|
|
//Metadata:
|
|
:description: Cloud Computing and Services, Hadoop, Kubernetes
|
|
:keywords: Cloud Computing Service Hadoop Kubernetes
|
|
:toc: right
|
|
:toc-title: Content Array
|
|
:toc-levels: 4
|
|
:source-hilighter: highlight
|
|
:icons: font
|
|
|
|
== Hadoop
|
|
Το Hadoop αποτελεί μία συλλογή από open-source βοηθητικά προγράμματα το αποία προσφέρουν
|
|
τα απαραίτητα εφόδια για την επίλυση προβλημάτων (υπολογιστικών προβλημάτων) τα οποία
|
|
διαθέτουν μεγάλο όγκο δεδομένων και υπολογισμών σε ένα πλέγμα υπολογιστών. Η κατάτμηση
|
|
των δεδομένων και η συνεργασία πολλών υπολογιστικών συστημάτων κάνει αυτό το framework
|
|
πολύ αποδοτικό ειδικά σε προβλήματα όπου τα δεδομένα είναι σε αυξημένη κλίμακα και οι
|
|
υπολογσιστικές πράξεις για μία ορισμένη επεξεργασία πολύπλοκες.
|
|
|
|
=== Utilities
|
|
Το framework αποτελείται από ένα προγραμματισμένο μοντέλο *Map Reduce* το οποίο αποτελείται
|
|
από ένα κατανεμημένο σύστημα αποθήκευσης (storage) και βασικές μεθόδους για την επεξεργασία δεδομένων
|
|
μεγάλης κλίμακας (Big Data Processing) μέσω του προγραμματισμένου μοντέλου.
|
|
|
|
== Why?
|
|
Το hadoop έχει αναπτυχθεί για μεγάλα υπολογιστικά συστήματα (clusters) τα οποία αποτελούνται
|
|
από 2, 3 ακόμα και εκατοντάδες υπολογιστικές μηχανές. Το hadoop εξ' αρχής σχεδιάστηκε έτσι
|
|
ώστε να συνδυάζει το υλικό τέτοιων υπολογιστικών μηχανών (commodity hardware clusters), το οποίο μπορεί
|
|
να είναι απλό, με σκοπό την δυμιουργία παράλληλης επεξεργασίας και με μικρό κόστος στην αγορά του υλικού.
|
|
|
|
== How?
|
|
Όλα τα κομμάτια του hadoop έχουν αναπτυχθεί με σκοπό την διαχείριση των σφαλμάτων του Hardware με
|
|
μηχανισμούς που ορίζει το Framework αυτόματα.
|
|
|
|
== Hadoop Description
|
|
Ο πυρήνας του hadoop αποτελείται από ένα μέρος που αφορά την αποθήκη των δεδομένων. Αυτή είναι γνωστή ως
|
|
*Hadoop Distributed File System (HDFS)*, και το μέρος την υπολογιστικής επεξεργασίας δεδομένων και η διαμοίραση
|
|
της εργασίας σε όλους τους κόμβους της τοπολογίας που είναι γνωστό ως *MapReduce programming Model*.
|
|
|
|
=== Hadoop Destributed File System (HDFS)
|
|
Το HDFS αποτελείται από έναν κατανεμημένο χώρο αποθήκευσης ο οποίος
|
|
διαμοιράζεται από τις υπολογιστικές μηχανές ενός πλέγματος όπου το Hadoop διαχειρίζεται. Η κύρια
|
|
λειτουργία του είναι η κατάτμηση των αρχείων σε μεγάλα τμήματα (blocks) και η κατανομή αυτών
|
|
σε όλες τις μηχανές του πλέγματος (cluster).
|
|
|
|
=== Hadoop YARN
|
|
Έπειτα ο YARN αναλαμβάνει την διαμοίραση ενός τμήματος του
|
|
κώδικα ο οποίος είναι χρήσιμος για κάθε μηχανή, όπου τους δίνει τη δυνατότητα εφαρμογής ενός
|
|
συνόλου εντολών για την παράλληλη επεξεργασία των δεδομένων αντίστοιχα σε κάθε μηχανή. Αυτό δίνει
|
|
τη δυνατότητα στην κάθε μηχανή του πλέγματος να διαχειρίζεται το δικό της μέρος των δεδομένων σαν
|
|
να είναι στο τοπικό της σύστημα.
|
|
|
|
Ο YARN ακόμα αναλαμβάνει την έναρξη της διεργασίας που αφορά την εφαρμογή σε επίπεδο κόμβου.
|
|
|
|
=== Hadoop MapReduce
|
|
Το προγραμματισμένο μοντέλο MapReduce αναλαμβάνει την συλλογή των αποτελεσμάτων κάθε κόμβου της
|
|
τοπολογίας και την δημιουργία της εξόδου. Η έξοδος κάθε κόμβου δρομολογείται σε ξεχωριστό αρχείο.
|
|
|
|
=== Απόδοση Hadoop
|
|
Αυτό επιτυγχάνει μεγάλες ταχύτητες στην επεξεργασία δεδομένων μεγάλης κλίμακας, και ακόμα ταχύτερη μπορεί
|
|
να γίνει όταν το δίκτυο το οποίο διέπει αυτό το πλέγμα προσφέρει μεγάλες ταχύτητες επικοινωνίες μεταξύ
|
|
των υπολογιστικών μηχανών.
|
|
|
|
|
|
=== 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]
|
|
|