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 |
---|---|---|
|
|
|
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.