[#img-0]
image::0.png[0,300,200]

= «Υπολογιστική Νέφους και Υπηρεσίες»

== Docker Hadoop



===== Θεόδωρος Πουρνάρας 141128
===== Αίας Παναγιώτης Δρακόπουλος 141020
===== Αλέξανδρος Βλαχάκης 131127

Στην εργασία ασχοληθήκαμε με docker hadoop.


Ξεκινήσαμε κάνοντας install το docker στο pc μας.
Συνεχίσαμε κάνοντας clone το hadoop απο το git με το link που μας δόθηκε

https://github.com/big-data-europe/docker-hadoop


Εφόσον εγκαταστάθηκε το hadoop εκτελόντας "docker ps" βλέπουμε τα containers που στήθηκαν.
Εκτελούμε docker-compose up για να τρέχουμε τα containers.
[#img-1]
image::1.png[1,1280,1024]

[#img-2]
image::2.png[2,1280,1024]
Για να βρούμε την ip address ενός container τρέχουμε :

"docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id”

έχοντας τις ip και τις πόρτες από τα containers μπορούμε να τα δούμε στο browser.
[#img-3]
image::3.png[3,1280,1024]
Με την εντολή "docker volume ls" μπορούμε να δούμε τα volumes που έχουμε δημιουργήσει.
Με "docker ps" εμφανίζονται τα docker images που έχουμε φτιάξει,κάνοντας inspect το κάθε
volume παρατηρούμε ότι είναι mount στο αντίστοιχο image.
Για να κάνουμε remove ένα volume  "docker volume rm volume-name".
[#img-4]
image::4.png[4,1280,1024]
Φτιάξαμε backup images για τα handoop containers.
362backup είναι το backup image για το container με το id 362… κλπ.
Αυτό δεν είναι αρκετό για να καλύψει το data-volume.
Θα χρειαστεί να πάρουμε το  backup of data-volume(εάν υπάρχει)ξεχωριστά.
Για να ξέρουμε το data-directory (data volume location) ενός container, χρησιμοποιούμε την εντολή
‘docker inspect container-name‘.

[#img-5]
image::5.png[5,1280,1024]

Με την εντολή "docker network ls" εμφανίζονται τα διαθέσιμα δίκτυα.
Το δίκτυο που θα χρησιμοποιήσουμε για το swarm μας είναι το hadoop-net.
Για να μπούμε εντός ενός container docker exec -t -i nodemanager /bin/bash.

Εφόσον εγκαταστήσαμε όλα τα παραπάνω και το handoop είναι λειτουργικό,επόμενο βήμα είναι
να συνδεθούμε με ssh στα δύο vm's μας στον ωκεανό.
Το ένα θα το ορίσουμε ως master και το άλλο ως worker.

Κάναμε ssh στο 1ο μηχάνημα στον ωκεανό με τα στοιχεία μας.

  1. Κατεβάζουμε το docker.

  2. Ξανακάνουμε clone το handoop από το παραπάνω link

  3. Ορίζουμε το node ως slave στο swarm μας με την παρακάτω εντολή

  $ docker swarm join \
  --token  SWMTKN-1-49nj1cmql0jkz5s954yi3oex3nedyz0fb0xx14ie39trti4wxv-8vxv8rssmk743ojnwacrr2e7c \
  192.168.99.100:2377

This node joined a swarm as a worker.

Πληροφορίες:  https://docs.docker.com/engine/swarm/swarm-tutorial/add-nodes/

[#img-6]
image::6.png[6,1280,1024]
Σύνδεση με μηχάνημα στον ωκεανό.

Εφόσον καταφέρουμε να ορίσουμε το παραπάνω μηχάνημα στον ωκεανό ως worker στο swarm μας
εκτελώντας  "docker node ls" στον Η/Υ μας στον οποίο τρέχει ο manager node θα εμφανιστεί
πίνακας που θα δείχνει τα ID των δυο node, τα ονόματα τους, το status τους, την διαθεσιμότητα τους αλλά και αν είναι manager node.

π.χ

[#img-8]
image::8.png[8,1280,1024]

==Προβλήματα που αντιμετωπίσαμε
[#img-7]
image::7.png[7,1280,1024]

Δεν μπορέσαμε να κάνουμε Docker compose up λόγω του error "Unsupported config option for services service: 'datanode'"

Οπότε δεν μπορέσαμε να βάλουμε σε λειτουργία τα containers.
