org.apache.flume.sink
Class AvroSink

java.lang.Object
  extended by org.apache.flume.sink.AbstractSink
      extended by org.apache.flume.sink.AvroSink
All Implemented Interfaces:
Configurable, LifecycleAware, PollableSink, Sink

public class AvroSink
extends AbstractSink
implements PollableSink, Configurable

A Sink implementation that can send events to an Avro server (such as Flume's AvroSource).

This sink forms one half of Flume's tiered collection support. Events sent to this sink are turned into AvroFlumeEvents and sent to the configured hostname / port pair using Avro's NettyTransceiver. The intent is that the destination is an instance of Flume's AvroSource which allows Flume to nodes to forward to other Flume nodes forming a tiered collection infrastructure. Of course, nothing prevents one from using this sink to speak to other custom built infrastructure that implements the same Avro protocol (specifically AvroSourceProtocol).

Events are taken from the configured Channel in batches of the configured batch-size. The batch size has no theoretical limits although all events in the batch must fit in memory. Generally, larger batches are far more efficient, but introduce a slight delay (measured in millis) in delivery. The batch behavior is such that underruns (i.e. batches smaller than the configured batch size) are possible. This is a compromise made to maintain low latency of event delivery. If the channel returns a null event, meaning it is empty, the batch is immediately sent, regardless of size. Batch underruns are tracked in the metrics. Empty batches do not incur an RPC roundtrip.

Configuration options

Parameter Description Unit / Type Default
hostname The hostname to which events should be sent. Hostname or IP / String none (required)
port The port to which events should be sent on hostname. TCP port / int none (required)
batch-size The maximum number of events to send per RPC. events / int 100

Metrics

TODO


Nested Class Summary
 
Nested classes/interfaces inherited from interface org.apache.flume.PollableSink
PollableSink.Status
 
Constructor Summary
AvroSink()
           
 
Method Summary
 void configure(Context context)
           
 PollableSink.Status process()
           
 void start()
           Starts a service or component.
 void stop()
           Stops a service or component.
 
Methods inherited from class org.apache.flume.sink.AbstractSink
getChannel, getLifecycleState, setChannel
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 
Methods inherited from interface org.apache.flume.Sink
getChannel, setChannel
 
Methods inherited from interface org.apache.flume.lifecycle.LifecycleAware
getLifecycleState
 

Constructor Detail

AvroSink

public AvroSink()
Method Detail

configure

public void configure(Context context)
Specified by:
configure in interface Configurable

start

public void start()
Description copied from interface: LifecycleAware

Starts a service or component.

Implementations should determine the result of any start logic and effect the return value of LifecycleAware.getLifecycleState() accordingly.

Specified by:
start in interface LifecycleAware
Overrides:
start in class AbstractSink

stop

public void stop()
Description copied from interface: LifecycleAware

Stops a service or component.

Implementations should determine the result of any stop logic and effect the return value of LifecycleAware.getLifecycleState() accordingly.

Specified by:
stop in interface LifecycleAware
Overrides:
stop in class AbstractSink

process

public PollableSink.Status process()
                            throws EventDeliveryException
Specified by:
process in interface PollableSink
Throws:
EventDeliveryException


Copyright © 2009-2012 Apache Software Foundation. All Rights Reserved.