blog page
|
big data, data scientist, references
|
2013-03-11 Big Data, Data Scientist, quelques repères
En rejoignant Yahoo il y a déjà cinq ans, j'ai découvert le langage
PIG. Ce n'était
pour moi qu'un nouveau langage très proche de SQL dont le seul attrait était de
pouvoir accéder aux logs de recherches puis de les aggréger de
différentes manières avant de pouvoir enfin les poser sur une machine
isolée où je pouvais travailler simplement et rapidement. Aujourd'hui,
cette technique est étiqueté Big Data et s'est considérablement
étoffée. En passant chez Microsoft, j'ai découvert son équivalent
chez Microsoft
avec Scope.
Google a developpé un langage
Sawzall
dont la syntaxe est plus proche d'un langage fonctionnel.
Aujourd'hui, au fur et à mesure de mes discussions sur le Big Data,
je garde quelques références
sur le sujet, des idées. Cela n'a rien d'exhaustif mais je suis étonné
qu'autant de projets fleurissent étant donné l'investissement que chacun
d'entre eux nécessite. Ce billet rassemble quelques idées, termes, liens.
Quelques remarques sur l'utilité de ces techniques
-
Les données Big Data sont souvent plus bruitées que d'autres données
car il n'est plus possible de les nettoyer manuellement. Le nettoyage est forcément
statistique ou il nécessite l'utilisation de modèles robustes au bruit.
-
Le machine learning est souvent associé à BigData (voir plus bas).
Machine learning = apprentissage statistique en français.
La raison est qu'il est quasiment impossible de visualiser les données sans un traitement préalable.
-
Il est aussi une chose qui rend le BigData très attractif,
c'est la possibilité de croiser les données : données clients avec clics internet.
Ces croisements n'étaient pas possibles avant tout à cause de la taille des bases concernées.
Il devient maintenant possible en un temps raisonnable car il est distribué
-
Les gens sont connectés en permanence (téléphone, tablette, recherche internet, connexion à un site internet),
il y a une accumulation de données variées sur les gens que les sociétés utilisent de plus en plus.
Hadoop/PIG et ses extensions open sources
Je reprends pour l'essentiel ici les informations présentes
sur la page officiel du projet Hadoop Hadoop
et le numéro 46 de Variance.
- Hadoop/PIG,
langage type Map/Reduce,
projet open source initié par Yahoo, ressemble
à un langage SQL distribué.
- Ambari un outil pour gérer les cluster Hadoop.
- Avro un système de sérialisation de données.
- Cascading un framework java pour écrire des processus map/reduce en java.
- Cassandra un système de bases de données robustes
permettant les index alors qu'Hadoop n'a pas été conçu pour ça. Il esdt utilisé par beaucoup
de compagnies ce qui devrait assurer sa pérennité.
- Chukwa outil de monitoring et de reporting (la version 1.0 n'est toujours pas prête).
- HBase HBase permet le stockage de grosses bases de données (plusieurs milliars de lignes).
- Hive facilite l'accès aux données stockées par Hadoop, propose un langage
très proche du SQL (HiveQL) pour les parcourir.
- Mahout librairie de machine learning distribué.
- ZooKeeper un service pour déployer et coordiner d'autres services.
Pour démarrer sur toutes ces technologies, il est possible d'utiliser
une machine virtuelle
(
VMWare)
créée par
Cloudera
(on trouvera quelques photos d'écran
ici).
Hadoop intégré par des solutions propriétaires
Solutions non Hadoop
- CouchBase, c'est un système clé/valeur distribué, il permet de stocker de
grandes bases de données et d'y accéder rapidement. Il s'interface facilement avec Hadoop
(ici)
- Mongo DB stockage distribué de
documents décrits avec le format BSON (JSON binaire) beaucoup plus
souple que celui des bases de données.
- (Twitter) Storm permet d'exécuter des jobs map/reduce,
chaque modification d'une table est vu comme un événement
(semblable à Yahoo S4 excepté que ce dernier
ne garantit pas l'exécution de tous les événements). Contrairement à Hadoop, il
permet des traitements en temps réel comme la récupération des mots les plus fréquemment
utilisés en temps réels.
- Apache Drill, ce projet implémente
les mêmes fonctionnalités que Google Dremmel (propriétaire). Il complémente MapReduce
qui demeure malgré très lent quand il s'agit d'obtenir des données simples (moyennes, ...)
sur une très grande base. Drill permet de faire cela en quelques secondes.
- Scribe solution permettant d'agréger des logs en temps réel
(utilisé par Facebook)
- Flume similaire à Scribe.
- Voldermort système clé/valeur distribué.
- Riak système permettant l'exécution de jobs map/reduce,
il s'appuie sur le langage Erlang qui permet entre autres de modifier
le code d'un programme sans l'arrêter. C'est un langage fonctionnel qui impose la communication
via messages asynchrones entre différents processus.
- Kafka distributed publish-subscribe messaging system.
J'en oublie comme
cascalog,
elephantdb
ou encore
Amazon DynamoDB,
et d'autres apparaîtront sans doute.
Il n'existe pas de meilleur choix aujourd'hui, cela dépend du système existant s'il existe,
de la possibilité de migrer vers le nouveau, cela dépend aussi de ce qu'on veut faire avec
(calcul batch, calcul temps réel, accès décalé aux données ou accès temps réel).
Il est bien souvent nécessaire d'avoir plusieurs systèmes en place pour faire aux
différents usages qu'on souhaite faire avec les mêmes données.
Demain, tout le monde laissera de plus en plus de traces numériques, les ordinateurs / téléphone / tablettes
ne seront que des supports, les données seront stockées sur des environnement virtuels,
les applications ne seront plus installées mais utilisées via le réseau.
Changer d'ordinateur ne sera plus un problème, il suffira de se connecter à son espace virtuel
(DropBox, SkyDrive, GoogleDrive, OODrive) offrent des répertoires virtuels et synchronisés
avec un répertoire local de la machine, Microsoft propose la possibilité de sauver son bureau
et de le retrouver tel quel sur n'importe quel ordinateur).
Il sera de plus en plus difficile de cacher des informations, il sera possible de savoir
les recherches que vous faites, les applications que vous utilisez, les documents que vous écrivez,
la musique que vous écoutez, les films que vous regardez, ce que vous acheter. Ces informations
seront détenues par plusieurs acteurs à la fois et ils auront de plus en plus de moyens de recouper ces informations.
Et il est difficile de s'en passer car ils facilitent beaucoup l'usage qu'on a des ordinateurs.
Les appareils électriques suivront le même chemin (même programmation des chaînes de télévisions,
des radios lorsqu'on change d'appareils).
Pour fiabiliser ces informations, les grandes sociétés poussent l'identification
sécurisée des internautes et empêche la création de faux profils.
On sait de moins en moins où sont stockées les données personnelles, sous quelle législation elles sont stockées.
Sans doute verra-t-on l'apparition de clones virtuels, de monnaie virtuelle
(bitcoin, adoptée par Wordpress). Il existe déjà
un logiciel qui prédit les délits.
Quelques termes que je détaillerai plus tard peut-être,
lucene, clojure, scala, ACID, Complex Event Processing,
OLAP, SAAS, NoSQL ou encore GitHub
qui permet de travailler à plusieurs sur un projets open source. Il en héberge la plupart.
Pour repérer les techniques qui commencent à percer, il est possible d'utiliser
Google Trends ou encore
IT Jobs Watch
qui recence les offres d'embauches sur le marché anglais contenant certains mots-clés.