Académique Documents
Professionnel Documents
Culture Documents
Output 57
Output 57
cloud
App Java
Navigateur
Web Machine du
client
JVM
BDD
Les conteneurs – L’emprisonnement
• L’emprisonnement (Jail)
• Permet de fournir un environnement d’exécution isolé.
• permet à l’OS de tromper les applications en cours d’exécution et leur croire
qu’elles fonctionnent sur la racine de système de fichiers ‘/’, et en réalité elles
fonctionnent sur des dossiers chrooté.
• donne la possibilité d’isoler ou d’emprisonner n’importe quel processus et
même un OS complet dans un coin du système de fichiers.
• L’avantage de cette technique est qu’elle est très légère et ne consomme
aucune ressource supplémentaire.
• L’inconvénient c’est que les ressources utilisées par ces processus ne peuvent
pas être gérées de manière isolée et sont considérées comme n’importe quel
autre processus de la machine hôte.
Les conteneurs – Conteneurs Linux (LXC)
• héritent de la technique Jail du fait qu’elle se repose sur les dossiers
chrootés pour créer un contexte d’exécution isolé du reste de la
machine hôte.
• ils surmontent les limites de Jail en utilisant principalement la
technologie Cgroups, et le cloisonnement des espaces de nommage.
• Cloisonnement des espaces de nommage (Kernel namespaces): permet de
séparer des groupes de processus. Cela garantit qu'ils ne peuvent pas voir les
ressources dans d'autres groupes. Différents espaces de noms sont utilisés
pour l'isolation des processus, les interfaces réseau, l'accès à la
communication interprocessus.
Les conteneurs – Conteneurs Linux (LXC) (2)
• Cgroups, où les groupes de contrôle gèrent et limitent l'accès aux
ressources pour les groupes de processus. Ils permettent de partager
les ressources matérielles disponibles entre les conteneurs et, si
nécessaire, de définir des limites et des contraintes d’accès et
d’exploitation de ces ressources. Parmi les possibles fonctionnalités
que peut offrir Cgroups, on cite : (1) l’affectation d’un ensemble de
CPUs à un ensemble de processus ; (2) Créez un processus avec une
quantité de mémoire limitée ; (3) établir des rapports d’utilisation de
CPU par différents processus ; (4) Mettre en pause des processus ; (5)
assigne une priorité à un trafic réseau ; (6) marquer un trafic réseau
donné.
Les conteneurs – Conteneurs Linux (LXC) (3)
• De plus, les conteneurs Linux se basent sur les modules ‘Application Armor’
(AppArmor) et Security-Enhanced Linux (SELinux). Ils fournissent un
support sécurisé pour l’isolation des processus.
• Ils permettent d’étiqueter les processus avec un libellé lié à un contexte de
sécurité. De plus, ils permettent de surveiller ces processus en vérifiant
qu’ils respectent certains modes d’accès qui incluent le rôle et le contexte
de sécurité.
• Un rôle dans SELinux est une attribution d’un droit à un processus ou à un
utilisateur tels que l’accès en lecture ou en écriture.
• Contexte de sécurité SELinux : définit par un nom, un rôle, et un type qui
représente la nature de l’objet surveillé par SELinux tels qu’un fichier, un
port réseau, etc.
Les conteneurs – Conteneurs Linux (LXC) (4)
Image SE1 App
…
Lib/Bin Lib/Bin Lib/Bin
LXC
CGroups NameSpaces
SELinux/AppArmor
Docker
• Docker est une technologie de conteneurisation basée principalement sur
CGroups, le noyau et les conteneurs Linux. A partir de sa version 0.8, libContainer
est ajouté au côté de LXC, il permet l’accès aux APIs du noyau Linux tels que
CGroups et namespaces sans aucune autre dépendance externe. De plus de LXC
et libcontainer, Docker peut être utilisé avec d’autres outils d’isolation et de
virtualisation tels que OpenVZ et libvirt.
• Langage Go : ou Golang, est un langage utilisé initialement par Google. Il offre
des fonctionnalités avancées telles que la collecte de garbage Mémoire, politique
de sécurité, etc.
• OpenVZ : fournit des conteneurs Linux isolés et sécurisés sur le même serveur
physique en permettant une meilleure utilisation du serveur et garantissant que
les applications n'entrent pas en conflit.
• LibVirt : est un pilote qui gère les plateformes de virtualisation, il supporte des
plateformes telles que LXC, OpenVZ, VMware, VirtualBox, etc.
Docker(2)
• Docker peut isoler des applications ainsi que leurs dépendances dans
des conteneurs qui peuvent être exécutés sur n’importe quel serveur
en facilitant leur gestion, leur migration, et leur redémarrage à froid
ou à chaud. Il peut gérer plusieurs conteneurs LXC ou libcontainer à la
fois et leurs permettre de partager les ressources matérielles et
logicielles de l’hôte.
Docker (3)
Container 2 Container n
Container 1
Le Moteur Docker
Libcontainer
Libvirt LXC
Noyau Linux
CGroups NameSpaces
SELinux/AppArmor
Les avantages de Docker
• La modularité : docker est basé sur la notion de micro-service, cette
dernière permet une gestion partielle des applications sans affecter
l’ensemble des fonctionnalités ni leurs déploiements. Ainsi, elle
favorise la réutilisation partielle, la maintenance, l’évolutivité et le
passage à l’échelle.
Les avantages de Docker
• La notion des couches : les images manipulées par docker sont sous
forme de plusieurs couches. A la base, on trouve un OS tels que
Ubuntu ou Fedora dans la première couche. Une modification dans
l’image entraine une création d’une autre couche qui sera traduite
par des instructions enregistré dans un fichier docker. L’utilisation des
couches permet de bien gérer les versions des images, leur
réutilisation par plusieurs conteneurs, le gain en espace disque et la
restauration des anciennes versions des images.
Architecture de Docker
• Docker est d’une architecture client-serveur. Le client Docker
manipulé par l’utilisateur s’interface avec le daemon Docker. Ce
dernier est chargé d’exécuter les commandes du client telles que apt-
get install/update, exec, run, etc. de plus, le daemon Docker crée des
images à chaque fois sollicité par le client et il peut les gérer dans le
registre d’images en utilisant les fonctions push, pop, et search. Le
registre Docker est utilisé pour le stockage des images cumulées
utilisables par le Moteur Docker. D’un autre côté, le daemon Docker
se charge du démarrage, de l’arrêt et de l’inspection des conteneurs.
La figure 6 montre l’architecture de Docker.
Architecture de Docker
Conteneur2
Docker Daemon
Conteneur1
Gestion des Conteneurs
Accès au nayau
SE
Hardware
Les Framework des cloud
Apache Hadoop
• Hadoop est le projet de haut niveau d'Apache Software Foundation.
Le projet Hadoop fournit et soutient le développement de logiciels
open source qui fournissent un cadre pour le développement
d'applications informatiques distribuées hautement évolutives. Le
framework Hadoop gère les détails du traitement, laissant les
développeurs libres de se concentrer sur la logique de l'application.
Apache Hadoop
• Apache Hadoop est un cadre qui permet le traitement distribué de
grands ensembles de données à travers des grappes d'ordinateurs en
utilisant un modèle de programmation simples. Il est conçu pour
passer à l’échelle d’un serveur unique vers des milliers de machines,
chacune offrant une puissance de calcul et un support de stockage
local.
Hadoop Core MapReduce (1)
• MapReduce de Hadoop fournit à l'utilisateur un cadre sophistiqué pour
gérer l'exécution de Map et réduire les tâches sur un groupe de machines.
L'utilisateur est tenu de spécifier au framework les éléments suivants:
• 1- les fichiers d’entré des Job situés sur le système de fichier distribué
• 2- le chemin des fichiers de sortie des Job situé sur le système de fichier
distribué
• 3- le format des données en entré
• 4- le format des données en sortie
• 5- la classe contenant la fonction Map et Reduce.
• 6- le fichier JAR contenant les fonctions Map et Reduce et d’autres classes
utiles.
Hadoop Core MapReduce (2)
• Si un Job n'a pas besoin d'une fonction de réduction, l'utilisateur n'a
pas besoin de spécifier une classe de réduction, et une phase de
réduction du travail ne sera pas exécutée. Le framework partitionnera
l'entrée, planifiera et exécutera des tâches de carte dans le cluster. Si
demandé, il va trier les résultats de la tâche Map et exécuter les
tâches de réduction. La sortie finale sera déplacée vers le répertoire
de sortie et l'état du Job sera reporté à l'utilisateur.
Hadoop Core MapReduce (3)
• MapReduce est basé sur la notion des paires clé / valeur. Il convertira
chaque enregistrement d'entrée en une paire clé / valeur, et chaque
paire sera présenté à la fonction Map. La sortie de Map est un autre
ensemble de paires clé / valeur. Les paires de sorties de Map sont
regroupées et triées par clé. La fonction de réduction est appelée une
fois pour chaque clé. La méthode reduce peut générer un nombre
arbitraire de paires clé / valeur, qui sont écrites dans les fichiers de
sortie du répertoire de sortie du Job.
Hadoop Distributed File System (HDFS)
(1)
• HDFS est un système de fichiers conçu pour être utilisé avec les Job
MapReduce qui lisent les entrées en gros morceaux d'entrée, les
traitent et écrivent des blocs de sortie potentiellement volumineux.
• Pour plus de fiabilité, les données de fichier sont simplement mises
en miroir sur plusieurs nœuds de stockage. C'est ce qu'on appelle la
réplication.
• Tant qu'au moins une réplique d'un bloc de données est disponible, le
consommateur de ces données ne connaît pas les défaillances du
serveur de stockage.
Hadoop Distributed File System (HDFS)
(2)
• Les services HDFS sont fournis par deux processus:
1- NameNode gère la gestion des métadonnées du système de fichiers
et fournit des services de gestion et de contrôle.
2- DataNode fournit des services de stockage et de récupération de
bloc.
Projets en liaison avec Apache Hadoop (1)
Apache Pig:
• Pig est une abstraction sur MapReduce. C'est une plate-forme qui est utilisée
pour analyser de plus grands ensembles de données les représentant comme des
flux de données.
• Pour écrire des programmes d'analyse de données, Pig fournit un langage de haut
niveau appelé Pig Latin. Ce langage fournit divers opérateurs de lecture,
d'écriture et de traitement des données.
• Pour analyser les données à l'aide d'Apache Pig, des scripts écrit en langage Pig
Latin sont convertis en tâches Map et Reduce. Apache Pig a un composant connu
sous le nom de Pig Engine qui accepte les scripts Pig Latin en entrée et convertit
ces scripts en MapReduce Job.
Projets en liaison avec Apache Hadoop (2)
Caractéristiques de Pig:
• Fournit un ensemble riche d'opérateurs - Il fournit de nombreux opérateurs pour
effectuer des opérations telles que join, sort, filer, etc.
• Facilité de programmation - Pig Latin est similaire à SQL.
• Opportunités d'optimisation - Les tâches d'Apache Pig optimisent
automatiquement leur exécution, de sorte que les programmeurs doivent se
concentrer uniquement sur la sémantique du langage.
• Pig fournit la possibilité de créer des fonctions définies par l'utilisateur dans
d'autres langages de programmation tels que Java et de les invoquer ou de les
incorporer dans des scripts Pig.
• Gère toutes sortes de données - Apache Pig analyse toutes sortes de données, à
la fois structurées et non structurées. Il stocke les résultats dans HDFS.
Projets en liaison avec Apache Hadoop (3)
Exemple de programme WordCount avec Pig:
Projets en liaison avec Apache Hadoop (4)
Apache Hive:
• Hive est un outil d'infrastructure d'entrepôt de données permettant
de traiter des données structurées dans Hadoop. Il réside au-dessus
de Hadoop pour réduire les données volumineuses et facilite
l'interrogation et l'analyse.
• Initialement Hive a été développé par Facebook, par la suite Apache
Software Foundation l'a repris et développé plus loin comme une
source ouverte sous le nom de Apache Hive.
Projets en liaison avec Apache Hadoop (5)
Caractéristiques de Hive:
• Il stocke le schéma des données dans une base de données et traite
les données dans HDFS.
• Il fournit un langage de type SQL pour l'interrogation appelée HiveQL
ou HQL.
• Il est familier, rapide, et évolutif.
Projets en liaison avec Apache Hadoop (6)
Architecture de Hive:
Projets en liaison avec Apache Hadoop (7)
HBase :
• HBase est une base de données orientée colonne basé sur le système
de fichiers Hadoop.
• HBase est un modèle de données conçue pour fournir un accès
aléatoire rapide à d'énormes quantités de données.
• On peut stocker les données dans HDFS directement ou via HBase. Le
consommateur de données lit / accède aux données dans HDFS de
façon aléatoire en utilisant HBase.
Projets en liaison avec Apache Hadoop (8)
HBase :
Projets en liaison avec Apache Hadoop (9)
Mécanisme de stockage dans Hbase:
HBase est une base de données orientée colonnes et les tables sont
triées par ligne. Le schéma de la table définit uniquement les familles
de colonnes, qui sont les paires de valeurs clés. Une table a plusieurs
familles de colonnes et chaque famille de colonnes peut avoir
n'importe quel nombre de colonnes. Les valeurs de colonne suivantes
sont stockées de manière contiguë sur le disque.
Projets en liaison avec Apache Hadoop (10)
Mécanisme de stockage dans HBase:
• Une table dans HBase est une collection de lignes.
• Une ligne est une collection de familles de colonnes.
• Une famille de colonnes est une collection de colonnes.
• Une Colonne est une collection de paires de valeurs clés.
Projets en liaison avec Apache Hadoop (11)
Caractéristiques de HBase
• HBase est horizontalement scalable.
• Il a un support de défaillance automatique.
• Il s'intègre à Hadoop, à la fois en tant que source et destination.
• Il fournit la réplication de données à travers les clusters.
Les fournisseurs de distributions Hadoop
• Hortonworks : la Plateforme de données Hortonworks
(HDP:Hortonworks Data Platform) comprend le système Hadoop
Distributed File System (HDFS), MapReduce, Pig, Hive, HBase et ZooKeeper.
• Cloudera : contient les principaux éléments, de base du framework
Hadoop (MapReduce et HDFS), ainsi que d’autres composants destinés aux
entreprises qui assurent la sécurité, la haute disponibilité, et l’intégration
avec le matériel et les autres logiciels.
• Pivotal : en partenariat avec Hortonworks depuis 2015. Ensemble,
ils concentrent leurs efforts autour d’un noyau cohérent de fonctionnalités
basées sur Apache Hadoop comprenant des intégrations de produits,
l’ingénierie conjointe et soutien à la production.
Le Framework Apache Storm
• Apache Storm est un système de traitement de données volumineux
distribué en temps réel. Storm est conçu pour traiter une grande
quantité de données de façon évolutive horizontalement et tolérante
aux pannes.
• Il gère l'environnement distribué et l'état du cluster via Apache
ZooKeeper.
Le Framework Apache Storm (2)
• Use-Cases d'Apache Storm
Apache Storm est très connu pour le traitement de gros volumes de données en temps réel. Pour
cette raison, la plupart des entreprises utilisent Storm comme partie intégrante de leur système.
Quelques exemples notables sont les suivants:
• Twitter - Twitter utilise Apache Storm pour traiter chaque tweet et chaque clic sur la plate-forme
Twitter. Apache Storm est profondément intégré à l'infrastructure Twitter.
• NaviSite - NaviSite utilise Storm pour le système de surveillance et d'audit des journaux
d'événements. Tous les journaux générés dans le système passeront par storm. il vérifiera le
message par rapport à l'ensemble d'expressions régulières configuré et, s'il existe une
correspondance, ce message particulier sera enregistré dans la base de données.
• Wego - Wego est un moteur de recherche de voyages situé à Singapour. Les données relatives aux
voyages proviennent de nombreuses sources partout dans le monde avec un timing différent.
Storm aide Wego à rechercher des données en temps réel, à résoudre les problèmes de
concurrence et à trouver la meilleure correspondance pour l'utilisateur final.
Le Framework Apache Storm (3)
Storm Hadoop
Traitement de flux de données en temps réel Traitement en batch
Sans état Avec état
Architecture maître / esclave avec une coordination Architecture maître-esclave avec / sans
basée sur ZooKeeper. Le nœud maître est appelé coordination basée sur ZooKeeper. Le noeud maître
nimbus et les esclaves sont des superviseurs. est job tracker et le noeud esclave est task tracker.
Un processus Storm peut accéder à des dizaines de Hadoop Distributed File System (HDFS) utilise le
milliers de messages par seconde sur un cluster. framework MapReduce pour traiter une grande
quantité de données qui prend des minutes ou des
heures.
Une topology Storm fonctionne jusqu'à la Les job MapReduce sont exécutés dans un ordre
fermeture par l'utilisateur ou un échec inattendu séquentiel et terminés éventuellement.
irrécupérable.
Si nimbus / supervor meurt, le redémarrage le fait Si le JobTracker meurt, tous les job en cours sont
continuer d'où il s'est arrêté, donc rien n'est perdus.
affecté.