文档章节

Flume源码学习知识储备

DanierWei
 DanierWei
发布于 2017/05/03 22:31
字数 601
阅读 16
收藏 1
  • source类图关系举例 (eg:ExecSource)

    ExecSource

  • 关系图中的Stable Public 分别为InterfaceAudience InterfaceStability的注解类型。

    1. InterfaceAudience 类包含有三个注解类型,用来说明被他们注解的类型的潜在使用范围,即audience 源码如下:
        import java.lang.annotation.Documented;
      
        /**
      	* Annotation to inform users of a package, class or method's intended audience.
      	* Currently the audience can be {@link Public}, {@link LimitedPrivate} or
      	* {@link Private}. <br>
      	* All public classes must have InterfaceAudience annotation. <br>
      	* <ul>
      	* <li>Public classes that are not marked with this annotation must be
      	* considered by default as {@link Private}.</li>
      	*
      	* <li>External applications must only use classes that are marked
      	* {@link Public}. Avoid using non public classes as these classes
      	* could be removed or change in incompatible ways.</li>
      	*
      	* <li>Flume projects must only use classes that are marked
      	* {@link LimitedPrivate} or {@link Public}</li>
      	*
      	* <li> Methods may have a different annotation that it is more restrictive
      	* compared to the audience classification of the class. Example: A class
      	* might be {@link Public}, but a method may be {@link LimitedPrivate}
      	* </li></ul>
      	*/
      	@InterfaceAudience.Public
      	@InterfaceStability.Evolving
      	public class InterfaceAudience {
      		/**
      		* Intended for use by any project or application.
              * 被注解的类型对多有工程和应用可用。
      		*/
      		@Documented public @interface Public {};
      
      		/**
      		* Intended only for the project(s) specified in the annotation.
      		* For example, "Common", "HDFS", "MapReduce", "ZooKeeper", "HBase".
              * 被注解的类型只能用于某些特定的工程或应用,如Common,HDFS,MapReduce,ZooKeeper,HBase等
      		*/
      		@Documented public @interface LimitedPrivate {
      			String[] value();
      		};
      
      		/**
      		* Intended for use only within Flume
              * 被注解的类型只能用于Flume。
      		*/
      		@Documented public @interface Private {};
      
      		private InterfaceAudience() {} // Audience can't exist on its own
      	}
      
    2. `InterfaceStability` 类包含三个注解,用于说明被他们注解的类型的稳定性 源码如下:
    
import java.lang.annotation.Documented;

			/**
 			* Annotation to inform users of how much to rely on a particular package,
 			* class or method not changing over time. Currently the stability can be
 			* {@link Stable}, {@link Evolving} or {@link Unstable}. <br>
 			*
 			* <ul><li>All classes that are annotated with {@link Public} or
 			* {@link LimitedPrivate} must have InterfaceStability annotation. </li>
 			* <li>Classes that are {@link Private} are to be considered unstable unless
 			* a different InterfaceStability annotation states otherwise.</li>
 			* <li>Incompatible changes must not be made to classes marked as stable.</li>
 			* </ul>
 			*/
			@InterfaceAudience.Public
			@InterfaceStability.Evolving
			public class InterfaceStability {
  				/**
   				* Can evolve while retaining compatibility for minor release boundaries.;
   				* can break compatibility only at major release (ie. at m.0).
                   * 主版本是稳定的,不同主版本之间可能不兼容。
   				*/
  				@Documented
  				public @interface Stable {};

  				/**
   				* Evolving, but can break compatibility at minor release (i.e. m.x)
                   * 不停在变化的,不同小版本之间也可能不兼容。
   				*/
  				@Documented
  				public @interface Evolving {};

  				/**
   				* No guarantee is provided as to reliability or stability across any
   				* level of release granularity.
                   * 稳定性没有任何保证。
   				*/
  				@Documented
  				public @interface Unstable {};
			}
  • 类图中LifecycleState表示组件source的生命周期枚举值,源码:
 package org.apache.flume.lifecycle;

  public enum LifecycleState {
      IDLE, START, STOP, ERROR;//空闲、开始、结束、错误

      public static final LifecycleState[] START_OR_ERROR = new LifecycleState[]{
START, ERROR };
      public static final LifecycleState[] STOP_OR_ERROR = new LifecycleState[] {
STOP, ERROR };
  }

© 著作权归作者所有

DanierWei
粉丝 1
博文 9
码字总数 5765
作品 0
杭州
私信 提问
Flume学习系列(一)----总体介绍

前言: 本文是flume学习系列的开篇,主要介绍了flume的各种组件及相关配置。但是本篇文章并不打算从环境搭建开始,因为比较简单而且网上资料也很详尽: So,研读了一下官方文档,特此把Flume...

小北觅
2018/08/20
0
0
大数据教程(12.5)日志采集框架Flume

前面的章节介绍了hive的知识,本节博主将分享日志采集框架Flume的相关知识。在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集、结果数据导出、...

em_aaron
02/12
54
0
Flume学习系列(五)---- Custom Interceptors(自定义拦截器)

前言:接上一篇,本篇文章实现一个自定义的拦截器。主要功能是在Event的body中添加IP地址。因为没有拦截器可以在Body中添加(host是在header中添加),所以需要自定义。掌握了这个,其他的情...

小北觅
2018/08/21
0
0
flume 1.7 源码导入eclipse windows

安装maven,设置MAVEN_HOME等配置 下载flume源码 eclipse-oxygen,设置eclipse 使用外部maven,并配置settings.xml 遇到问题: 如果顺利,已将所需jar都下载下来了。 导入后遇到如下问题 fl...

柯里昂
2017/10/31
93
0
Apache Flume 1.6.0 发布,日志服务器

Apache Flume 1.6.0 发布,此版本现已提供下载: http://flume.apache.org/download.html 更新内容: ** Bug 修复 [FLUME-1793] - Unit test TestElasticSearchLogStashEventSerializer fail......

oschina
2015/06/03
3.1K
2

没有更多内容

加载失败,请刷新页面

加载更多

64.监控平台介绍 安装zabbix 忘记admin密码

19.1 Linux监控平台介绍 19.2 zabbix监控介绍 19.3/19.4/19.6 安装zabbix 19.5 忘记Admin密码如何做 19.1 Linux监控平台介绍: 常见开源监控软件 ~1.cacti、nagios、zabbix、smokeping、ope...

oschina130111
今天
10
0
当餐饮遇上大数据,嗯真香!

之前去开了一场会,主题是「餐饮领袖新零售峰会」。认真听完了餐饮前辈和新秀们的分享,觉得获益匪浅,把脑子里的核心纪要整理了一下,今天和大家做一个简单的分享,欢迎感兴趣的小伙伴一起交...

数澜科技
今天
7
0
DNS-over-HTTPS 的下一代是 DNS ON BLOCKCHAIN

本文作者:PETER LAI ,是 Diode 的区块链工程师。在进入软件开发领域之前,他主要是在做工商管理相关工作。Peter Lai 也是一位活跃的开源贡献者。目前,他正在与 Diode 团队一起开发基于区块...

红薯
今天
8
0
CC攻击带来的危害我们该如何防御?

随着网络的发展带给我们很多的便利,但是同时也带给我们一些网站安全问题,网络攻击就是常见的网站安全问题。其中作为站长最常见的就是CC攻击,CC攻击是网络攻击方式的一种,是一种比较常见的...

云漫网络Ruan
今天
11
0
实验分析性专业硕士提纲撰写要点

为什么您需要研究论文的提纲? 首先当您进行研究时,您需要聚集许多信息和想法,研究论文提纲可以较好地组织你的想法, 了解您研究资料的流畅度和程度。确保你写作时不会错过任何重要资料以此...

论文辅导员
今天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部