【Java】Appache Flume 中文介绍
Flume 是什么
Apache Flume是一个高可靠、高可用的分布式的海量日志收集、聚合、传输系统。它可以从不同的日志源采集数据并集中存储。
Flume也算是Hadoop生态系统的一部分,源于Cloudera,目前是Apache基金会的顶级项目之一。Flume有两条产品线,0.9.x版本和1.x版本。
官网:http://flume.appache.org/
- 收集、聚合事件流数据的分布式框架
- 通常用于log数据
- 采用ad-hoc方案,明显优点如下:
- 可靠的、可伸缩、可管理、可定制、高性能
- 声明式配置,可以动态更新配置
- 提供上下文路由功能
- 支持负载均衡和故障转移
- 功能丰富
- 完全的可扩展
核心概念
- Event
- Client
- Agent
- Sources、Channels、Sinks
- 其他组件:Interceptors、Channel Selectors、Sink Processor
核心概念:Event
Event是Flume数据传输的基本单元。flume以事件的形式将数据从源头传送到最终的目的。Event由可选的hearders和载有数据的一个byte array构成。
- 载有的数据对flume是不透明的
- Headers是容纳了key-value字符串对的无序集合,key在集合内是唯一的。
- Headers可以在上下文路由中使用扩展
- public interface Event {
- public Map<String, String> getHeaders();
- public void setHeaders(Map<String, String> headers);
- public byte[] getBody();
- public void setBody(byte[] body);
- }
public interface Event {public Map<String, String> getHeaders();public void setHeaders(Map<String, String> headers);public byte[] getBody();public void setBody(byte[] body);
}
核心概念:Client
Clinet是一个将原始log包装成events并且发送它们到一个或多个agent的实体。
- 例如
- Flume log4j Appender
- 可以使用Client SDK (org.apache.flume.api)定制特定的Client
- 目的是从数据源系统中解耦Flume
- 在flume的拓扑结构中不是必须的
核心概念:Agent
一个Agent包含Sources, Channels, Sinks和其他组件,它利用这些组件将events从一个节点传输到另一个节点或最终目的。
- agent是flume流的基础部分。
- flume为这些组件提供了配置、生命周期管理、监控支持。
核心概念:Source
Source负责接收events或通过特殊机制产生events,并将events批量的放到一个或多个Channels。有event驱动和轮询2种类型的Source
- 不同类型的Source:
- 和众所周知的系统集成的Sources: Syslog, Netcat
- 自动生成事件的Sources: Exec, SEQ
- 用于Agent和Agent之间通信的IPC Sources: Avro
- Source必须至少和一个channel关联
核心概念:Channel
Channel位于Source和Sink之间,用于缓存进来的events,当Sink成功的将events发送到下一跳的channel或最终目的,events从Channel移除。
- 不同的Channels提供的持久化水平也是不一样的:
- Memory Channel: volatile
- File Channel: 基于WAL(预写式日志Write-Ahead Logging)实现
- JDBC Channel: 基于嵌入Database实现
- Channels支持事务
- 提供较弱的顺序保证
- 可以和任何数量的Source和Sink工作
核心概念:Sink
Sink负责将events传输到下一跳或最终目的,成功完成后将events从channel移除。
- 不同类型的Sinks:
- 存储events到最终目的的终端Sink. 比如: HDFS, HBase
- 自动消耗的Sinks. 比如: Null Sink
- 用于Agent间通信的IPC sink: Avro
- 必须作用与一个确切的channel
Flow可靠性
- 可靠性基于:
- Agent间事务的交换
- Flow中,Channel的持久特性
- 可用性:
- 内建的Load balancing支持
- 内建的Failover支持
核心概念:Interceptor
用于Source的一组Interceptor,按照预设的顺序在必要地方装饰和过滤events。
- 内建的Interceptors允许增加event的headers比如:时间戳、主机名、静态标记等等
- 定制的interceptors可以通过内省event payload(读取原始日志),在必要的地方创建一个特定的headers。
核心概念:Channel Selector
Channel Selector允许Source基于预设的标准,从所有Channel中,选择一个或多个Channel
- 内建的Channel Selectors:
- 复制Replicating: event被复制到相关的channel
- 复用Multiplexing: 基于hearder,event被路由到特定的channel
多个Sink可以构成一个Sink Group。一个Sink Processor负责从一个指定的Sink Group中激活一个Sink。Sink Processor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败时转移到另一个。
- Flume通过Sink Processor实现负载均衡(Load Balancing)和故障转移(failover)
- 内建的Sink Processors:
- Load Balancing Sink Processor – 使用RANDOM, ROUND_ROBIN或定制的选择算法
- Failover Sink Processor
- Default Sink Processor(单Sink)
- 所有的Sink都是采取轮询(polling)的方式从Channel上获取events。这个动作是通过Sink Runner激活的
- Sink Processor充当Sink的一个代理
【Java】Appache Flume 中文介绍相关推荐
- Java Servlet API中文说明文档
Java Servlet API中文说明文档 目 录 1.... Servet资料 1.1 绪言 1.2 谁需要读这份文档 1.3 Java Servlet API的组成 ...
- Java - JWT的简单介绍和使用
Java - JWT的简单介绍和使用 前言 一. JWT 基础知识 1.1 session 案例测试 1.2 JWT 结构 1.2.1 Header 1.2.2 Payload 1.2.3 Signa ...
- TTCN简介 中文介绍
TTCN简介 中文介绍 TTCN, 简介, 中文 TTCN, 简介, 中文 中文介绍 TTCN简介 TTCN- 3 (Testing and Test Control Notation – ver ...
- java下输出中文的一点研究
网上或者大部分书上都说Java中输出中文使用FileReader类就可以了,但是当你读取一个中文文档时,你会发现,除了乱码,还是乱码.究其原因,这其实是文件流读取时使用的编码方式和文件本身编码方式不同 ...
- 在Unix/Linux上令(java)JVM支持中文输出
在Unix/Linux上令(java)JVM支持中文输出 一.在Unix/Linux上令JVM支持中文输出 如 果用户使用的是UNIX的远程服务器,就会遇到中文字体在图像中输出的问题,特别是由于许多管 ...
- JAVA API1.7中文手册
说起程序员常用的几种计算机语言,java绝对是最先被提起的一种.而且现在很多新入行的程序员选择计算机语言的时候大多是选择这个.既然选择学习这门计算机语言,那JAVA API1.7中文手册这款软件就一定 ...
- JAVA垃圾回收器的介绍
JAVA垃圾回收器的介绍 垃圾回收器一共有7种: 如下图 其中G1 和 CMS 属于比较新的,暂停时间比之前较少. serial serial Old parNew 这个是serial的多线程版本. ...
- Java常用日志框架介绍
Java常用日志框架介绍 文章目录 Java常用日志框架介绍 日志接口和日志框架的区别 各个框架出现的时间线 桥接包 Log4j2 常用搭配 单独的log4j 使用JCL(commons-loggin ...
- java web服务器tomcat介绍【转载】
机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...
最新文章
- 如何从阿里云Code升级至Codeup
- tomcat异常处理经验汇总
- Android进程退出的方法
- GDIDrawing3——GDI+绘图(三)
- 120xa正反转参数_你知道变频器的“正反转死区时间”吗?它的“停机方式”有几种?...
- access函数_ACCESS中的DLookUp函数是如何运算的?
- C++结构体作为函数参数传参
- Java伪代码之大道至简读后感
- 【数据科学系统学习】机器学习算法 # 西瓜书学习记录 [8] 支持向量机(二)...
- 天若OCR v5.0 自用免配置增强版
- 【Android -- 学习】学习资料汇总
- python地理空间_Python批量下载地理空间数据云数据!Python无所不能!-站长资讯中心...
- 【吉大刘大有数据结构绿皮书】例3.16:已知非空线性链表第一个结点的指针为list,写一算法,删除线性链表中的第i个结点。
- centos6 安装 directAdmin
- web部署到服务器显示404,WAR包部署到服务器的tomcat下404报错
- shell 中字符串变量处理
- 我的航拍直升机 控制基站软件的编写历程(3.5)—分析界面
- 区块链社交时代 或许永远不会到来
- 计算机图形学五:几何-Geometry
- java 布林运算_java11教程--布尔计算
热门文章
- 全方位揭秘!大数据从0到1的完美落地之运行流程和分片机制
- StrongSwan虚拟测试环境搭建
- matlab中seis,SeisSeek下载-SEGY文件解析工具 v1.0 免费版 - 安下载
- 网络层-B类地址子网划分
- SATA游标卡尺测量时显示闪烁
- 做题记录 洛谷P1230 智力大冲浪
- 一些Markdown编辑器
- r语言Isfit_R语言实战大作业——糖尿病预测
- Spring Boot实现任意位置的properties及yml文件内容配置与获取
- [1205] [40001]: Lock wait timeout exceeded; try restarting transaction