CESI: Intro Big Data - ajout exercice bdd clé/valeur et graphe
This commit is contained in:
parent
8f84189ed5
commit
a58dc496c4
BIN
cesi/intro_big_data/presentation/img/Mapreduce.png
Normal file
BIN
cesi/intro_big_data/presentation/img/Mapreduce.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 37 KiB |
@ -67,10 +67,22 @@ William Petit - S.C.O.P. Cadoles
|
||||
|
||||
### 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é
|
||||
|
||||
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
|
||||
@ -91,9 +103,18 @@ William Petit - S.C.O.P. Cadoles
|
||||
|
||||
#### 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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
|
||||
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
|
||||
@ -170,13 +240,20 @@ Chaque personne a également les attributs suivants:
|
||||
|
||||
---
|
||||
|
||||
|
||||
## Exploitation des données et cadre légal
|
||||
|
||||
---
|
||||
|
||||
### 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
|
||||
|
||||
[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 docker-entrypoint.sh /docker-entrypoint.sh
|
||||
RUN chmod +x /docker-entrypoint.sh
|
||||
|
||||
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
|
||||
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]
|
||||
command = bin/hdfs --config etc/hadoop namenode
|
||||
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
Block a user