Il y a 6 ans -
Temps de lecture 14 minutes
REX workshop Big Data chez AWS
On ne présente plus le cloud AWS et la constellation de services qui l’accompagne. L’objet de cet article est de faire un bilan de cette journée et de le comparer à mon expérience du Big Data, principalement on-premise.
Amazon, de par ses solutions, couvre pour nous les aspects suivants :
- Maintenance : L’utilisateur ne se soucie pas des Data Centers, des serveurs, des disques, et des équipements physiques dont la maintenance est assurée par AWS.
- Élasticité : Les services sont élastiques et scalables pour s’adapter à une demande différente et flexible.
- Extensible : Il est possible de brancher des solutions techniques existantes sans passer forcément par les services AWS.
- Sécurité : L’authentification, les autorisations, l’audit, en somme une sécurité forte est gérée facilement pour tous les services.
À chaque grande phase de travail sur du Big Data vont correspondre des outils AWS dédiés, que nous allons maintenant présenter.
Injection
Toute mise en place d’architecture Big Data sous entend l’injection et la collecte de données au préalable. Ce paragraphe passe en revue les différents composants disponibles.
Snowball
Snowball permet de transférer un gros volume de données vers les Data Centers d’Amazon dans S3 de manière sécurisée, soit par valise commandée par La Poste (volume jusqu’à 100 To), soit via la venue d’un camion (volume jusqu’à 100 Po). Ces solutions peuvent s’avérer utiles si les données ne bougent pas énormément entre le moment où on les collecte et le moment où elles sont intégrées.
Glue
Nouveau service pour l’instant indisponible en Europe, Glue est un ETL managé par AWS. Il permettra d’avoir accès aux fonctionnalités traditionnelles d’un ETL dans le cloud AWS.
Direct Connect
Direct Connect permet l’interfaçage de votre Data Center avec AWS sur un lien réseau à 10Gb/s.
Fluentd & co
Il existe un nombre important d’outils capables de collecter des données pour les stocker ensuite dans S3 ou les traiter ensuite en temps réel. Pour ne citer qu’eux :
- Fluentd dispose d’un plugin pour stocker directement dans S3.
- Flume dispose d’un Sink S3.
- LogStash, Log4j
- Kafka n’est pas directement disponible en tant que service. Il est possible de démarrer des instances EC2 remplissant ce service et de produire et consommer Kafka dans le cloud AWS.
- Kinesis est un service managé AWS que nous aborderons plus en détail dans la suite de l’article
Des services managés sont également disponibles pour collecter des données de type IoT tout aussi facilement.
Stockage de données
Seconde étape dans la chaîne de traitements d’une architecture Big Data : le stockage des données. Ce paragraphe présente quelques unes des solutions possibles pour remplir cette mission.
S3
La clef de voûte d’AWS ! Simple Storage Service, le premier service ouvert chez AWS en 2006, est le pivot du fournisseur de cloud. Les services AWS sont hébergés au sein de régions qui sont elles mêmes découpées en zones de disponibilité (AZ). La plupart des services s’interfacent nativement avec ce service de stockage qui offre une réplication 2 fois sur chaque zone de disponibilité. Les AZ sont reliées entre elles à très haut débit et sont géographiquement sur des sites distincts. Au final, la donnée est répliquée 6 fois pour un coût de stockage très faible : seulement 2,5 cts $ du Go par mois. Certaines régions n’ouvrent que deux AZ aux utilisateurs mais dans la réalité des faits AWS dispose toujours de trois AZ par région.
La figure ci-dessus présente les trois AZ par région.
Le rôle de ce service est de stocker à faible coût des fichiers avec une garantie à 99,999999999 % de ne pas perdre votre fichier et une disponibilité du service à 99,99 %.
Le principal avantage vis à vis d’une distribution Hadoop qui offre un service comparable avec HDFS est qu’il n’est pas nécessaire de disposer d’un cluster Hadoop opérationnel pour garantir son stockage avec S3. Le traitement des données est vraiment indépendant du stockage. Ce dernier constitue le Data Lake dans lequel puisent tous les outils.
Glacier
Glacier offre la gestion des sauvegardes à long terme. A titre d’exemple, il est possible de gérer la sauvegarde d’une base de données.
Attention tout de même, le temps de récupération des données est de 3 à 5 h. Cette durée tend à diminuer dans les nouvelles versions de ce service.
RRS
RRS est un service de stockage à redondance réduite qui constitue une option de stockage moins chère que S3. Ce type de stockage s’adresse à des données re-constructibles. On considère comme donnée re-constructible toute donnée qui n’est pas la donnée brute et que l’on peut reconstruire sur demande.
Dynamo DB
Traitement de la donnée
Après avoir intégré nos données, nous pouvons les traiter à l’aide d’un ensemble de services que je détaille dans ce paragraphe.
Redshift
RedShift est une base de données relationnelle orientée colonne. Elle est particulièrement efficace pour l’entreposage de données. Cette base de données de type MPP, accessible via JDBC et ODBC, est distribuée. Les traitements sont donc répartis sur un nombre nœuds ajustable. L’architecture est classique pour du distribué : un nœud master et des nœuds slaves qui traitent des morceaux (slices) du jeu de données en parallèle. Le nombre de slices par serveur est fonction du nombre de cœurs processeur disponibles. Un slice (un conteneur pour faire un parallèle avec YARN) est composé de CPU, RAM et disque.
Deux profils de facturation sont proposés pour Redshift
- « stockage » : stockage de 2 To à 2 Po
- « compute » : stockage de 160 Go à 326 To
Redshift supporte de nombreux formats de sérialisation (AVRO, …), de la compression ainsi que l’interfaçage simple avec S3 et DynamoDB.
Quelques limitations cependant :
- Redshift ne garantit pas l’”ACIDité” des transactions, ce qui est logique pour du distribué.
- Comme beaucoup de base de données distribuées, la suppression des données ne se fait pas lors de l’instruction de suppression mais uniquement lors d’une opération d’administration qui force la suppression des données marquées à supprimer.
- Il faut définir une clef en fonction du type d’accès aux données suivant trois modes :
- Par slice : une même clef sera toujours traitée par le même slice.
- Round robin : chaque serveur reçoit à tour de rôle une clef.
- Distribuée : utile pour des tables de référentiel. Tous les serveurs conservent une copie de la donnée
- Une mauvaise définition de la clef, de même qu’un mauvais choix de profil de facturation, aura un impact sur les performances et sur le coût de facturation. On gère exactement les mêmes problématiques de distribution de la clef lorsqu’on définit le schéma d’une table HBase.
- RedShift ne supporte pas plus de 100 utilisateurs simultanés.
Aurora
Aurora propose la mise en place de bases de données relationnelles MySQL ou PostgreSQL très haute performance.
Presto
Outil initialement développé chez Facebook, Presto est un moteur SQL Open Source pouvant gérer des volumes de données allant jusqu’au pétaoctet. Il est disponible au sein de la distribution Hadoop d’Amazon Vanilla et par conséquent embarqué lors de l’instanciation de cluster Hadoop EMR (voir ci-dessous).
Pour le catégoriser au regard des distributions Hadoop du marché, Presto est sur le même cœur de marché que Drill et Impala. Comme Impala, il s’interface avec le Metastore de Hive pour y retrouver les structures de données et supporte sa sémantique. Il est possible de créer des tables à partir de données disponibles sur S3 à la manière d’Impala et Drill (schema on read).
Athena est un nouveau service qui n’est pas encore disponible en Europe et annoncé lors de l’événement AWS Reinvent. Il s’agit en réalité d’un Presto managé par AWS. Son principal avantage par rapport à un Presto mis en route dans un EMR est son mode de facturation à la requête.
EMR
Elastic Map Reduce permet d’instancier des clusters Hadoop à la volée via la ligne de commande ou depuis l’interface en ligne. C’est en résumé du Hadoop As A Service. Il repose sur la distribution Vanilla d’Amazon actuellement en version 5.2 embarquant les services Presto, Hive, Pig, Hbase, Hue, HDFS, Flink, Ganglia et YARN.
Il est possible de ne pas utiliser HDFS du tout lors de l’instanciation du cluster.
EMR ne propose pas de haute disponibilité du Namenode/Resource Manager. Ceci est dû au fait que l’on part du principe que la totalité du cluster est reconstructible rapidement. Dans cette même optique, il est possible de réserver des instances de type spot pour limiter le coût de l’instanciation du cluster. Un cours de l’instance spot est établi en permanence par Amazon et en fonction d’un prix pré-enregistré que l’on est prêt à mettre, on peut obtenir ou non ces instances.
Amazon ML
Amazon Machine Learning est un service permettant d’utiliser un nombre limité d’algorithmes de Machine Learning (uniquement du supervisé) :
- Classification binaire
- Classification multi-critères
- Régression et prévision
Ce service permet d’assister le Data Scientist dans son processus d’élaboration d’un modèle. Ce modèle peut être entraîné sur de très gros jeux de données hébergés également sur AWS (S3, Redshift, …) et ensuite être appliqué en mode batch ou en temps réel (Kinesis).
À titre personnel, je pense qu’il peut servir pour débuter dans le Machine Learning, mais que Spark est bien plus fourni en algorithmes.
EC2
C’est le service de fourniture de serveurs avec un ensemble de systèmes d’exploitation (Linux, Windows…) au catalogue, un ensemble de types d’instance adapté à des usages différents (t1, t2…). En quelques clics ou via la ligne de commande, il est possible d’instancier un ensemble de serveurs exécutant une image de système d’exploitation (AMI) pré-disponible en ligne.
Pour faire le parallèle avec les distribution Hadoop du marché, il est possible d’utiliser la distribution Hadoop de son choix et de l’installer sur des instances EC2. Les acteurs majeurs du secteur (Cloudera, Mapr et HortonWorks) proposent des outils pour automatiser cette installation à base d’instance EC2.
Ces outils pour piloter la création de votre cluster Hadoop à base d’instances EC2 sont puissants (Cloudera Director, ….) mais rien n’empêche d’utiliser un outil de type Ansible pour installer totalement son cluster Hadoop. Dans ces conditions, on disposera de son infrastructure big data dans le cloud as code.
Pour finir, AWS propose une version managée de la distribution Mapr.
Kinesis et ses déclinaisons
Kinesis est l’outil de gestion des événements de type streaming proposé par Amazon. À titre de comparaison, il remplit le même rôle que Kafka. Il permet entre autres comme lui de découpler la production de la consommation d’événements arrivant au fil de l’eau.
Comme Kafka, il est scalable et découpé en shards correspondant aux partitions de topic sur Kafka. La facturation se fait autour du nombre de shards, et c’est un service dont l’élasticité peut être managée facilement. Il se décline en 3 versions :
- Kinesis stream permet de traiter le flow d’événements
- Kinesis Firehose peut réaliser des traitements de type batch sur le flux d’événements (par exemple : écrire sur S3 un ensemble d’événements, indexer dans Elastic Search les événements ou les stocker dans RedShift). Il est possible d’encrypter et de compresser le flux d’événements traités.
- Kinesis Analytics permet de traiter les événements temps réel via SQL avant de les réinjecter.
La figure ci-dessous présente quelques outils capables de produire/consommer du Kinesis.
Comme on peut le constater, Kinesis devient un outil central si l’on veut être en mesure de traiter de la donnée chaude (temps réel) au sein de son architecture Big Data AWS.
Lambda
Calcul sans serveur, Lambda supporte quatre langages de programmation (Javascript, Java, Csharp et Python) et s’interface très facilement avec les autres services pour traiter sans avoir besoin de démarrer un serveur.
Sécurité
Enjeu vital lorsque l’on met ses données et ses traitements dans le cloud, la sécurité fait partie intégrante de l’offre de services. L’offre de sécurité dépasse le périmètre de ce retour d’expérience mais l’offre proposée par AWS est complète.
Encryption & KMS
Toute communication inter-service peut être encryptée à travers de SSL/TLS.
Une centralisation des clefs scalable est disponible (KMS). Comme pour les autres services, il est possible d’utiliser un outil tiers pour gérer ses clefs.
IAM
Service incontournable chez AWS, il permet de définir des rôles RBAC et des autorisations pour les différents services de AWS. Grâce à lui, on peut gérer finement l’accès à nos services. À titre de comparaison avec les distributions Hadoop du marché, IAM remplit le même rôle que Sentry ou Ranger.
Consommation
Pour terminer, notre chaîne de traitement de la donnée, je vais aborder dans ce paragraphe quelques solutions de restitution.
QuickSight
QuickSight est un outil de Data Visualisation. Les données sont stockées dans son moteur in-memory Spice. Les outils de Data Visualisation (Tableau Software, Qlikview…) peuvent s’interfacer avec lui.
Inconvénients :
- Les données transitent dans la base in memory limitée en taille de l’outil.
- La bibliothèque de fonctions de Data Visualisation de QuickSight est pour l’instant limitée, ceci impose d’utiliser en plus une solution de Data Visualisation plus classique.
ES
Il s’agit d’un Elastic Search + Kibana (que l’on peut coupler avec Logstash) managé par AWS. Grâce à ce service, il est possible de réaliser des recherches full text sur des documents indexés au préalable. La restitution et l’exploitation des documents indexés peut se faire via Kibana. AWS, au travers de CloudWatch, nous permet de gérer facilement l’élasticité du cluster Elastic Search pour adapter sa taille en fonction des métriques observées.
Autres solutions
Il existe pour finir des dizaines de combinaisons possibles pour sortir la donnée issue de nos traitements « big data » vers d’autres solutions managées AWS ou tout simplement vers un SI on-premise pour réaliser des analyses sur des plus faibles volumes par exemple.
Conclusion
L’écosystème Hadoop est riche dans chacune des distributions (Cloudera, MapR, HortonWorks, IBM Big Insight, Oracle Big Data Appliance, Vanilla…). Il devient encore plus riche avec les services des providers de Cloud public et particulièrement AWS qui est en pointe d’après Gartner et son magic quadran.
Durant cette journée dense, j’ai pu constater la facilité et la rapidité de mise en place de solutions Big Data utilisant les services détaillés ci-dessus.
On retiendra que l’on peut toujours instancier son cluster dans la distribution de son choix à base d’instances EC2. La flexibilité du modèle Amazon permet soit d’adopter pleinement les solutions AWS avec une réversbilité maîtrisée ou soit de démarrer lentement la transition vers le Cloud en conservant ses solutions existantes tournant sur des instances EC2. Il faut néanmoins une connaissance approfondie des services et de leur pricing pour envisager une utilisation maîtrisée des différents composants.
Commentaire