Apache Flume - Configuration

Après l'installation de Flume, nous devons le configurer à l'aide du fichier de configuration qui est un fichier de propriété Java ayant key-value pairs. Nous devons transmettre des valeurs aux clés du fichier.

Dans le fichier de configuration Flume, nous devons -

  • Nommez les composants de l'agent actuel.
  • Décrivez / Configurez la source.
  • Décrivez / configurez le puits.
  • Décrivez / configurez le canal.
  • Liez la source et le récepteur au canal.

Habituellement, nous pouvons avoir plusieurs agents dans Flume. Nous pouvons différencier chaque agent en utilisant un nom unique. Et en utilisant ce nom, nous devons configurer chaque agent.

Nommer les composants

Tout d'abord, vous devez nommer / lister les composants tels que les sources, les récepteurs et les canaux de l'agent, comme indiqué ci-dessous.

agent_name.sources = source_name 
agent_name.sinks = sink_name 
agent_name.channels = channel_name

Flume prend en charge diverses sources, puits et canaux. Ils sont répertoriés dans le tableau ci-dessous.

Sources Chaînes Les puits
  • Source Avro
  • Source d'épargne
  • Source d'exécution
  • Source JMS
  • Source du répertoire de spoule
  • Twitter 1% Firehose Source
  • Source Kafka
  • Source NetCat
  • Source du générateur de séquence
  • Sources Syslog
  • Source TCP Syslog
  • Source TCP Syslog multiport
  • Source Syslog UDP
  • Source HTTP
  • Source de stress
  • Sources héritées
  • Source héritée d'épargne
  • Source personnalisée
  • Source de scribe
  • Canal mémoire
  • Canal JDBC
  • Chaîne Kafka
  • Canal de fichier
  • Canal mémoire déversable
  • Pseudo canal de transaction
  • Évier HDFS
  • Évier de ruche
  • Évier enregistreur
  • Évier Avro
  • Évier d'épargne
  • Évier IRC
  • Évier de rouleau de fichier
  • Évier nul
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Évier de données de kite
  • Évier Kafka

Vous pouvez utiliser n'importe lequel d'entre eux. Par exemple, si vous transférez des données Twitter à l'aide de la source Twitter via un canal mémoire vers un récepteur HDFS, et l'identifiant du nom de l'agentTwitterAgent, puis

TwitterAgent.sources = Twitter 
TwitterAgent.channels = MemChannel 
TwitterAgent.sinks = HDFS

Après avoir répertorié les composants de l'agent, vous devez décrire la (les) source (s), puits et canal (s) en fournissant des valeurs à leurs propriétés.

Décrire la source

Chaque source aura une liste distincte de propriétés. La propriété nommée «type» est commune à chaque source, et elle est utilisée pour spécifier le type de la source que nous utilisons.

En plus de la propriété «type», il est nécessaire de fournir les valeurs de tous les required propriétés d'une source particulière pour la configurer, comme indiqué ci-dessous.

agent_name.sources. source_name.type = value 
agent_name.sources. source_name.property2 = value 
agent_name.sources. source_name.property3 = value

Par exemple, si nous considérons le twitter source, voici les propriétés auxquelles nous devons fournir des valeurs pour le configurer.

TwitterAgent.sources.Twitter.type = Twitter (type name) 
TwitterAgent.sources.Twitter.consumerKey =  
TwitterAgent.sources.Twitter.consumerSecret = 
TwitterAgent.sources.Twitter.accessToken =   
TwitterAgent.sources.Twitter.accessTokenSecret =

Décrire l'évier

Tout comme la source, chaque récepteur aura une liste de propriétés distincte. La propriété nommée «type» est commune à chaque récepteur, et elle est utilisée pour spécifier le type de récepteur que nous utilisons. En plus de la propriété «type», il est nécessaire de fournir des valeurs à tous lesrequired propriétés d'un récepteur particulier pour le configurer, comme indiqué ci-dessous.

agent_name.sinks. sink_name.type = value 
agent_name.sinks. sink_name.property2 = value 
agent_name.sinks. sink_name.property3 = value

Par exemple, si nous considérons HDFS sink, voici les propriétés auxquelles nous devons fournir des valeurs pour le configurer.

TwitterAgent.sinks.HDFS.type = hdfs (type name)  
TwitterAgent.sinks.HDFS.hdfs.path = HDFS directory’s Path to store the data

Décrire la chaîne

Flume fournit divers canaux pour transférer des données entre les sources et les puits. Par conséquent, avec les sources et les canaux, il est nécessaire de décrire le canal utilisé dans l'agent.

Pour décrire chaque canal, vous devez définir les propriétés requises, comme indiqué ci-dessous.

agent_name.channels.channel_name.type = value 
agent_name.channels.channel_name. property2 = value 
agent_name.channels.channel_name. property3 = value

Par exemple, si nous considérons memory channel, voici les propriétés auxquelles nous devons fournir des valeurs pour le configurer.

TwitterAgent.channels.MemChannel.type = memory (type name)

Lier la source et le puits au canal

Puisque les canaux connectent les sources et les puits, il est nécessaire de les lier tous les deux au canal, comme indiqué ci-dessous.

agent_name.sources.source_name.channels = channel_name 
agent_name.sinks.sink_name.channels = channel_name

L'exemple suivant montre comment lier les sources et les récepteurs à un canal. Ici, nous considéronstwitter source, memory channel, et HDFS sink.

TwitterAgent.sources.Twitter.channels = MemChannel
TwitterAgent.sinks.HDFS.channels = MemChannel

Démarrage d'un agent Flume

Après configuration, nous devons démarrer l'agent Flume. Cela se fait comme suit -

$ bin/flume-ng agent --conf ./conf/ -f conf/twitter.conf 
Dflume.root.logger=DEBUG,console -n TwitterAgent

où -

  • agent - Commande pour démarrer l'agent Flume

  • --conf ,-c<conf> - Utiliser le fichier de configuration dans le répertoire conf

  • -f<file> - Spécifie un chemin de fichier de configuration, s'il est manquant

  • --name, -n <name> - Nom de l'agent Twitter

  • -D property =value - Définit une valeur de propriété système Java.