24.11.2015 Views

REX

BD16_REX

BD16_REX

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Retours d’expériences Big Data en entreprise<br />

YSANCE - ARKENA<br />

LES ENJEUX D’UNE PLATEFORME BIG DATA TEMPS RÉEL POUR ARKENA<br />

CONTEXTE<br />

Arkena, commercialise une plateforme permettant de distribuer des contenus audio et vidéo sur tous les écrans<br />

(Streaming Web, Mobile, Box, B2B, etc.)<br />

Ces contenus sont transmis via plusieurs technologies, en particulier un CDN internet qui repose sur de nombreux<br />

serveurs à travers le monde. Ces serveurs génèrent de très grande quantité de logs, actuellement utilisés pour<br />

monitorer le CDN, mais aussi pour déterminer la facturation client selon l’usage.<br />

Avec l’augmentation du nombre des clients et de la volumétrie diffusée, l’architecture en place de collecte et traitement<br />

de ces logs (Rsyslog, Postgresql, Java), ne permettait plus d’assurer les services attendues (Supervision,<br />

Alerting, Analyse et facturation).<br />

Arkena souhaitait donc remplacer ce système par une architecture hautement scalable, facile à maintenir et disposant<br />

d’un faible TCO.<br />

ENJEUX TECHNIQUES<br />

• Collecte et stockage des logs en temps réel (+ de 60 000 logs par seconde)<br />

• Archivage des logs sur au moins 3 ans<br />

• Calcul au fil de l’eau de plus de 300 KPI (Mise à jour toutes les minutes)<br />

• Mise à disposition de ces indicateurs via des appels API REST<br />

• Garantir que chaque ligne de log sera intégrée une et une seule fois<br />

• Remplacer Rsyslog par une solution plus fiable pour la collecte et la centralisation des logs depuis 30 datacenters<br />

et en garantissant l’acquittement de réception de chaque log.<br />

• Offrir un très haut niveau de disponibilité, des mécanismes de reprises sur erreur et une forte capacité de montée<br />

en charge<br />

ARCHITECTURE<br />

L’architecture mise en place par Ysance est de type “Lambda” et repose sur trois stacks techniques :<br />

Spark pour les traitements temps réel, MapReduce pour les traitements Batch et Elasticsearch pour la couche<br />

présentation.<br />

• Vitesse : La couche temps réels reposent sur Apache Spark, et calculent les KPI sur une fenêtre de temps d’une<br />

minute (agrégation de 3,6M de logs / mn). L’objectif est d’alimenter au plus vite la couche de restitution avec des<br />

indicateurs qui ne nécessitent pas de retraiter l’ensemble de l’historique des données.<br />

• Batch : La couche Batch vise à créer une vision définitive, et si nécessaire corrigée des données traitées par la<br />

couche de vitesse (en cas d’arrivée trop tardive, de redémarrage du process temps-réel, …), ainsi qu’à calculer les<br />

KPI nécessitant de traiter un historique de données plus long. (dans le cas de la dimension temps, les aggrégats<br />

à l’heure, journée, semaine, mois, …) Elle repose sur le moteur MapReduce, au travers de Hive ou de développement<br />

spécifiques Java.<br />

• Présentation : La couche de présentation réconcilie les données traitées par la couche vitesse et la couche<br />

batch, et permet ainsi d’analyser et d’aggréger dans un même dashboard des données issues de Spark et de<br />

Hive. Cette couche repose sur Elasticsearch, qui offre la possibilité d’appliquer des aggrégats au requêtage, et<br />

permet ainsi de sommer, de compter distinctement, etc… sur l’ensemble des données, avec des temps de réponse<br />

inférieurs à la seconde.<br />

• Transport : La couche transport repose sur Apache Flume. L’objectif est de collecter en streaming l’ensemble<br />

des lignes de logs vers la plateforme Hadoop, sans provoquer de blocage applicatif. La communication entre les<br />

agents Flume présents sur les edge et ceux qui écrivent sur le cluster Hadoop est effectuée par appel RPC / Avro.<br />

Document réalisé par la Société Corp Events - Janvier 2015<br />

130

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!