Apache Flume - Yapılandırma

Flume'u kurduktan sonra, bir Java özellik dosyası olan yapılandırma dosyasını kullanarak yapılandırmamız gerekir. key-value pairs. Dosyadaki anahtarlara değerler aktarmamız gerekiyor.

Flume yapılandırma dosyasında, ihtiyacımız olan -

  • Mevcut aracının bileşenlerini adlandırın.
  • Kaynağı tanımlayın / yapılandırın.
  • Lavaboyu tanımlayın / yapılandırın.
  • Kanalı açıklayın / yapılandırın.
  • Kaynağı ve havuzu kanala bağlayın.

Genellikle Flume'de birden fazla ajanımız olabilir. Her bir temsilciyi benzersiz bir ad kullanarak ayırt edebiliriz. Ve bu adı kullanarak, her ajanı yapılandırmamız gerekiyor.

Bileşenleri Adlandırma

Her şeyden önce, aşağıda gösterildiği gibi, kaynaklar, alıcılar ve aracının kanalları gibi bileşenleri adlandırmanız / listelemeniz gerekir.

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

Flume, çeşitli kaynakları, havuzları ve kanalları destekler. Aşağıda verilen tabloda listelenmiştir.

Kaynaklar Kanallar Lavabolar
  • Avro Kaynağı
  • Tasarruf Kaynağı
  • Yürütme Kaynağı
  • JMS Kaynağı
  • Biriktirme Dizini Kaynağı
  • Twitter% 1 firehose Kaynak
  • Kafka Kaynağı
  • NetCat Kaynağı
  • Sıra Üreteci Kaynağı
  • Sistem Günlüğü Kaynakları
  • Syslog TCP Kaynağı
  • Multiport Syslog TCP Kaynağı
  • Syslog UDP Kaynağı
  • HTTP Kaynağı
  • Stres Kaynağı
  • Eski Kaynaklar
  • Thrift Eski Kaynak
  • Özel Kaynak
  • Yazı Kaynağı
  • Bellek Kanalı
  • JDBC Kanalı
  • Kafka Kanalı
  • Dosya Kanalı
  • Dökülebilir Bellek Kanalı
  • Sözde İşlem Kanalı
  • HDFS Lavabo
  • Kovan Lavabo
  • Logger Lavabo
  • Avro Lavabo
  • Tasarruflu Lavabo
  • IRC Lavabo
  • File Roll Lavabo
  • Boş Lavabo
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Uçurtma Veri Seti Evyesi
  • Kafka Lavabo

Bunlardan herhangi birini kullanabilirsiniz. Örneğin, Twitter verilerini Twitter kaynağı kullanarak bir bellek kanalı üzerinden bir HDFS havuzuna aktarıyorsanız ve temsilci adı kimliğiTwitterAgent, sonra

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

Aracının bileşenlerini listeledikten sonra, kaynak (lar) ı, havuz (lar) ı ve kanal (lar) ı, özelliklerine değerler sağlayarak tanımlamanız gerekir.

Kaynağı Tanımlama

Her kaynağın ayrı bir özellik listesi olacaktır. "Tür" adlı özellik her kaynak için ortaktır ve kullandığımız kaynağın türünü belirtmek için kullanılır.

"Tür" özelliğinin yanı sıra, tüm required aşağıda gösterildiği gibi yapılandırmak için belirli bir kaynağın özellikleri.

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

Örneğin, twitter sourceYapılandırmak için değerler sağlamamız gereken özellikler aşağıdadır .

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

Lavaboyu Tanımlamak

Aynı kaynak gibi, her havuzda ayrı bir özellik listesi olacaktır. "Tür" adlı özellik her havuzda ortaktır ve kullandığımız havuzun türünü belirtmek için kullanılır. "Tür" özelliğinin yanı sıra, tümrequired aşağıda gösterildiği gibi yapılandırmak için belirli bir havuzun özellikleri.

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

Örneğin, düşünürsek HDFS sinkYapılandırmak için değerler sağlamamız gereken özellikler aşağıdadır .

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

Kanalı Tanımlamak

Flume, kaynaklar ve havuzlar arasında veri aktarımı için çeşitli kanallar sağlar. Bu nedenle kaynaklar ve kanallar ile birlikte aracıda kullanılan kanalın açıklanması gerekmektedir.

Her bir kanalı açıklamak için, aşağıda gösterildiği gibi gerekli özellikleri ayarlamanız gerekir.

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

Örneğin, düşünürsek memory channelYapılandırmak için değerler sağlamamız gereken özellikler aşağıdadır .

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

Kaynağı ve Sink'i Kanala Bağlamak

Kanallar kaynakları ve alıcıları bağladığından, aşağıda gösterildiği gibi her ikisinin de kanala bağlanması gerekir.

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

Aşağıdaki örnek, kaynakların ve havuzların bir kanala nasıl bağlanacağını gösterir. Burada düşünüyoruztwitter source, memory channel, ve HDFS sink.

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

Flume Aracısının Başlatılması

Yapılandırmadan sonra, Flume ajanını başlatmalıyız. Aşağıdaki gibi yapılır -

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

nerede -

  • agent - Flume ajanını başlatma komutu

  • --conf ,-c<conf> - conf dizinindeki yapılandırma dosyasını kullanın

  • -f<file> - Eksikse, bir yapılandırma dosyası yolu belirtir

  • --name, -n <name> - Twitter temsilcisinin adı

  • -D property =value - Bir Java sistem özelliği değeri ayarlar.