Apache Flume - การกำหนดค่า

หลังจากติดตั้ง Flume เราต้องกำหนดค่าโดยใช้ไฟล์กำหนดค่าซึ่งเป็นไฟล์คุณสมบัติ Java ที่มีไฟล์ key-value pairs. เราจำเป็นต้องส่งค่าไปยังคีย์ในไฟล์

ในไฟล์การกำหนดค่า Flume เราจำเป็นต้อง -

  • ตั้งชื่อคอมโพเนนต์ของเอเจนต์ปัจจุบัน
  • อธิบาย / กำหนดค่าแหล่งที่มา
  • อธิบาย / กำหนดค่าอ่างล้างจาน
  • อธิบาย / กำหนดค่าช่อง
  • ผูกแหล่งที่มาและซิงก์กับช่อง

โดยปกติเราสามารถมีตัวแทนได้หลายคนใน Flume เราสามารถแยกความแตกต่างของตัวแทนแต่ละคนได้โดยใช้ชื่อเฉพาะ และการใช้ชื่อนี้เราต้องกำหนดคอนฟิกแต่ละเอเจนต์

การตั้งชื่อส่วนประกอบ

ก่อนอื่นคุณต้องตั้งชื่อ / รายการส่วนประกอบเช่นแหล่งที่มาซิงก์และช่องของตัวแทนดังที่แสดงด้านล่าง

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

Flume รองรับแหล่งที่มาอ่างล้างมือและช่องต่างๆ มีรายชื่ออยู่ในตารางด้านล่าง

แหล่งที่มา ช่อง อ่างล้างมือ
  • แหล่งที่มาของ Avro
  • แหล่งที่มาของ Thrift
  • แหล่งที่มาของ Exec
  • ที่มา JMS
  • แหล่งที่มาของ Spooling Directory
  • ที่มาของ Twitter 1% firehose
  • ที่มา Kafka
  • ที่มา NetCat
  • แหล่งกำเนิดลำดับ
  • แหล่งที่มาของ Syslog
  • ที่มา Syslog TCP
  • ที่มา Multiport Syslog TCP
  • ที่มา Syslog UDP
  • ที่มา HTTP
  • แหล่งที่มาของความเครียด
  • แหล่งที่มาเดิม
  • แหล่งที่มาของ Thrift Legacy
  • แหล่งที่มาที่กำหนดเอง
  • ที่มาอาลักษณ์
  • ช่องหน่วยความจำ
  • ช่อง JDBC
  • คาฟคาช่อง
  • ช่องไฟล์
  • ช่องหน่วยความจำที่รั่วไหลได้
  • ช่องทางการทำธุรกรรมหลอก
  • อ่างล้างจาน HDFS
  • Hive Sink
  • อ่างล้างจาน
  • อ่าง Avro
  • Thrift Sink
  • IRC Sink
  • ไฟล์ม้วนจม
  • Null Sink
  • HBaseSink
  • AsyncHBaseSink
  • MorphlineSolrSink
  • ElasticSearchSink
  • Kite Dataset Sink
  • คาฟคาซิงก์

คุณสามารถใช้สิ่งเหล่านี้ได้ ตัวอย่างเช่นหากคุณกำลังถ่ายโอนข้อมูล Twitter โดยใช้แหล่งที่มาของ Twitter ผ่านช่องหน่วยความจำไปยังอ่างล้างจาน HDFS และรหัสชื่อตัวแทนTwitterAgentแล้ว

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

หลังจากแสดงรายการส่วนประกอบของเอเจนต์แล้วคุณต้องอธิบายซอร์สซิงก์และแชนเนลโดยระบุค่าให้กับคุณสมบัติของเอเจนต์

การอธิบายแหล่งที่มา

แต่ละแหล่งจะมีรายการคุณสมบัติแยกกัน คุณสมบัติที่ชื่อว่า“ type” เป็นเรื่องปกติสำหรับทุกแหล่งที่มาและใช้เพื่อระบุประเภทของแหล่งที่มาที่เราใช้

นอกจากคุณสมบัติ "type" แล้วจำเป็นต้องระบุค่าของ required คุณสมบัติของแหล่งเฉพาะเพื่อกำหนดค่าดังที่แสดงด้านล่าง

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

ตัวอย่างเช่นหากเราพิจารณาไฟล์ twitter sourceต่อไปนี้เป็นคุณสมบัติที่เราต้องระบุค่าเพื่อกำหนดค่า

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

อธิบายอ่างล้างจาน

เช่นเดียวกับแหล่งที่มาแต่ละอ่างจะมีรายการคุณสมบัติแยกกัน คุณสมบัติที่ชื่อว่า“ type” เป็นสิ่งที่พบได้ทั่วไปในอ่างล้างจานทุกอ่างและใช้เพื่อระบุประเภทของอ่างล้างจานที่เราใช้ นอกจากคุณสมบัติ "type" แล้วจำเป็นต้องระบุค่าให้กับไฟล์required คุณสมบัติของซิงก์เฉพาะเพื่อกำหนดค่าดังที่แสดงด้านล่าง

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

ตัวอย่างเช่นหากเราพิจารณา HDFS sinkต่อไปนี้เป็นคุณสมบัติที่เราต้องระบุค่าเพื่อกำหนดค่า

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

การอธิบายช่อง

Flume มีช่องทางต่างๆในการถ่ายโอนข้อมูลระหว่างแหล่งที่มาและซิงก์ ดังนั้นพร้อมกับแหล่งที่มาและช่องทางจึงจำเป็นต้องอธิบายช่องที่ใช้ในตัวแทน

ในการอธิบายแต่ละช่องคุณต้องตั้งค่าคุณสมบัติที่จำเป็นดังที่แสดงด้านล่าง

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

ตัวอย่างเช่นหากเราพิจารณา memory channelต่อไปนี้เป็นคุณสมบัติที่เราต้องระบุค่าเพื่อกำหนดค่า

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

การผูกซอร์สและซิงก์กับแชนเนล

เนื่องจากแชนเนลเชื่อมต่อแหล่งที่มาและซิงก์จึงจำเป็นต้องเชื่อมโยงทั้งสองเข้ากับแชนเนลดังที่แสดงด้านล่าง

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

ตัวอย่างต่อไปนี้แสดงวิธีผูกซอร์สและซิงก์กับแชนเนล ที่นี่เราพิจารณาtwitter source, memory channel, และ HDFS sink.

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

การเริ่มต้น Flume Agent

หลังจากกำหนดค่าเราต้องเริ่มตัวแทน Flume ทำได้ดังนี้ -

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

ที่ไหน -

  • agent - คำสั่งเพื่อเริ่มตัวแทน Flume

  • --conf ,-c<conf> - ใช้ไฟล์กำหนดค่าในไดเรกทอรี conf

  • -f<file> - ระบุพา ธ ไฟล์กำหนดค่าหากขาดหายไป

  • --name, -n <name> - ชื่อตัวแทน twitter

  • -D property =value - ตั้งค่าคุณสมบัติระบบ Java