CESI: Intro Big Data - ajout exercice bdd clé/valeur et graphe
This commit is contained in:
parent
0918bbb1bb
commit
cfd94c08b6
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
|
@ -67,10 +67,22 @@ William Petit - S.C.O.P. Cadoles
|
||||||
|
|
||||||
### Vitesse
|
### Vitesse
|
||||||
|
|
||||||
|
La fréquence de génération de données ne cesse d'augmenter. Être en capacité de traiter ce flux constant de données en temps réel est un défi.
|
||||||
|
|
||||||
|
> **Exemple**
|
||||||
|
>
|
||||||
|
> Sur Twitter, environ 500 millions de messages sont envoyés par jour sur la plateforme. C'est environ **6000 messages/seconde.** [Source](http://www.internetlivestats.com/twitter-statistics/)
|
||||||
|
>
|
||||||
|
> Sur Snapchat, sur le 3eme trimestre de 2017, les utilisateurs s'envoyaient jusqu'à **3.5 milliards de 'snap' par jour**. [Source](https://www.statista.com/statistics/257128/number-of-photo-messages-sent-by-snapchat-users-every-day/)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Variété
|
### Variété
|
||||||
|
|
||||||
|
L'avancée de la technologie aidant, les types des données généréess aujourd'hui sont multiples: texte, image, vidéo, son mais aussi modèle 3D, transactions de cryptomonnaies...
|
||||||
|
|
||||||
|
Toutes ces données prennent des formes extrêmement diverses.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Aperçu technique des solutions
|
## Aperçu technique des solutions
|
||||||
|
@ -91,9 +103,18 @@ William Petit - S.C.O.P. Cadoles
|
||||||
|
|
||||||
#### Le modèle "MapReduce"
|
#### Le modèle "MapReduce"
|
||||||
|
|
||||||
|
- Inventé par Google
|
||||||
|
- Inspiré des méthodes `map()` et `reduce()` que l'on retrouve classiquement dans les langages dits "fonctionnels".
|
||||||
|
- Modèle qui permet de paralléliser massivement le traitement de données.
|
||||||
|
- Très adapté aux opérations de filtrage/aggrégation.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Présentation d'Apache Spark et Apache Storm
|
**Découpage du traitement**
|
||||||
|
|
||||||
|
![center](./img/Mapreduce.png)
|
||||||
|
|
||||||
|
[Source](https://fr.wikipedia.org/wiki/MapReduce#/media/File:Mapreduce.png)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -103,14 +124,63 @@ William Petit - S.C.O.P. Cadoles
|
||||||
|
|
||||||
### Base de donnée orientée clé/valeur
|
### Base de donnée orientée clé/valeur
|
||||||
|
|
||||||
|
Mode de stockage représentant le corpus de données sous la forme d'un ou plusieurs tableaux associatifs.
|
||||||
|
|
||||||
|
Chaque clé (unique au sein d'une même collection) est associée à une valeur, qui peut être de différents types suivant le moteur utilisé.
|
||||||
|
|
||||||
|
- **Usage** Stockage temporaire (cache), index, séries chronologiques, base de données embarquées...
|
||||||
|
- **Exemples** [LevelDB](http://leveldb.org/), [Redis](https://redis.io/), [Memcached](https://www.memcached.org/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Exercice**
|
||||||
|
|
||||||
|
Implémenter avec le langage de votre choix une "micro" base de données embarquée orientée clé/valeur. Les données devront être persistentes.
|
||||||
|
|
||||||
|
Votre implémentation devra permettre les opérations suivantes:
|
||||||
|
|
||||||
|
- Sauvegarder une valeur associée à une clé
|
||||||
|
- Récupérer une valeur associée à une clé
|
||||||
|
- Itérer sur les clés existantes dans la base de données
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Exemple d'API**
|
||||||
|
```js
|
||||||
|
cont bbd = new BDD("./my/file.db");
|
||||||
|
|
||||||
|
// Récupérer une clé dans la base de données
|
||||||
|
var val = bdd.get("my-key1");
|
||||||
|
|
||||||
|
// Enregistrer une valeur dans la base de données
|
||||||
|
bdd.set("my-key2", "foobar");
|
||||||
|
|
||||||
|
// Itérer sur le clés de la base de données
|
||||||
|
bdd.forEachKeys(function(key) {
|
||||||
|
console.log(key);
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Base de données orientée document
|
### Base de données orientée document
|
||||||
|
|
||||||
|
Mode de stockage représentant les données sous la forme de collections de "documents".
|
||||||
|
|
||||||
|
Un document est un objet comportant des attributs valués. Un attribut peut lui même être un objet.
|
||||||
|
|
||||||
|
- **Usage** Stockage de données structurées (XML, JSON) avec ou sans schémas.
|
||||||
|
- **Exemples** [MongoDB](https://www.mongodb.com/), [Elasticsearch](https://www.elastic.co/)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Base de données orientée colonne
|
### Base de données orientée colonne
|
||||||
|
|
||||||
|
Mode de stockage organisant les données sous forme de colonnes plutot que par rang comme les bases de données SQL classiques.
|
||||||
|
|
||||||
|
- **Usage** Stockage de données dédiées à l'analyse statistiques et aux opérations d'aggrégation/filtrage par colonne.
|
||||||
|
- **Exemples** [Apache HBase](https://github.com/apache/hbase)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Base de données orientée graphe
|
### Base de données orientée graphe
|
||||||
|
@ -170,13 +240,20 @@ Chaque personne a également les attributs suivants:
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
||||||
## Exploitation des données et cadre légal
|
## Exploitation des données et cadre légal
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Qu'est ce qu'une données à caractère personnel ?
|
### Qu'est ce qu'une données à caractère personnel ?
|
||||||
|
|
||||||
|
> Toute information identifiant **directement ou indirectement** une personne physique (ex. nom, no d’immatriculation, no de téléphone, photographie, date de naissance, commune de résidence, empreinte digitale...).
|
||||||
|
>
|
||||||
|
> -- CNIL
|
||||||
|
|
||||||
|
[Source](https://www.cnil.fr/fr/definition/donnee-personnelle)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
### Le RGPD
|
### Le RGPD
|
||||||
|
|
||||||
|
[Voir la page de la CNIL](https://www.cnil.fr/fr/reglement-europeen-sur-la-protection-des-donnees-ce-qui-change-pour-les-professionnels)
|
||||||
|
|
|
@ -36,6 +36,9 @@ RUN ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa &&\
|
||||||
|
|
||||||
COPY ./conf/supervisor.ini /etc/supervisor.d/hadoop.ini
|
COPY ./conf/supervisor.ini /etc/supervisor.d/hadoop.ini
|
||||||
|
|
||||||
|
COPY docker-entrypoint.sh /docker-entrypoint.sh
|
||||||
|
RUN chmod +x /docker-entrypoint.sh
|
||||||
|
|
||||||
EXPOSE 9870 8088
|
EXPOSE 9870 8088
|
||||||
|
|
||||||
CMD ["/usr/bin/supervisord", "-c", "/etc/supervisor.d/hadoop.ini"]
|
CMD ["/docker-entrypoint.sh"]
|
|
@ -12,16 +12,6 @@ stderr_logfile=/dev/stderr
|
||||||
stderr_logfile_maxbytes=0
|
stderr_logfile_maxbytes=0
|
||||||
priority = 0
|
priority = 0
|
||||||
|
|
||||||
[program:namenode-format]
|
|
||||||
command = bin/hdfs namenode -format
|
|
||||||
directory = /opt/hadoop
|
|
||||||
stdout_logfile=/dev/stdout
|
|
||||||
stdout_logfile_maxbytes=0
|
|
||||||
stderr_logfile=/dev/stderr
|
|
||||||
stderr_logfile_maxbytes=0
|
|
||||||
autostart = true
|
|
||||||
priority = 10
|
|
||||||
|
|
||||||
[program:namenode]
|
[program:namenode]
|
||||||
command = bin/hdfs --config etc/hadoop namenode
|
command = bin/hdfs --config etc/hadoop namenode
|
||||||
directory = /opt/hadoop
|
directory = /opt/hadoop
|
||||||
|
|
|
@ -0,0 +1,8 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
set -eo pipefail
|
||||||
|
|
||||||
|
[ ! -e /var/container_run ] && bin/hdfs namenode -format
|
||||||
|
touch /var/container_run
|
||||||
|
|
||||||
|
/usr/bin/supervisord -c /etc/supervisor.d/hadoop.ini
|
Loading…
Reference in New Issue