Kafka Connect & Kafka Streams - Paris Kafka User Group
05/18/2016
http://www.meetup.com/fr-FR/Paris-Apache-Kafka-Meetup/events/230324870/
Code : https://github.com/hriviere/demo-kafka-connect-streams
S.M.A.C.K, Spark-Mesos-Akka-Cassandra-Kafka, fait partie des nouvelles générations d’architectures “BigData” open source proposant une alternative et / ou une complémentarité à Hadoop / Map-Reduce.
À la différence the Hadoop / Map-Reduce qui fournit une architecture permettant de paralléliser les I/O disque et réseau, S.M.A.C.K utilise d’avantage la mémoire ce qui permet de libérer les CPUs des tâches de I/O et ainsi augmenter les capacités de calcul pour un même cluster. L’architecture S.M.A.C.K, et Spark en particulier, est particulièrement plébiscitée par la communauté autour de la Data Science.
Il s’agit d’une architecture ”BigData” très populaire qui se trouve être un assemblage de services spécialisés à la différence d’une solution unique implémentant une liste de patterns et principes ce qui lui apporte une grande flexibilité mais également une certaine complexité.
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
Ce talk est un retour d’expérience sur la mise en œuvre de Spark et Streaming Spark. Nous aborderons :
La collecte des données à la volée dans l’application Web avec Akka
La séparation des producteurs et consommateurs avec Kafka
La transformation des données avec Spark et Streaming Spark
Le déploiement sur un cluster avec Apache Mesos
S.M.A.C.K, Spark-Mesos-Akka-Cassandra-Kafka, fait partie des nouvelles générations d’architectures “BigData” open source proposant une alternative et / ou une complémentarité à Hadoop / Map-Reduce.
À la différence the Hadoop / Map-Reduce qui fournit une architecture permettant de paralléliser les I/O disque et réseau, S.M.A.C.K utilise d’avantage la mémoire ce qui permet de libérer les CPUs des tâches de I/O et ainsi augmenter les capacités de calcul pour un même cluster. L’architecture S.M.A.C.K, et Spark en particulier, est particulièrement plébiscitée par la communauté autour de la Data Science.
Il s’agit d’une architecture ”BigData” très populaire qui se trouve être un assemblage de services spécialisés à la différence d’une solution unique implémentant une liste de patterns et principes ce qui lui apporte une grande flexibilité mais également une certaine complexité.
Realtime Web avec Akka, Kafka, Spark et Mesos - Devoxx Paris 2014Ippon
Ce talk est un retour d’expérience sur la mise en œuvre de Spark et Streaming Spark. Nous aborderons :
La collecte des données à la volée dans l’application Web avec Akka
La séparation des producteurs et consommateurs avec Kafka
La transformation des données avec Spark et Streaming Spark
Le déploiement sur un cluster avec Apache Mesos
Slides de la présentation "Cassandra Java Driver" à l'Ippevent du 20 juin 2013
http://blog.ippon.fr/2013/06/03/ippevent-utiliser-les-nouvelles-apis-cassandra-le-2-juin-2013/
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...GUSS
Quel quorum de cluster choisir ? Dans quelle situation ? Je dois utiliser des réplicas en lecture seule ? Quels sont les impacts ? Que dois-je surveiller sur mon infrastructure ? Quels outils à disposition pour troubleshooter d’éventuels problèmes SQL Server AlwaysOn ou du cluster Windows ? Autant de questions auxquelles nous répondrons au cours de cette session. Session présentée lors du SQLSaturday Paris 2014
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
Apache Cassandra - Concepts et fonctionnalités, 25/02/2014
Présentation de Cassandra pour le premier évènement "Lyon Cassandra Users" (organisé par DataStax & Zenika).
* Présentation de Cassandra
* Concepts clés (Théorie & Architecture)
* Installation
* Les outils DataStax : DevCenter et OpsCenter
* Modèle de données
* Requêtes
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
Découvrez au cours de cette présentation le fonctionnement de la base de données Cassandra.
- Qu'est-ce que Cassandra ?
- Pourquoi l'utiliser ?
- Comment l'utiliser ?
- Comment la mettre en œuvre ?
Cette présentation a été jouée lors de l'IppEvent qui a eu lieu le 2017-03-02 dans les locaux d'OVH Lyon. Elle fait partir du temps fort Big Data 2017 https://blog.ippon.fr/2017/03/01/un-mois-de-mars-100-big-data/.
Merci à l'équipe d'OVH pour son accueil chaleureux.
REX sur la mise en place d'une plate-forme temps réel chez Generali. La problématique est la suivante : comment réaliser une vision clients 360, et donc une vue agrégée est uniformisée de différents référentiels clients localisés sur divers systèmes, ayant chacun un modèle propre.
• Comment installer Apache Flink sur votre PC ou Mac et comment se familiariser avec CLI, Job Client Web interface et Job Manager Web Interface?
• Comment développer une application Big Data en Java / Scala en utilisant un IDE?
• Comment développer avec Apache Flink en mode interactif avec Flink Shell ou Zeppelin Notebook (Scala)?
http://www.meetup.com/fr/Paris-Apache-Flink-Meetup/events/225577395/
Présentation faite à Devoxx France 2016.
Découvrez pourquoi et comment nous avons migré notre application sur Amazon en utilisant toute la puissance des services managés. Kafka est devenu Kinesis, Couchbase est devenu DynamoDB et en plus de ces mutations nos serveurs ont disparu !
Ez18n Annotation Processing Tool in a nutshellgdigugli
APT qu'est ce que c'est
appeler en ligne de commande
appeler APT depuis maven
l'API javax.tools - hierarchie des classes
Processor
meta model d'un fichier source java
comparaison avec java.lang.reflect
limitation par rapport à java.lang.reflect
ca sert à quoi ?
pattern avec injection - je fais un framework
analyse et transformation de code vers des fichiers plats
DSL avec des annotations
no limit ... attention aux dépendances
compilation une ou deux passes ?
APT dans mon IDE
Slides de la présentation "Cassandra Java Driver" à l'Ippevent du 20 juin 2013
http://blog.ippon.fr/2013/06/03/ippevent-utiliser-les-nouvelles-apis-cassandra-le-2-juin-2013/
SQLSaturday Paris 2014 - SQL Server AlwaysOn et les groupes de disponibilités...GUSS
Quel quorum de cluster choisir ? Dans quelle situation ? Je dois utiliser des réplicas en lecture seule ? Quels sont les impacts ? Que dois-je surveiller sur mon infrastructure ? Quels outils à disposition pour troubleshooter d’éventuels problèmes SQL Server AlwaysOn ou du cluster Windows ? Autant de questions auxquelles nous répondrons au cours de cette session. Session présentée lors du SQLSaturday Paris 2014
Apache Cassandra - Concepts et fonctionnalitésRomain Hardouin
Apache Cassandra - Concepts et fonctionnalités, 25/02/2014
Présentation de Cassandra pour le premier évènement "Lyon Cassandra Users" (organisé par DataStax & Zenika).
* Présentation de Cassandra
* Concepts clés (Théorie & Architecture)
* Installation
* Les outils DataStax : DevCenter et OpsCenter
* Modèle de données
* Requêtes
Introduction à Apache Cassandra — IppEvent chez OVH 2017-03-02Jérôme Mainaud
Découvrez au cours de cette présentation le fonctionnement de la base de données Cassandra.
- Qu'est-ce que Cassandra ?
- Pourquoi l'utiliser ?
- Comment l'utiliser ?
- Comment la mettre en œuvre ?
Cette présentation a été jouée lors de l'IppEvent qui a eu lieu le 2017-03-02 dans les locaux d'OVH Lyon. Elle fait partir du temps fort Big Data 2017 https://blog.ippon.fr/2017/03/01/un-mois-de-mars-100-big-data/.
Merci à l'équipe d'OVH pour son accueil chaleureux.
REX sur la mise en place d'une plate-forme temps réel chez Generali. La problématique est la suivante : comment réaliser une vision clients 360, et donc une vue agrégée est uniformisée de différents référentiels clients localisés sur divers systèmes, ayant chacun un modèle propre.
• Comment installer Apache Flink sur votre PC ou Mac et comment se familiariser avec CLI, Job Client Web interface et Job Manager Web Interface?
• Comment développer une application Big Data en Java / Scala en utilisant un IDE?
• Comment développer avec Apache Flink en mode interactif avec Flink Shell ou Zeppelin Notebook (Scala)?
http://www.meetup.com/fr/Paris-Apache-Flink-Meetup/events/225577395/
Présentation faite à Devoxx France 2016.
Découvrez pourquoi et comment nous avons migré notre application sur Amazon en utilisant toute la puissance des services managés. Kafka est devenu Kinesis, Couchbase est devenu DynamoDB et en plus de ces mutations nos serveurs ont disparu !
Ez18n Annotation Processing Tool in a nutshellgdigugli
APT qu'est ce que c'est
appeler en ligne de commande
appeler APT depuis maven
l'API javax.tools - hierarchie des classes
Processor
meta model d'un fichier source java
comparaison avec java.lang.reflect
limitation par rapport à java.lang.reflect
ca sert à quoi ?
pattern avec injection - je fais un framework
analyse et transformation de code vers des fichiers plats
DSL avec des annotations
no limit ... attention aux dépendances
compilation une ou deux passes ?
APT dans mon IDE
Au cours des 10 précédentes années, nous avons eu des sessions de Devoxx FR et plusieurs versions dont certaines majeures de Java.
L’objectif de ce talk est de revenir rétrospectivement sur certaines annonces et sur certaines des nombreuses évolutions de Java, notamment récentes afin d’en profiter dans nos applications. Au-delà des évolutions syntaxiques et dans les API, ce sera aussi l’occasion de justifier la migration vers des versions plus récentes de Java.
Déploiement d'un serveur CAS
(nouveau packaging Esup cas-toolbox v4)
présenté lors des Esup-Days 19 & Apereo Europe (5-6 février 2015) : https://www.esup-portail.org/wiki/pages/viewpage.action?pageId=439255076
Dans cette présentation, nous donnons plusieurs réponses aux grandes questions classiques associées au déploiement avec Docker. Entre autres :
- comment orchestrer des déploiements non triviaux (plusieurs containers sur plusieurs machines) ?
- comment avoir des métriques sur les ressources utilisées par les containers ?
- comment optimiser les performances de Docker, en particulier pour des applications où ces performances sont critiques ?
- comment intégrer Docker avec des outils de "configuration management" comme Puppet, Chef, Salt, Ansible ?
- comment implémenter la "service discovery", ou, de manière générale, connecter entre eux plusieurs containers ?
La présentation a été donnée Lundi 8 Septembre à Paris dans les locaux de Zenika, cabinet spécialisé dans l'architecture informatique et les méthodes Agiles possédant une triple compétence de conseil, réalisation et formation.
Si la baisse de la productivité est effective dans toutes les économies développées... elle est particulièrement marquée en France. Au niveau national, cet essoufflement touche tous les secteurs, et plus particulièrement celui de l’industrie, usuellement caractérisé par des gains de productivité élevés. Depuis la crise Covid, le secteur industriel contribue pour 35 % environ à cette perte, alors qu’il ne représente que 9,3 % de la valeur ajoutée nationale brute en 2023. Dans ce contexte, est-il possible de mener une politique de réindustrialisation du pays sans y associer un objectif de hausse des gains de productivité ?Non rappelle ce Cube. Au contraire, ces deux objectifs, jusqu’alors indépendants l’un de l’autre, sont désormais deux défis à relever conjointement. En analysant les différents explications à la baisse de celle-ci observée en France et dans les autres économies développées, ce Cube suggère que l’augmenter en parallèle d’une politique de réindustrialisation sous-entend une réallocation des facteurs de production vers les entreprises industrielles à fort potentiel. Elle suppose également une une meilleure affectation des ressources.
5. Script / application java “home made” avec
des producers et/ou consumers
Avantage : flexibilité
Inconvénients : Pas toujours trivial, load
balancing ?, fail over ?, standard de
développement ?
Source : xkcd
6. Utiliser un connecteur spécifique déjà
existant (connecteur Elastic, Camus….)
ou un ETL (Talend…)
Avantage : plug & play !
Inconvénients : Pas de standard,
chaque connecteur doit être installé /
configuré / monitoré spécifiquement
Source : xkcd
7. Utiliser Spark (streaming), Storm,
Samza…
Avantages : Fail over, load balancing
Inconvénients : Un nouveau cluster à
installer, connaissance du framework,
luxueux pour de l’ingestion de données
?
Source : made-in-bed-productions.tumblr.com
8. Utiliser Kafka Connect !
Avantages :
• Déjà inclus dans Kafka
• Connecteurs déjà implémentés ou
possibilité d’écrire les siens
• Mutualisation configuration / runtime
des connecteurs
• Introduit des standard de
développements / utilisation
• Profite de l’ensembles des
fonctionnalités de Kafka (fail-over / load
balancing…)
9. Depuis Kafka 0.9+ (déjà inclus dans la distribution)
Comprend :
• Des API (interfaces Java)
• Moteurs d’exécution (standalone ou cluster)
• Service REST de monitoring
10. 2x2 interfaces Java : SourceConnector, SourceTask / SinkConnector, SinkTask
Créer un connecteur : implémenter le couple interface Source et /
ou Sink
Load balancing, failover, offset déjà partiellement implémentés (on
indique le comportement)
Pas envie de coder ? : utiliser une implémentation « officielle »
http://www.confluent.io/developers/connectors
11. Standalone : une instance du connecteur (java –cp …)
Usage : test, lecture / et ou écriture d’un fichier sur un nœud spécifique
Cluster : N instances du connecteur sur N nœuds
Usage : Fail-over / load balancing
Exemple : Ecriture d’un topic vers HDFS en HA
Prérequis : Démarrer des workers Kafka Connect pour constituer le cluster
12. En mode cluster :
Pas de maitre-esclave
Déploiement des connecteurs sur les workers via service REST
• Indication nom de la classe
• Nombre d’instance voulue
• Configuration
Utilisation en arrière-plan des consumer groups (cf. présentation
précédente )
16. Kafka Streams Spark streaming, Flink , Storm ...
Outils nécessaires Kafla uniquement Kafka + cluster Spark ou Flink ou Storm ou
….
Connaissances requise Kafka + API Kafka Streams Kafka + API framework + comportement
framework (config., HA….)
Gestionnaire de ressource NON OUI
Déploiement Une ou plusieurs application java (java -jar….)
Uniquement Java est requis
Via le cluster du framework
Usage de Kafka • Source / cible / données intermédiaires /
metadata
• Topics « classiques », topics compactés et topic
avec une unique partition
• Source et cible uniquement
• Généralement des topics « classiques »
partitionnés
Et Samza ? : Kafka Streams ≈ Samza sans gestionnaire de ressource (même philosophie)
17. • Même projet que Kafka
• A partir de Kafka 0.10 (release prévue pour dans quelques
semaines). Directement dans distribution Kafka
• Tech preview disponible sur http://www.confluent.io/developer#streamspreview
Kafka 0.10 actuellement en release candidate
A utiliser à vos risques et périls
18. Clé Valeur
Lundi 1
Jeudi 4
Lundi 2
Vendredi 3
Lundi 2
• Kstreams : Transformation map ou filter sur un flux
de données
• Pas d’agrégation
• Pas d’état conservé
KStream<String, Long> stream = builder.stream(new StringDeserializer(), new LongDeserializer(), "semaine"):
KStream<String, Long> lundiStream = stream.filter((k, v) -> k.equals("lundi"));
lundiStream.to("lundi-stream");
Topic lundi-stream : (lundi,1), (lundi,2), (lundi,2)
20. • Pour permettre parallélisme : autant de KTables que de partitions du topic
source !
• Persistance des KTables via des Stores
• In-Memory
• RocksDB (runtime) + topic compacté Par défaut
• Sa propre implémentation
• Au démarrage de l’application, les stores retrouvent leurs états via le topic de
sauvegarde
• Si fenêtre glissante : uniquement les données nécessaires conservées
23. Topic source
Partition 1
Partition 2
Nœud 1
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Instanciation du KTable du
nœud 2 sur le nœud 1
24. Topic source
Partition 1
Partition 2
Nœud 1
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Le KTable recharge son
état grâce à la partition du
topic de sauvegarde
25. Topic source
Partition 1
Partition 2
Nœud 1
Topic Cible
Partition 1
Partition 2
Partition 3
Partition 1
Partition 2
Topic de sauvegarde des KTables
Une fois la Ktable
synchronisée,
consommation des
messages de la partition 2