principes et pratiques Kafka - pile de technologie de plate-forme cloud

plate-forme Cloud public 0-1 n ° comme il était préoccupé par son

EXAMEN: Avant de publier la pile de la technologie de plate-forme cloud (ps: Cliquer pour voir), parler principalement de Kafka eux!

1, la compréhension Kafka

A propos de Kafka 1.1

Kafka est une plate-forme de diffusion multimédia en continu distribué

site officiel kafka: http: //kafka.apache.org/

(1) plateforme de streaming de médias a trois fonctions clés:

  •  Publier et abonnez-vous flux enregistrement, similaire à la file d'attente de messages ou les systèmes de messagerie d'entreprise.
  •  Dans stockage à tolérance de panne de manière persistante flux enregistré.
  •  Lorsque le flux de traitement d'enregistrement se produit.

(2) Kafka couramment utilisé pour deux types d'applications:

  •  La construction de l'acquisition de données fiable conduite en continu et en temps réel ou des données entre les applications du système.
  •  La construction de la conversion ou en réponse à diffusion en temps réel flux de données d'application.

Pour savoir comment faire ces choses Kafka, la fouille let dans la capacité de Kafka.

(3) Tout d'abord, plusieurs concepts:

  •  Kafka comme un groupe en cours d'exécution sur un ou plusieurs serveurs sur plusieurs centres de données.
  •  groupe Kafka à la catégorie de magasin appelé sujets thème du flux enregistré.
  •  Chaque enregistrement contient une clé, une valeur et un horodatage.

(4) Kafka a quatre API de base:

  • API Producteur (API producteur) permet aux applications de publier le flux enregistré à un ou plusieurs des sujets kafka (thèmes).
  • API à la consommation (API de consommation) permet aux applications de souscrire un ou plusieurs sujets (sujets), et traite le flux de données généré par leur dossier.
  • Streams API (API de flux) permet aux applications d'agir en tant que processeur d'écoulement, à partir de l'un ou plusieurs flux d'entrée Topics (sujets) consommés, et génère un flux de sortie à un ou plusieurs sujets (sujets) de sortie, transformer efficacement la le flux d'entrée pour le flux de sortie.
  •  API de connecteur (API connecteur) permet la construction et l'exploitation de sujets kafka (en la matière) est connecté à une application existante ou réutiliser le producteur de données ou un système de consommation. Par exemple, un connecteur de base de données relationnelle pour capturer toutes les modifications possibles à la table.

 Dans Kafka, la communication entre le client et le serveur est un simple, de haute performance, le protocole TCP indépendant de la langue terminée. Cet accord a été versionné et maintenir la compatibilité avec les anciennes versions. Kafka fournit un client Java, mais le client est disponible en plusieurs langues.

1.2 thèmes et partitions Sujets partition

 Nous avons d'abord une compréhension en profondeur de l'âme abstraction Kafka à enregistrer des flux - les sujets à thème

 message Sujet d'un peut être considéré comme un groupe, chaque sujet est divisé en une pluralité de partitions (zone), à chaque niveau de partition est le stockage ajout du fichier journal

 Thème est publié des enregistrements du nom de la source de la catégorie ou l'abonnement. Le thème de Kafka est toujours un multi-utilisateur, qui est, un sujet peut avoir zéro, un ou plusieurs consommateurs souscrivent à écrire ses données.

 Pour chaque sujet, groupe Kafka maintient le journal des partitions qui ressemble à:

 Chaque partition est un ordre, l'ordre immuable des dossiers, attaché à soumettre constamment journal structuré. L'enregistrement de chaque partition se voit attribuer un numéro appelé l'identificateur de séquence de décalage, qui identifie de façon unique chaque enregistrement de la partition.

 groupe Kafka a persisté tous les enregistrements ont été libérés - indépendamment du fait que l'utilisation - en utilisant la période de rétention configurable. Par exemple, si la politique de rétention est fixée pour deux jours, puis libéré deux jours après l'enregistrement, il est disponible pour une utilisation, après quoi ils sont mis au rebut pour libérer de l'espace. La performance de Kafka en termes de taille des données est pratiquement constante, afin que le stockage à long terme des données ne sont pas un problème.

 En fait, la seule réserve basée sur les métadonnées de chaque consommateur que le consommateur ou la position décalée dans le journal. Ce décalage est contrôlé par le consommateur: la lecture d'enregistrement des consommateurs en général augmentent de façon linéaire son décalage, mais en fait, la position du contrôle par le consommateur, afin qu'il puisse suivre un ordre, comme leur historique d'achat. Par exemple, les consommateurs peuvent être remis à zéro aux décalages anciens de retraiter les données antérieures, ou sauter les dossiers les plus récents et de « maintenant » pour commencer à dépenser.

 Ces caractéristiques combinées signifient que les consommateurs des consommateurs Kafka très pas cher - ils peuvent aller et de venir et a peu d'impact sur le cluster ou d'autres consommateurs. Par exemple, vous pouvez utiliser notre commande contenu en ligne d'outils « queue » un sujet sans avoir à changer tous les utilisateurs de contenu existants consomment.

 partition journal a une variété d'utilisations. Tout d'abord, ils permettent la taille du journal dépasse l'extension appropriée à un seul serveur. Chaque partition individuelle doit être adapté à l'hébergement sur ses serveurs, mais le sujet peut avoir plusieurs partitions, il peut gérer un certain nombre de données. En second lieu, ils servent le parallélisme de l'unité - plus.

1.3 Distribution de distribution

 Sujet de la pluralité de partitions, est répartie sur une pluralité de grappes de serveurs dans Kafka, chaque serveur (instance Kafka) est responsable de la lecture et de l'écriture des partitions des messages en fonctionnement, en plus peut également être configuré de numéro de kafka à sauvegarder (répliques) des partitions up, chaque partition sera sauvegardé sur plusieurs machines pour améliorer la facilité d'utilisation.

 D'après le programme répliqué, cela signifie que la nécessité d'une planification des sauvegardes multiples, chaque partition a un serveur comme un « leader », chef de file responsable de toutes les opérations de lecture et d'écriture, si le chef échoue, alors il y aura un autre disciple de prendre en charge (pour devenir le nouveau leader), adepte juste monotone et chef de suivi, un message de synchronisation peut être vu transporter toute la pression de la demande .. en tant que leader du serveur, donc de l'examen global du groupe, le nombre de partitions vous dire combien un « leader », Kafka « leader » équilibré dispersés dans chaque cas, afin d'assurer une performance stable dans l'ensemble.

1.4 Producteurs producteurs et consommateurs consommateurs

1.4.1 Producteurs Producteurs

 Les producteurs publient des données sur les sujets sujets spécifiés. Pendant ce temps, producteur peut décider quels messages appartiennent à cette partition, par exemple, sur la base de manière « round-robin » ou par un autre algorithme.

Les consommateurs 1.4.2

  • Essentiellement Kafka ne supporte que chaque consommateur sujet appartiennent à un groupe de consommateurs ;. A l'inverse, chaque groupe peut avoir plusieurs consommateurs envoie un message au sujet, un consommateur ne sera souscrite pour chaque groupe de consommateurs dans ce sujet. .
  • Si tous les utilisateurs ont les mêmes instances de groupe d'utilisateurs, il est enregistré sur l'utilisateur d'équilibrage de charge d'instance efficace.
  • Si tous les cas les consommateurs ont des groupes de consommateurs, chaque enregistrement sera diffusé à tous les processus consommateurs.

 Analyse: Kafka Deux serveurs de cluster, quatre partitions d'hébergement (P0-P3), comprenant deux groupes d'utilisateurs. Un groupe de consommateurs ont deux instances consommateurs, groupe de consommateurs B a quatre cas.

 Façon d'atteindre la consommation des consommateurs dans Kafka est en divisant la partition de journal sur les instances de consommation, chaque instance est réparti de façon à tout moment « juste part » consommateur exclusif. groupe dynamique processus de maintenance protocole d'adhésion est traitée par Kafka. Si la nouvelle instance de rejoindre le groupe, ils sont des autres membres du groupe de prendre en charge une partie de la partition, si l'instance de la mort, qui sera distribué à partitionner les instances restantes.

 Kafka seule sous-région a enregistré le total des commandes, plutôt que les dossiers thématiques entre les différentes partitions. Pour la plupart des applications, avec la possibilité de trier par zone clé de partition de données combinées est suffisante. Toutefois, si vous avez besoin d'enregistrer ordre total, vous pouvez utiliser le thème ne contient qu'une seule partition à réaliser, mais cela signifierait que chaque utilisateur n'a qu'un seul processus de groupe d'utilisateurs.

1.5 Les consommateurs Kafka assurer

  • Les messages envoyés à des partitions afin qu'il reçoit seront ajoutées au journal. C'est, si l'enregistrement de l'enregistrement M1 envoyé par le même créateur M2, M1 et la première transmission, il aura un décalage inférieur à M1 et M2 apparaissent plus tôt dans le journal.
  •  Des exemples de consommateurs voir les enregistrements dans l'ordre où ils sont stockés selon le journal. Pour les consommateurs, le même ordre que la consommation et les messages journaux dans l'ordre des messages.
  •  Si le thème de « replicationfactor » est N, puis permettre à l'instance kafka N-1 échoue, nous allons tolérer un maximum de défaillance du serveur N-1, sans perdre de commits à l'exploitation forestière.

1.6 Système Kafka que le message

Comment cela se compare avec le concept traditionnel d'écoulement du système e-mail d'entreprise de Kafka?

(1) Système de message traditionnel

 Il existe deux modèles sur les nouvelles traditionnelles: faire la queue et faire la queue publish-subscribe publier - abonner. Dans la file d'attente, la piscine des consommateurs peut être lu à partir du serveur et chaque enregistrement à un, publier - abonnez-vous, l'enregistrement est diffusé à tous les consommateurs. Chacun a ses avantages et inconvénients de ces deux modèles. Avantage est que faire la queue, il vous permet de diviser les données de traitement sur plusieurs instances de consommateurs, qui peuvent élargir votre traitement. Malheureusement, une fois un processus lit les données qu'il a disparu, la file d'attente ne sont pas multi-utilisateur. Publier - abonnez-vous permet aux données de diffusion de multiples processus, mais parce que chaque message envoyé à chaque abonné et ne peut pas être long processus.

 Le concept de Kafka de groupes de consommateurs résument ces deux concepts. Comme la file d'attente, les groupes d'utilisateurs permettent de procédé est divisé en un ensemble de processus (un membre du groupe d'utilisateurs). Et publier - abonnez-vous, comme, Kafka vous permet de diffuser un message à plusieurs groupes de consommateurs.

(2) l'avantage Kafka

 Avantages modèle Kafka est que chaque thème a ces propriétés - il peut être étendu et gérer aussi plusieurs utilisateurs - pas besoin de choisir l'un d'entre eux.

 Par rapport aux systèmes de messagerie traditionnels, Kafka a plus de garantie de commande.

 file d'attente traditionnelle afin de tenir des registres sur le serveur, si une pluralité de consommateurs de consommer la file d'attente, le dossier de distribution du serveur dans l'ordre mémorisé. Cependant, bien que le serveur distribue des documents dans l'ordre, mais le dossier est asynchrone transmis aux consommateurs, afin qu'ils puissent échouer à différents consommateurs. Cela signifie en effet que l'ordre des enregistrements perdus en présence de la consommation parallèle. Le système de messagerie est généralement de résoudre ce problème en ayant un concept de « monopole de consommation » qui permet seulement un processus consomme de la file d'attente, mais bien sûr, cela ne signifie pas que le parallélisme de traitement.

 Kafka mieux. En ayant le concept de parallélisme dans le sujet - Partition -, Kafka peut fournir l'équilibrage de charge afin d'assurer que les consommateurs et la cellule d'écoulement. Ceci est obtenu en affectant à l'utilisateur concernant les partitions de groupes d'utilisateurs de sorte que chaque partition est utilisée uniquement par un utilisateur dans le groupe. Ce faisant, nous nous assurons que les utilisateurs sont les seuls lecteurs de la partition selon l'ordre d'utiliser les données. Comme il y a beaucoup de partitions, ce qui peut encore l'équilibrage de charge par exemple de nombreux consommateurs. Notez, cependant, les instances des consommateurs du groupe de consommateurs ne peut pas dépasser les partitions.

1,7 Kafka comme un système de stockage

  •  Tout permis délivré des messages séparés et la file d'attente de messages de nouvelles du consommateur agit en fait comme un système de stockage des messages en cours. Kafka se distingue en ce qu'elle est un système de stockage très bon.
  •  Kafka écrit les données sont écrites sur le disque et la réplication pour la tolérance aux pannes. Kafka permet aux producteurs d'attendre la confirmation, afin d'écrire n'est pas considérée comme complète jusqu'à ce que la réplication est terminée, et même si le serveur ne la garantie écrite de reste également écrit.
  •  Structure de disque Kafka bonne utilisation de l'échelle - que ce soit il y a 50 Ko ou 50 To de données persistantes sur le serveur, Kafka effectuera la même opération.
  •  Parce que sérieusement le stockage et permettre aux clients de contrôler la position de lecture, vous pouvez Kafka comme haute performance dédié à faible latence de stockage journal engagement, la reproduction et la diffusion du système de fichiers spéciaux distribués.
  • Pour plus d'informations de conception de stockage et de réplication journal présenté par Kafka, lisez cette page.

1.8 Kafka pour le traitement flux

  •  Lecture seule, écriture et flux de données de stockage ne sont pas suffisantes pour obtenir un débit de traitement en temps réel.
  •  Dans Kafka, l'entrée de flux à partir des moyens de processeur se rapportant à obtenir un flux de données continu, effectuer quelque chose sur cette entrée et générer un certain traitement pour délivrer en sortie le thème de flux de données continu.
  •  Par exemple, une application de vente au détail peut recevoir un flux d'entrée des ventes et des livraisons, réorganisez et de sortie et d'ajustement de prix calculé sur la base de ces données.
  •  Les producteurs et les consommateurs peuvent utiliser une API simple, directement traitée. Cependant, pour la conversion plus complexe, Kafka fournit une API de flux entièrement intégré. Ceci permet la construction de processus d'exécution d'application non triviale, ces applications peut circuler dans la polymérisation ou couler ensemble.
  •  Cet outil aide à résoudre les problèmes rencontrés par ces applications: traitement de données de commande, re-traitement de l'entrée dans les modifications du code, effectuer le calcul stateful.
  •  La construction des primitives API de courant de base fourni Kafka: il utilise les producteurs d'entrée de l'API et les consommateurs, pour une utilisation avec un stockage d'état Kafka, et en utilisant le même mécanisme de tolérance aux pannes entre le courant d'instance de processeur de groupe.

2, les scénarios d'utilisation Kafka

Messagerie 2.1 Message

 Kafka alternative au courtier de messages plus traditionnels. courtier de messages en utilisant une variété de raisons (le processus de séparation, le générateur de données, un message non traité de tampon, etc.). Par rapport à la plupart des systèmes de messagerie, Kafka a un meilleur débit, le partitionnement natif, la réplication et la tolérance aux pannes, ce qui en fait une solution idéale pour les applications de traitement de l'information à grande échelle.

 Selon l'expérience, l'utilisation du passage de messages est généralement relativement faible, mais peut nécessiter retard d'extrémité inférieure et dépend généralement de fortes garanties de durabilité fournies Kafka.

 Dans ce domaine, Kafka comparable avec les systèmes de messagerie classiques (par exemple ActiveMQ) ou RabbitMQ.

2.2 Activité de suivi du site

 cas d'utilisation originale de Kafka est la possibilité de suivre l'activité des utilisateurs pour un groupe de reconstruction de canalisation immédiate - flux. Cela signifie que l'activité du site (pages vues, la recherche ou d'autres mesures peuvent être prises par l'utilisateur) seront publiés sur le thème central de chaque type d'activité contient un thème. Habituellement, ces sources peuvent être utilisées avec une série de cas, y compris le traitement en temps réel, le suivi en temps réel et hors ligne ou chargé dans l'entrepôt de données du système Hadoop pour le traitement et la communication hors ligne.

 Activité de suivi est généralement très élevé, car la vue de générer un grand nombre de messages d'activité pour chaque page utilisateur.

2.3 Mesures métriques

 Kafka généralement utilisé pour les données de surveillance opérationnelle. Ceci se rapporte à une polymérisation des informations statistiques à partir de l'application distribuée afin de générer les données de fonctionnement d'alimentation centralisée.

2.4 agrégation journal

 Beaucoup de gens utilisent Kafka comme des alternatives de solution d'agrégation de journal. La polymérisation est généralement recueilli fichier journal de journal physique du serveur et les place dans une position centrale (peut être un serveur de fichiers ou HDFS) traitement. Kafka détails abstraits du fichier, et le flux de messages de journal ou de données d'événements comme plus clairement abstraire. Ce procédé permet une latence plus faible et plus facilement supportent de multiples sources de données et des données de consommation distribué. Scribe Flume ou similaires par rapport dans le journal du système comme le centre, Kafka fournit même une excellente performance puisque la duplication doit assurer une plus grande durabilité, et un retard bas de gamme.

Diffusion 2,5

 De nombreux utilisateurs Kafka traitement pipeline lorsque le traitement des données par une pluralité d'étages, dans lequel les données d'entrée brutes relatives à la consommation de Kafka, puis polymérisés, ou convertis en le nouveau thème riche par d'autres moyens pour le traitement ou la consommation ultérieure plus loin.

 Par exemple, le pipeline de traitement recommandé pour les articles de presse abonner aux flux RSS de l'analyse du contenu de l'article et le publier sur le thème « article », le traitement ultérieur de ce contenu peut être normalisée ou la déduplication et le contenu de l'article nettoyé publier un nouveau thème, l'étape de traitement final peut essayer de recommander ce contenu à l'utilisateur. Ces graphiques pipeline de traitement pour créer des données en temps réel sur les flux basés sur différents thèmes. 0.10.0.0 Dès le début, ceci est une bibliothèque de traitement de flux léger mais puissant, nommé dans Apache Kafka Kafka Streams peut être utilisé pour effectuer ces données de traitement tel que décrit ci-dessus. En plus de Kafka Streams, d'autres outils de traitement de flux open source Apache et y compris la tempête Apache Samza.

2.6 Approvisionnement événement

 Event Sourcing est un style programmation d'application, dans lequel l'état passe à un ordre chronologique enregistrement séquence. le soutien Kafka pour le stockage très grand nombre de données de journaux qui en fait une excellente application back-end construit dans ce style.

2.7 journal de livraison

 Kafka peut soumettre le journal en tant que systèmes distribués externes. Ce journal permet de copier des données entre les noeuds et resynchronisation de récupération de défaillance d'un noeud servir de mécanisme pour ses données. Kafka dans la compression du journal permet de soutenir cette utilisation. Dans cette utilisation, Kafka projet similaire Apache bookkeeper.

3, l'installation Kafka

3.1 téléchargez et installez

Http://kafka.apache.org/downloads.html à le site officiel pour télécharger la version souhaitée, je suis ici télécharger la dernière version stable 2.1.0

Note: En raison de Kafka script basé sur console pour les plates-formes Unix et Windows est différent, donc au lieu d'utiliser bin binwindows sur la plate-forme / script Windows va changer l'extension .bat.

# Wget # Tar C / data / -xvf kafka_2.11-2.1.0.tgz # Cd /data/kafka_2.11-2.1.0/

3.2 Configuration début Zookeeper

 Kafka correctement, vous devez configurer Zookeeper, ou si Kafka groupe ou la survie du client et les consommateurs peuvent ne pas fonctionner correctement, vous devez configurer le service pour commencer Zookeeper.

(1) Zookeeper besoin environnement Java

# Yum -y install java-1.8.0

(2) où package de téléchargement Kafka comprend déjà un service Zookeeper, donc il suffit de modifier le fichier de configuration, il peut commencer.

Si vous devez télécharger la version Zookeeper spécifiée, vous pouvez aller seul site officiel Zookeeper pour télécharger la version spécifiée.

# Cd /data/kafka_2.11-2.1.0/ # Grep "^ " config / zookeeper.properties dataDir = / tmp / Zookeeper # répertoire de stockage de données clientPort = 2.181 orifice de #zookeeper maxClientCnxns = 0

Remarque: Vous pouvez ajouter leur propre configuration modifiée Zookeeper

3.3 Configuration Kafka

(1) modifier le fichier de configuration

# Grep "^ " config / server.properties broker.id = 0 auditeurs = texte brut: // localhost: 9092 num.network.threads = 3 num.io.threads = 8 socket.send.buffer.bytes = 102400 socket.receive.buffer.bytes = 102400 socket.request.max.bytes = 104857600 log.dirs = / tmp / logs Kafka num.partitions = 1 num.recovery.threads.per.data.dir = 1 offsets.topic.replication.factor = 1 transaction.state.log.replication.factor = 1 transaction.state.log.min.isr = 1 log.retention.hours = 168 log.segment.bytes = 1073741824 log.retention.check.interval.ms = 300000 zookeeper.connect = localhost: 2181 zookeeper.connection.timeout.ms = 6000 group.initial.rebalance.delay.ms = 0

Remarque: Vous pouvez modifier le fichier de configuration en fonction de vos besoins

  •  broker.id: ID unique
  •  auditeurs = PlainText: // localhost: 9092: Kafka services d'adresse écoutent et le port
  •  log.dirs: répertoire de stockage journal
  •  zookeeper.connect: Zookeeper service désigné

(2) Configuration de l'environnement Variables

# /Etc/profile.d/kafka.sh ViM export KAFKA_HOME = "/ data / kafka_2.11-2.1.0" export PATH = "$ {} KAFKA_HOME / bin: $ PATH" # Source /etc/profile.d/kafka.sh

(3) script de démarrage du service de configuration

# /Etc/init.d/kafka ViM #! / Bin / sh # # Chkconfig: 3459901 # Description: Kafka # # Fichier: Kafka # # Description: Lance et arrête le serveur Kafka # /etc/rc.d/init.d/functions source KAFKA_HOME = / data / kafka_2.11-2.1.0 KAFKA_USER = racine export LOG_DIR = / tmp / kafka-logs &&. / Etc / sysconfig / kafka # Voyez comment nous avons été appelés. case "$ 1" en début) echo -n "Démarrage Kafka:" / Sbin / runuser -s / bin / sh $ KAFKA_USER -c « nohup $ KAFKA_HOME / bin / kafka-server-start.sh $ KAFKA_HOME / config / server.properties >  $ LOG_DIR / server.out 2 >  $ LOG_DIR / server.err & " echo "fait." exit 0 ;; stop) echo -n "Arrêt Kafka:" / Sbin / runuser -s / bin / sh $ KAFKA_USER -c "ps -ef | grep kafka.Kafka | grep -v grep | awk '{print $ 2}' | xargs kill -9" echo "fait." exit 0 ;; arrêt immédiat) echo -n "Arrêt (dur) Kafka:" / Sbin / runuser -s / bin / sh $ KAFKA_USER -c "ps -ef | grep kafka.Kafka | grep -v grep | awk '{print $ 2}' | xargs kill -9" echo "fait." exit 0 ;; état) c_pid = `ps -ef | grep kafka.Kafka | grep -v grep | awk '{print $ 2}'` si , puis echo "Stopped" sortie 3 d'autre echo "Exécution $ c_pid" exit 0 fi ;; redémarrage) arrêt début ;; *) echo "Utilisation: kafka {start | stop | arrêt immédiat | état | restart}" 1 sortie ;; ESAC

3.4 Démarrer le service Kafka

(1) l'arrière-plan pour démarrer le service Zookeeper

# Nohup zookeeper-server-start.sh /data/kafka_2.11-2.1.0/config/zookeeper.properties &

(2) Démarrer le service Kafka

# Service kafka début À partir kafka (via systemctl): # Service kafka état Exécution 86018 # Ss -nutl Netid Etat Recv-Q Send-Q Adresse locale: Port Peer Adresse: Port tcp LISTEN 050 ::: ::: 9092 * tcp LISTEN 050 ::: ::: 2181 *

4, Kafka utilisation de l'entrée simple,

4.1 Créer un thème de sujets

Créer un « long » le thème appelé, il ne contient qu'une seule partition, un seul exemplaire:

# Kafka-topics.sh --create --zookeeper localhost: 2181 --replication facteur 1 --partitions 1 --topic le long Sujet créé « le long ».

Si nous courons la liste des commandes sujet, on peut voir maintenant que ce sujet:

# Kafka-topics.sh --list --zookeeper localhost: 2181 le long de

4.2 envoyer des messages

Kafka est livré avec un client de ligne de commande, il prendra son entrée à partir d'un fichier ou l'entrée standard, et l'envoyer comme message à groupe Kafka. Par défaut, chaque ligne sera envoyée comme un message séparé.

Exécuter les producteurs, et puis tapez un numéro dans un message à envoyer à la console du serveur.

# Kafka-console-producer.sh --broker liste localhost: 9092 --topic le long > Ceci est un message > Ceci est un autre message

4.3 Démarrer les consommateurs

Kafka, il est un utilisateur de ligne de commande, il videra des messages sur la sortie standard.

# Kafka-console-consumer.sh --bootstrap serveur localhost: 9092 --topic le long --from-début Ceci est un message Ceci est un autre message

Tous les outils de ligne de commande ont d'autres options, exécutez la commande sans arguments présente les enregistrements de leur utilisation des informations plus en détail.

5, mis en place un multi-agence Kafka groupe

 Jusqu'à présent, nous avons été en cours d'exécution avec un courtier, mais ce n'est pas amusant. Pour Kafka, un seul agent de la taille du groupe 1, donc en plus de commencer certains cas, il n'y a pas d'agent beaucoup de changement. Mais afin de se sentir, nous allons étendre notre groupe à trois noeuds (toujours sur notre machine locale).

5.1 Profil Préparation

# Cd /data/kafka_2.11-2.1.0/ # Config Cp / server.properties config / server-1.properties # Config Cp / server.properties config / server-2.properties # Config Vim / server-1.properties broker.id = 1 auditeurs = texte brut: //: 9093 log.dirs = / tmp / logs Kafka-1 # Config Vim / server-2.properties broker.id = 2 auditeurs = texte brut: //: 9094 log.dirs = / tmp / logs Kafka-2

Note: Cette propriété est le nom de broker.id unique et permanent de chaque nud du cluster. Nous devons couvrir le répertoire du port et le journal, parce que nous courons sur la même machine, et nous voulons que tous les agents tentent d'enregistrer ou de remplacer des données de l'autre sur le même port.

5.2 amas ouvert deux autres services Kafka

# Nohup kafka-server-start.sh /data/kafka_2.11-2.1.0/config/server-1.properties & # Nohup kafka-server-start.sh /data/kafka_2.11-2.1.0/config/server-2.properties & # Ss -nutl Netid Etat Recv-Q Send-Q Adresse locale: Port Peer Adresse: Port tcp LISTEN 050 :: ffff: 127.0.0.1: 9092 ::: * tcp LISTEN 050 :: ffff: 127.0.0.1: 9093 ::: * tcp LISTEN 050 :: ffff: 127.0.0.1: 9094 ::: *

5.3 fonctionnent dans un cluster

(1) Créez maintenant un facteur de réplication pour le nouveau thème my-sujet reproduit 3

# Kafka-topics.sh --create --zookeeper localhost: 2181 --replication facteur 3 --partitions 1 --topic my-sujet répliquées sujet créé « my-sujet dupliqués ».

(2) dans un cluster, exécutez la commande « décrire les sujets » pour voir ce qui est fait qui courtier

# Kafka-topics.sh --describe --zookeeper localhost: 2181 --topic my-sujet répliquées Sujet: my-sujet répliqué PartitionCount: 1 ReplicationFactor: 3 Configs: Sujet: Partition my-sujet répliqué: 0 Leader: 2 Répliques: 2,0,1 Isr: 2,0,1

Remarque: La première ligne donne un résumé de toutes les partitions, chaque ligne supplémentaire fournit des informations sur une partition. Étant donné que nous avons une seule partition pour ce sujet, alors qu'une seule ligne.

  •  « Leader » est un nud est responsable de toutes les lectures et écritures d'une partition donnée. Chaque nud deviendra la partie leader de la partition sélectionnée au hasard.
  •  « Répliques » est une liste de nuds cette partition copie du journal, même si elles sont actuellement actives, peu importe qu'ils soient dirigeants ou.
  •  « Isr » est « synchronisé » collection de répliques. Ceci est un sous-ensemble d'une copie de la liste, la liste est active et le leader actuel a été capturé.

S'il vous plaît noter, Leader: 2, dans mon exemple, le nud 2 est le seul chef de la partition du sujet.

(3) peut exécuter la même commande sur le thème original que nous avons créé pour voir son emplacement

# Kafka-topics.sh --describe --zookeeper localhost: 2181 --topic le long Sujet: le long de PartitionCount: 1 ReplicationFactor: 1 Configs: Sujet: le long de la partition: 0 Leader: 0 Répliques: 0 Isr: 0

(4) a émis un certain nombre de messages à notre nouveau thème:

# Kafka-console-producer.sh --broker liste localhost: 9092 --topic my-sujet répliquées > mon message de test 1 > mon message de test 2 > ^ C

(5) Maintenant, nous allons utiliser ces messages:

# Kafka-console-consumer.sh --bootstrap serveur localhost: 9092 --from-commençant --topic my-sujet répliquées mon message de test 1 mon message de test 2

5.4 Test de tolérance aux pannes de cluster

(1) Maintenant, nous allons tester la tolérance aux pannes. Broker 2 agit comme un chef de file afin Tuons-le:

# Ps aux | grep server-2.properties | awk '{print $ 2}' 106737 # Kill -9106737 # Ss -nutl tcp LISTEN 050 :: ffff: 127.0.0.1: 9092 ::: * tcp LISTEN 050 :: ffff: 127.0.0.1: 9093 ::: *

(2) dans lequel Leader a commuté sur un noeud esclave, le noeud 2 n'est plus en jeu de répliques de synchronisation:

# Kafka-topics.sh --describe --zookeeper localhost: 2181 --topic my-sujet répliquées Sujet: my-sujet répliqué PartitionCount: 1 ReplicationFactor: 3 Configs: Sujet: Partition my-sujet répliqué: 0 Leader: 0 Répliques: 2,0,1 Isr: 0,1

(3), même si le chef écrit initial n'a pas réussi à accepter que ces messages sont encore disponibles pour la consommation:

# Kafka-console-consumer.sh --bootstrap serveur localhost: 9092 --from-commençant --topic my-sujet répliquées mon message de test 1 mon message de test 2

6, Kafka Connect Import / Export de données

 données d'écriture de la console et écrire à la console est un bon point de départ, mais peuvent parfois vouloir utiliser des données provenant d'autres sources ou de Kafka à exporter des données vers d'autres systèmes. Pour de nombreux systèmes, vous pouvez utiliser Kafka Connect aux données d'importation ou d'exportation, au lieu d'écrire le code d'intégration personnalisé.

 Kafka Kafka Connect est livré avec des outils pour importer et exporter des données à Kafka. Il est un moyen expansible, la course du connecteur, mettre en oeuvre une interaction externe de logique de commande avec le système. Dans ce démarrage rapide, nous allons apprendre comment utiliser un connecteur simple à exécuter Kafka Connect, ces connecteurs pour importer des données dans le thème Kafka et les données de fichier à fichier exporté du thème Kafka.

(1) Tout d'abord, créer des données de semences pour les tests:

# Echo -e "foobar" >  test.txt

Ou sous Windows:

>  echo foo >  test.txt >  echo bar > >  test.txt

(2) Ensuite, pour commencer à fonctionner en mode autonome deux connecteurs, ce qui signifie qu'ils exécutent dans un processus privé local. Fournir trois fichiers de configuration en tant que paramètre.

Le premier est toujours Kafka Connect processus de configuration, comprenant une configuration commune, telle qu'une séquence de format de données et des agents de Kafka à raccorder.

Le reste est le fichier de configuration du connecteur désigné à créer. Ceux-ci comprennent un nom unique d'un connecteur, toute autre configuration souhaitée pour être instanciés connecteurs de classe et un connecteur.

# Connect-standalone.sh config / connect-standalone.properties config / connect-file-source.properties config / connect-file-sink.properties INFO Kafka Connect travailleur autonome Initialisation ... (org.apache.kafka.connect.cli.ConnectStandalone: 67) Valeurs INFO WorkerInfo: ... ...

 Note: Kafka inclus dans ces fichiers de configuration de l'échantillon avant de commencer à utiliser votre configuration par défaut du cluster local et créer deux connecteurs: le premier est le connecteur source, il lit des lignes à partir d'un fichier d'entrée et génère chaque thème Kafka, la deuxième est connecté à l'évier lit le titre de chaque message et le message de Kafka généré par une ligne dans le fichier de sortie.

(3) Vérifiez si l'importation est réussie (d'un autre terminal)

Lors du démarrage, vous verrez beaucoup de messages du journal, y compris une indication de messages du journal sont des exemples du connecteur.

Kafka Connect une fois le processus démarre, le connecteur source test.txt doit commencer la lecture des lignes relatives au sujet et génère sa connexion test et le connecteur du récepteur doit se connecter test message à commencer à lire et d'écrire leur sujet fichier test.sink.txt. Nous pouvons vérifier cela en vérifiant le contenu du fichier de sortie si les données ont passé à travers l'ensemble du pipeline:

# Test.sink.txt Cat foo bar

Notez que le stockage des données de connexion test dans le sujet Kafka, afin que nous puissions exécuter l'utilisateur de la console pour afficher la rubrique de données (ou utiliser un code utilisateur personnalisé pour gérer):

# Kafka-console-consumer.sh --bootstrap serveur localhost: 9092 --topic --from-début connexion test { "Schéma": { "type": "string", "facultatif": false}, "charge utile": "foo"} { "Schéma": { "type": "string", "facultatif": false}, "charge utile": "bar"}

(4) les données supplémentaires se poursuit, la vérification

# Echo Une autre ligne > >  test.txt # Test.sink.txt Cat foo bar une autre ligne # Kafka-console-consumer.sh --bootstrap serveur localhost: 9092 --topic --from-début connexion test { "Schéma": { "type": "string", "facultatif": false}, "charge utile": "foo"} { "Schéma": { "type": "string", "facultatif": false}, "charge utile": "bar"} { "Schéma": { "type": "string", "facultatif": false}, "charge utile": "Une autre ligne"}
Redis détaillée et pratique - pile technologique de plate-forme cloud
Précédent
ZooKeeper meilleur guide - pile de technologie de plate-forme cloud
Prochain
entrée de programmeurs de semaine Baidu à la fin savez quoi?
algorithme détaillé brassage: vous pouvez trier, mais vous vous en colère?
Une connaissance approfondie de la machine virtuelle Java --- apprentissage des idées et des notes
AI projet de création d'une entreprise, vous devez tenir compte de ces 10 questions
écosystème Big Data mis à jour à nouveau! Cartouche dans la tendance
Article concentre 20 ans: vous prenez à travers l'histoire du développement des données de formation
La Chine est d'abord! premier zoo ouvert la nuit de Shanghai, les Raiders vous aider à faire un bon travail
Fujian Putian: « Nostalgie rivière longue » Dongzhuang complexe
FLOURISHES « Alipay koi » La jeune fille, maintenant atteint la limite des cartes de crédit, et parfois tomber dans l'anxiété
Suning achat des sorts 808 Jour: total d'une journée de 26 millions de commandes individuelles
LSTM découvrir le mystère de la structure, donc RNN parfait
Jupyter Notebooks trois __gVirt_NP_NNS_NNPS<__ fonctionnalités supplémentaires facile à piloter