Apache kafka big data track

853 vues

Publié le

Apache KAFKA

Publié dans : Données & analyses
0 commentaire
3 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
853
Sur SlideShare
0
Issues des intégrations
0
Intégrations
8
Actions
Partages
0
Téléchargements
22
Commentaires
0
J’aime
3
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Apache kafka big data track

  1. 1. Apache Kafka Un système distribué de messagerie hautement performant Charly CLAIRMONT CTO ALTIC http://altic.org charly.clairmont@altic.org @egwada
  2. 2. Petite bio Co-fondateur Altic 10 ans maintenant Un des mes premiers jobs : « mettre de l'open source à tous les étages » dans l'entreprise ! Mes technos (orientées décisionnelles mais pas que)
  3. 3. Altic @Altic_Buzz Métier Informatique Décisionnelle Intégration de données Valeurs – Innovations – Open Source Une maîtrise de toute la chaîne de valeur du Big Data
  4. 4. Apache Kafka Un système distribué de messagerie hautement performant tolérant aux panes
  5. 5. Agenda Introduction Apache Kafka, qu'est ce que c'est ? Concepts élémentaires Topics, partitions, replicas, offsets Producteurs, brokers, consommateurs Écosystème
  6. 6. Agenda Introduction Apache Kafka, qu'est ce que c'est ?
  7. 7. Introduction Apache Kafka, qu'est-ce que c'est ? ● Distribué, très haut débit, système de messagerie publication / abonnement (pub-sub) – Rapide, Robuste, Scalable, Durable ● Principaux cas d'utilisation – Agrégation de logs, traitement temps réel, monitoring, files d'attente ● Développé à l'origine chez LinkedIn ● Écrit en Scala (un peu de Java) ● TLP Apache depuis 2012 ● 9 core commiteurs, en eviron 20 contributeurs ● http://kafka.apache.org
  8. 8. Introduction Comparaison avec d'autres brokers 8 Kafka Messagerie file d'attente Débit faible, faible latence JMS ActiveMQ RabbitMQ Qpid Agrégateur de logs Débit très fort, forte latence Flume Hedwig Scribe Kestrel Batch jobs Traditionnels: JMS, xxxMQ/AMQP Nouvelle génération: Kestrel, Scribe, Flume, Kafka
  9. 9. Introduction Performance chez LinkedIn ● Statistiques sur l'un des importants clusters Apache Kafka (aux heures de pointe): – 15 brokers – 15 500 partitions (réplication facteur 2) – En entrée ● 400 000 msg / sec. ● 70 Mo / sec. – En sortie ● 400 Mo / sec.
  10. 10. Introduction Adoption de Kafka & Cas d'utilisation ● LinkedIn – flux d'activité, suivi indicateurs opérationnels, bus de données – 400 nodes, 18k topics, 220 milliards msg/day (pic 3.2 millions msg/s), Mai 2014 ● OVH : Anti-DDOS ● Netflix : Suivi temps réel, traitement temps réel ● Twitter : Composant de leur architecture temps réel, couplée à Storm ● Spotify : Traitement de log (de 4h à 10s), Hadoop ● Loggly : Collecte et traitement de log ● Mozilla : Gestion de métrique ● Airbnb, Cisco, Gnip, InfoChimps, Ooyala, Square, Uber, …
  11. 11. Introduction Pourquoi Apache Kafka ? On va imaginer que vous collectez vos logs!
  12. 12. Introduction Pourquoi Apache Kafka ? Jusqu'ici tout va bien !
  13. 13. Introduction Pourquoi Apache Kafka ? Là ça va encore !
  14. 14. Introduction Pourquoi Apache Kafka ? Mais là ? Diriez-vous la même chose ?
  15. 15. Introduction Pourquoi Apache Kafka ? Je n'en suis pas si sûr !
  16. 16. Introduction Pourquoi Apache Kafka ? Un bel exemple celui de Spotify. https://www.jfokus.se/jfokus14/preso/Reliable­real­time­processing­with­Kafka­and­Storm. pdf (Feb 2014)
  17. 17. Introduction Pourquoi Apache Kafka est-il si rapide ? ● Écritures rapides: – Bien que Kafka persiste toutes les données sur le disque, toutes les écritures vont essentiellement « page cache » de l'OS, soit la RAM. ● Lectures rapides: – Très efficace pour transférer des données à partir du « page cache » vers une socket réseau – Linux: sendfile() appel système ● « Zéro-copy » ● Combinaison des deux = rapide Kafka! ● Compression de bout en bout
  18. 18. Agenda Introduction c'est quoi Apache Kafka Concepts élémentaires Topics, partitions, offsets, réplicas producteur, brokers ,consommateurs, Ecosystème
  19. 19. Concepts élémentaires Vue Globale ● Les producteurs publient des données vers les brockers. ● Les consommateurs s'abonnent et récupèrent les données depuis les brockers. ● Tous les services sont distribués ● Les données – Les données sont stockées dans des topics. – Les topics sont divisés en partitions, et sont répliqués.
  20. 20. Concepts élémentaires Vue Globale « broker » = serveur Partitions : distribuées et répliquées sur les brokers (donc les serveurs) topic = « zerg.hydra »
  21. 21. Topic: correspond au nom du flux sur lequel les messages vont être publiés • Par exemple : “zerg.hydra” Kafka élague depuis la “tête” en se basant sur l'âge ou la taille maximale or la « clé » Kafka topic Broker(s) Concepts élémentaires Topics Nouv. Producteur A1 Producteur A2 … Producteur An Les producteurs ajoutent toujours à la fin du de la file (penser à l'ajout dans un fichier) … anciens messages Nouveaux messages
  22. 22. Les consommateurs emploient un « pointeur de lecture » ( “offset pointer”) pour tracer et contrôler là où il en est (et décide Consommateur groupe C2 du rythme de consommation) Kafka topic Broker(s) Concepts élémentaires Topics Nouv. Producteur A1 Producteur A2 … Producteur An … Consommateur groupe C1 anciens messages Nouveaux messages
  23. 23. Concepts élémentaires Message Protocole léger Traitement des messages par lot (Producteur & Consommateur) Compression de bout en bout taille Version Message Checksum Payload
  24. 24. Concepts élémentaires Partitions Les partitions – Ordonnées – Séquence immuable – Le nombre de partitions détermine le nombre maximum de (groupes de) consommateurs
  25. 25. Concepts élémentaires partition offsets ● A chaque message est attribué un « id » unique et trié appelé « offset ». Les consommateurs déplacent leur pointeur via la combinaison (offset, partition, topic) Consommateur groupe 1
  26. 26. Concepts élémentaires réplicas ● Uniformément distribués ● « sauvegarde » des partitions ● Existent uniquement pour éviter les pertes de données ● Si numReplicas == 3 alors 2 brokers peuvent tomber logs ttooppiicc11--ppaarrtt11 broker 1 logs ttooppiicc11--ppaarrtt22 ttooppiicc22--ppaarrtt22 broker 2 logs ttooppiicc22--ppaarrtt11 ttooppiicc11--ppaarrtt11 broker 3 logs ttooppiicc11--ppaarrtt22 broker 4 ttooppiicc22--ppaarrtt22 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt22 ttooppiicc22--ppaarrtt11 ttooppiicc22--ppaarrtt22 ttooppiicc22--ppaarrtt11
  27. 27. Concepts élémentaires réplicas Flux de réplication broker 1 Producteur leader follower broker 2 follower broker 3 4 2 2 3 commit Accusé de réception ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 Consommateur 1 Type de « Récepton Accusé » par le Producteur ? Latence Durabilité en cas de faille Pas d'accusé de récepton Pas de retard réseau qlq données perdues Attente de l'électon du leader 1 aller-retour du réseau Peu de données perdues Attente de validaton (commit) 2 allers-retours du réseau Pas de perte de données Seules les donnés validées sont présentées au consommateur
  28. 28. Concepts élémentaires réplicas Flux de réplication follower follower ttooppiicc33--ppaarrtt11 Producteur broker 1 broker 2 follower follower follower ttooppiicc33--ppaarrtt11 broker 3 leader ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 ttooppiicc11--ppaarrtt11 follower ttooppiicc33--ppaarrtt11 broker 4 leader Producteur ttooppiicc22--ppaarrtt11 Producteur leader ttooppiicc22--ppaarrtt11 ttooppiicc22--ppaarrtt11 http://kafka.apache.org/documentation.html#replication
  29. 29. Concepts élémentaires Producteurs Publier des messages dans Kafka – C'est assez simple – Vous pouvez aussi directement agréger vos traces Log4J – Liste complète des exemples https://cwiki.apache.org/confluence/display/KAFKA/0.8.0+Produce r+Example
  30. 30. Concepts élémentaires Producteurs API – ProducerType (sync/async) – CompressionCodec (none/snappy/gzip) – BatchSize – EnqueueSize/Time – Encoder/Serializer – Partitioner – #Retries – MaxMessageSize – …
  31. 31. Concepts élémentaires Consommateurs Possibilité d'utiliser un consommateur pour publier dans Kafka Les consommateurs sont responsables de vérifier où ils en sont dans leur lecture Il y a une API simple, et une autre bien plus performante – High-level (consumer group, auto-commit) – Low-level (simple consumer, manual commit)
  32. 32. Concepts élémentaires Consommateurs API
  33. 33. Agenda Introduction Apache Kafka, qu'est-ce que c'est ? Concepts élémentaires Topics, partitions, replicas, offsets Producteurs, brokers, consommateurs Écosystème
  34. 34. Écosystème Intégration Consommateur • Java (in standard dist) • Scala (in standard dist) • Python: kafka-python • Python: samsa • Python: brod • Go: Sarama • Go: nuance • Go: kafka.go • C/C++: libkafka • Clojure: clj-kafka • Clojure: kafka-clj • Ruby: Poseidon • Ruby: kafka-rb • Ruby: Kafkaesque • Jruby::Kafka • PHP: kafka-php(1) • PHP: kafka-php(2) • Node.js: Prozess • Node.js: node-kafka • Node.js: franz-kafka • Erlang: erlkafka • Erlang: kafka-erlang Producteurs • Java (in standard dist) • Scala (in standard dist) • Log4j (in standard dist) • Logback: logback-kafka • Udp-kafka-bridge • Python: kafka-python • Python: pykafka • Python: samsa • Python: pykafkap • Python: brod • Go: Sarama • Go: kafka.go • C: librdkafka • C/C++: libkafka • Clojure: clj-kafka • Clojure: kafka-clj • Ruby: Poseidon • Ruby: kafka-rb • Ruby: em-kafka • PHP: kafka-php(1) • PHP: kafka-php(2) • PHP: log4php • Node.js: Prozess • Node.js: node-kafka • Node.js: franz-kafka • Erlang: erlkafka
  35. 35. Écosystème Intégration Intégratons connues Stream Processing Storm - A stream-processing framework. Samza - A YARN-based stream processing framework Spark Hadoop Integraton Camus - LinkedIn's Kafka=>HDFS pipeline. This one is used for all data at LinkedIn, and works great. Kafka Hadoop Loader A diferent take on Hadoop loading functionality from what is included in the main distribution. AWS Integraton Automated AWS deployment Kafka->S3 Mirroring Logging klogd - A python syslog publisher klogd2 - A java syslog publisher Tail2Kafka - A simple log tailing utility Fluentd plugin - Integration with Fluentd Flume Kafka Plugin - Integration with Flume Remote log viewer LogStash integration - Integration with LogStash and Fluentd Official logstash integration Metrics Mozilla Metrics Service - A Kafka and Protocol Bufers based metrics and logging system Ganglia Integration Packing and Deployment RPM packaging Debian packaginghtps://github.com/tomdz/kafka-deb-packagi ng Puppet integration Dropwizard packaging Misc. Kafka Mirror - An alternative to the built-in mirroring tool Ruby Demo App Apache Camel Integration Infobright integration
  36. 36. Écosystème Intégration Kafka + X pour le traitement des données – Storm, Spark, Samza – Akka Actors, Java multi-thread – Camus : de Kafka à Hadoop PPrroodduucceerr PPrroodduucceerr PPrroodduucceerr Kafka topic1 Kafka topic2 PPrroocceessss11 PPrroocceessss11 PPrroocceessss11 PPrroocceessss22 PPrroocceessss22 PPrroocceessss22 SSyysstteemm11 SSyysstteemm22
  37. 37. Écosystème Architecture Matérielle ● Machines uniquement dédiées à Kafka, rien d'autre – 1 instance d'un broker Kafka par machine – 2 x 4-core Intel Xeon (ou plus) – 64 GB RAM (up from 24 GB) ● Seuls 4 GB sont utilisés par le broker Kafka, les 60 GB restants pour page cache ● Disques – RAID10 avec 14 spindles – Plus il y a de spindles, plus le débit du disque est important – 8x SATA drives (7200rpm) JBOD ● Réseau – 1 GigE de préférence
  38. 38. A défaut d'un bon livre, une très bonne ressource pour débuter Apache Kafka 0.8 basic training http://www.slideshare.net/miguno/apache­kafka­08­basic­training­verisign
  39. 39. Questons
  40. 40. Merci ! Charly CLAIRMONT CTO ALTIC http://altic.org charly.clairmont@altic.org @egwada @ALtic_Buzz

×