Flume-ng禁用自动加载配置文件功能

原创 2016年05月31日 17:19:13

默认情况下,Flume中的PollingPropertiesFileConfigurationProvider会每隔30秒去重新加载Flume agent的配置文件,如果监听到配置文件变化了,Flume会试图重新加载变化的配置文件。判断配置文件是否变化主要是基于文件的最后修改时间来的,代码片段如下:

@Override
public void run() {
      LOGGER.debug("Checking file:{} for changes", file);

      counterGroup.incrementAndGet("file.checks");

      long lastModified = file.lastModified();

      if (lastModified > lastChange) {
        LOGGER.info("Reloading configuration file:{}", file);

        counterGroup.incrementAndGet("file.loads");

        lastChange = lastModified;

        try {
          eventBus.post(getConfiguration());
        } catch (Exception e) {
          LOGGER.error("Failed to load configuration data. Exception follows.",
              e);
        } catch (NoClassDefFoundError e) {
          LOGGER.error("Failed to start agent because dependencies were not " +
              "found in classpath. Error follows.", e);
        } catch (Throwable t) {
          // caught because the caller does not handle or log Throwables
          LOGGER.error("Unhandled error", t);
        }
      }
}
然而,通常情况下,用户修改了配置文件之后就不会再去修改,而且让Flume自动去加载配置文件有时还会出现问题。不过值得高兴的是,我们可以在启动Flume的时候通过加上--no-reload-conf配置来禁止Flume自动加载配置文件。这个属性在Flume的官方文档并没有介绍;而且只有Apache的Flume存在这个参数,如果你使用的是Cloudera的Flume发行版,这个参数是不支持的,不过有人在https://issues.cloudera.org/browse/DISTRO-648里面提到这个参数,如果你感兴趣可以去看下。

  下面附上Apache的Flume发行版如何自动检测配置文件的变化的。
boolean reload = !commandLine.hasOption("no-reload-conf"); 

..........

List<lifecycleaware> components = Lists.newArrayList();
Application application;
if(reload) {
        EventBus eventBus = new EventBus(agentName + "-event-bus");
        PollingPropertiesFileConfigurationProvider configurationProvider =
            new PollingPropertiesFileConfigurationProvider(agentName,
                configurationFile, eventBus, 30);
        components.add(configurationProvider);
        application = new Application(components);
        eventBus.register(application);
} else {
        PropertiesFileConfigurationProvider configurationProvider =
            new PropertiesFileConfigurationProvider(agentName,
                configurationFile);
        application = new Application();
        application.handleConfigurationEvent(configurationProvider.getConfiguration());
}
application.start();
如果你使用的是Flume 1.6.0版本,那么上述的代码和它有点不一样,因为Flume 1.6.0还可以通过Zookeeper来配置文件,所以Flume还可以自动地检测Zookeeper里面的配置变化,并重新加载,不过这里就不贴出代码了,感兴趣的同学可以自己去看。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Flume-ng禁用自动加载配置文件功能

默认情况下,Flume中的PollingPropertiesFileConfigurationProvider会每隔30秒去重新加载Flume agent的配置文件,如果监听到配置文件变化了,Fl...
  • liuxiao723846
  • liuxiao723846
  • 2017年03月20日 16:56
  • 301

Flume NG源码分析(二)支持运行时动态修改配置的配置模块

在上一篇中讲了Flume NG配置模块基本的接口的类,PropertiesConfigurationProvider提供了基于properties配置文件的静态配置的能力,这篇细说一下PollingP...
  • ITer_ZC
  • ITer_ZC
  • 2015年06月08日 17:08
  • 2245

Flume启动与配置文件

Flume启动:   1、进入到Flume根目录。(cd flume -> cd flume/flume -> ll )可以看到以下内容  2、启动run.sh程序。( ./run.sh)。  3、...
  • adeen
  • adeen
  • 2016年11月21日 14:43
  • 1152

Flume配置文件(flume-site.conf)

Flume配置文件(flume-site.conf)   1、 watchdog watchdog.restarts.max watchdog每分钟重启的最大数??? ...
  • asdf2hjkl
  • asdf2hjkl
  • 2012年06月03日 21:36
  • 1560

Flume-ng禁用自动加载配置文件功能

默认情况下,Flume中的PollingPropertiesFileConfigurationProvider会每隔30秒去重新加载Flume agent的配置文件,如果监听到配置文件变化了,Fl...
  • liuxiao723846
  • liuxiao723846
  • 2017年03月20日 16:56
  • 301

Tomcat自动加载更新配置

在开发项目的时候每次修改类都要重新手动启动服务器,这样会浪费很多时间,下边介绍一种方法来修改tomcat的配置,来让tomcat在类更新时自动加载。 在tomcat中可以直接配置自动加载的操作,这样...
  • LIsmooth
  • LIsmooth
  • 2016年10月21日 18:40
  • 4118

通过web.xml文件自动启动spring容器加载对应的配置文件

在web开发中可以在web.xml文件中配置自启动的servlet或者web容器监听器,借助两者中的任何一者都可以完成启动spring web应用上下文的工作。 下面给出使用web监听器的方式来实现启...
  • see__you__again
  • see__you__again
  • 2016年04月21日 21:29
  • 1845

配置tomcat自动加载改变的class文件(无需重启tomcat)

不重启Tomcat有两种方式:热部署、热加载    热部署:容器状况在运行时重新部署整个项目。这类环境下一般整个内存会清空,重新加载,这类方式    有可能会造成sessin丢失等环境。tomcat ...
  • russ44
  • russ44
  • 2016年08月31日 11:30
  • 4718

Flume 抓取日志文件存入MySQL中

代码如下:/** * Licensed to the Apache Software Foundation (ASF) under one * or more contributor licens...
  • poisions
  • poisions
  • 2016年06月16日 23:39
  • 4656

Flume-NG指令集和第一个简单的案例

# flume-ng指令 commands:   help                      display this help text   agent                ...
  • a118170653
  • a118170653
  • 2015年01月23日 11:39
  • 1729
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Flume-ng禁用自动加载配置文件功能
举报原因:
原因补充:

(最多只允许输入30个字)