CESI: Intro Big Data - ajout exercice bdd clé/valeur et graphe

This commit is contained in:
wpetit 2018-09-05 21:54:11 +02:00 committed by Benjamin Bohard
parent 0918bbb1bb
commit cfd94c08b6
5 changed files with 91 additions and 13 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

View File

@ -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 dimmatriculation, 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)

View File

@ -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"]

View File

@ -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

View File

@ -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