0

Je cherche des suggestions/solutions pour la mise en œuvre d'un flux de travail d'archivage à grande échelle de données. La source de données sont les messages dans kafka. Lequel est écrit en temps réel. La destination est le compartiment S3. J'ai besoin de partitionner les données en fonction d'un champ dans le message. Pour chaque partition, j'ai besoin de traiter des données par lots de 100 Mo, puis de le télécharger. Le débit de données est ~ 5 Go/Minute. Ainsi, le lot de 100 Mo devrait être rempli en quelques secondes.Trafic en temps réel par lots et uploadé vers S3

Mon problème concerne la mise à l'échelle et le traitement par lots. Depuis que j'ai besoin de données de lot et de compression pour un "champ" dans le message, je dois rassembler cette partie de données par partitionnement. Des suggestions sur la technologie/le flux de travail?

+1

Regardez dans Kinesis Firehose, qui prend des lectures et les met dans S3. Aucune garantie de commande, vous devez organiser la ré-envoi d'un petit pourcentage d'échecs (0,01 ~ 0,1% en moyenne), mais rapide et facile. – l0b0

+0

J'ai besoin de garanties de données très strictes sur la perte de données. La perte de données n'est pas acceptable. La garantie de commande n'est pas nécessaire –

+0

Aucune perte de données avec le connecteur S3 pour Kafka. Vous pouvez également mettre dans n'importe quelle politique de lot que vous voulez. La mise à l'échelle d'un connecteur est également triviale. http://docs.confluent.io/current/connect/connect-storage-cloud/kafka-connect-s3/docs/s3_connector.html – dawsaw

Répondre

1

Vous pouvez utiliser Apache spark pour effectuer des processus de mise à l'échelle et de traitement par lots. Donc, fondamentalement, le flux peut ressembler à ceci:

Apache Kafka -> Apache Spark -> Amazon S3.

L'API Spark Streaming permet le traitement évolutif, à haut débit et tolérant aux pannes, des flux de données en direct. Les données peuvent être ingérées à partir de nombreuses sources comme Kafka et peuvent être traitées en utilisant des algorithmes complexes tels que des fonctions de haut niveau telles que map, reduce, join et window. Enfin, les données traitées peuvent être exportées vers des systèmes de fichiers comme Amazon S3.