负载均衡的Log4J Appender
使用log4j Appender发送Event到多个运行着Avro Source的Flume Agent上。使用的时候log4j客户端必须要在classpath引入flume-ng-sdk(比如:flume-ng-sdk-1.8.0.jar)。这个appender支持轮询和随机的负载方式,它也支持配置一个退避时间,以便临时移除那些挂掉的Flume Agent。必需的参数已用 粗体 标明。
提示
这是上面Log4j Appender的升级版,支持多个Flume实例的负载均衡发送,配置也很类似,没什么可说的了。
属性 | 默认值 | 解释 |
---|---|---|
Hosts | – | host:port格式的Flume Agent(运行着Avro Source)地址列表,多个用空格分隔 |
Selector | ROUNDROBIN | appender向Flume Agent发送Event的选择机制。可选值有: ROUND_ROBIN (轮询)、 RANDOM (随机) 或者自定义选择器的全限定类名(自定义选择器必须继承自 _LoadBalancingSelector) |
MaxBackoff | – | 一个long型数值,表示负载平衡客户端将无法发送Event的节点退避的最长时间(毫秒)。 默认不启用规避机制 |
UnsafeMode | false | 如果为true,log4j的appender在发送Event失败时不会抛出异常 |
AvroReflectionEnabled | false | 是否使用Avro反射来序列化log4j的Event(当log是字符串时不要开启) |
AvroSchemaUrl | – | 一个能检索到Avro结构的url |
log4j.properties 文件配置范例:
- #...
- log4j.appender.out2 = org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender
- log4j.appender.out2.Hosts = localhost:25430 localhost:25431
- # configure a class's logger to output to the flume appender
- log4j.logger.org.example.MyClass = DEBUG,flume
- #...
使用随机(RANDOM
)负载均衡方式的log4j.properties 文件配置范例:
- #...
- log4j.appender.out2 = org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender
- log4j.appender.out2.Hosts = localhost:25430 localhost:25431
- log4j.appender.out2.Selector = RANDOM
- # configure a class's logger to output to the flume appender
- log4j.logger.org.example.MyClass = DEBUG,flume
- #...
log4j使用「失败退避」方式的log4j.properties配置范例:
- #...
- log4j.appender.out2 = org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender
- log4j.appender.out2.Hosts = localhost:25430 localhost:25431 localhost:25432
- log4j.appender.out2.Selector = ROUND_ROBIN
- log4j.appender.out2.MaxBackoff = 30000 #最大的退避时长是30秒
- # configure a class's logger to output to the flume appender
- log4j.logger.org.example.MyClass = DEBUG,flume
- #...
提示
这种退避机制在其他组件中有过多次应用,比如:Spooling Directory Source 中的 maxBackoff 属性的功能是一样的。
当前内容版权归 liyifeng 译 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 liyifeng 译 .