= Laboratory Report - Cloud Computing & Services

*_Authors_*
|===

| Oulis Evangelos | <cs151051@uniwa.gr>
| Drosos Katsimpras | <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 ακόμα και εκατοντάδες υπολογιστικές μηχανές. Το υλικό αυτών των μηχανών (commodity
hardware) να αποτελείται από υλικό εξειδικευμένο για παράλληλο υπολογισμό το αποίο από τη φύση
του είναι φτηνό. Ακόμα, έχει αναπτυχθεί και χρησιμοποιείται και σε πλέγματα υπολογιστών
όπου τα μηχανήματα διαθέτουν πιο αποδοτικό hardware.

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

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

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

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

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


=== 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 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.

== References

* [1] link:++https://en.wikipedia.org/wiki/Apache_Hadoop++[Hadoop General Description]
