|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object org.apache.flume.sink.AbstractSinkProcessor org.apache.flume.sink.LoadBalancingSinkProcessor
public class LoadBalancingSinkProcessor
Provides the ability to load-balance flow over multiple sinks.
The LoadBalancingSinkProcessor maintains an indexed list of active sinks on which the load must be distributed. This implementation supports distributing load using either via ROUND_ROBIN or via RANDOM selection mechanism. The choice of selection mechanism defaults to ROUND_ROBIN type, but can be overridden via configuration.
When invoked, this selector picks the next sink using its configured selection mechanism and invokes it. In case the selected sink fails with an exception, the processor picks the next available sink via its configured selection mechanism. This implementation does not blacklist the failing sink and instead continues to optimistically attempt every available sink. If all sinks invocations result in failure, the selector propagates the failure to the sink runner.
Sample configuration:
host1.sinkgroups.group1.sinks = sink1 sink2 host1.sinkgroups.group1.processor.type = load_balance host1.sinkgroups.group1.processor.selector =The value of processor.selector could be either round_robin for round-robin scheme of load-balancing or random for random selection. Alternatively you can specify your own implementation of the selection algorithm by implementing the LoadBalancingSelector interface. If no selector mechanism is specified, the round-robin selector is used by default.host1.sinkgroups.group1.processor.selector.selector_property =
This implementation is not thread safe at this time
FailoverSinkProcessor
,
LoadBalancingSinkProcessor.SinkSelector
Nested Class Summary | |
---|---|
static interface |
LoadBalancingSinkProcessor.SinkSelector
An interface that allows the LoadBalancingSinkProcessor to use a load-balancing strategy such as round-robin, random distribution etc. |
Field Summary | |
---|---|
static String |
CONFIG_SELECTOR
|
static String |
CONFIG_SELECTOR_PREFIX
|
static String |
SELECTOR_NAME_RANDOM
|
static String |
SELECTOR_NAME_ROUND_ROBIN
|
Constructor Summary | |
---|---|
LoadBalancingSinkProcessor()
|
Method Summary | |
---|---|
void |
configure(Context context)
Request the implementing class to (re)configure itself. |
Sink.Status |
process()
Handle a request to poll the owned sinks. |
void |
start()
Starts a service or component. |
void |
stop()
Stops a service or component. |
Methods inherited from class org.apache.flume.sink.AbstractSinkProcessor |
---|
getLifecycleState, getSinks, setSinks |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
public static final String CONFIG_SELECTOR
public static final String CONFIG_SELECTOR_PREFIX
public static final String SELECTOR_NAME_ROUND_ROBIN
public static final String SELECTOR_NAME_RANDOM
Constructor Detail |
---|
public LoadBalancingSinkProcessor()
Method Detail |
---|
public void configure(Context context)
Configurable
Request the implementing class to (re)configure itself.
When configuration parameters are changed, they must be reflected by the component asap.
There are no thread safety guarrantees on when configure might be called.
public void start()
LifecycleAware
Starts a service or component.
Implementations should determine the result of any start logic and effect
the return value of LifecycleAware.getLifecycleState()
accordingly.
start
in interface LifecycleAware
start
in class AbstractSinkProcessor
public void stop()
LifecycleAware
Stops a service or component.
Implementations should determine the result of any stop logic and effect
the return value of LifecycleAware.getLifecycleState()
accordingly.
stop
in interface LifecycleAware
stop
in class AbstractSinkProcessor
public Sink.Status process() throws EventDeliveryException
SinkProcessor
Handle a request to poll the owned sinks.
The processor is expected to call Sink.process() on
whatever sink(s) appropriate, handling failures as appropriate and
throwing EventDeliveryException
when there is a failure to
deliver any events according to the delivery policy defined by the
sink processor implementation. See specific implementations of this
interface for delivery behavior and policies.
READY
if events were successfully consumed,
or BACKOFF
if no events were available in the channel to consume.
EventDeliveryException
- if the behavior guaranteed by the processor
couldn't be carried out.
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |