【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 中文介绍的更多相关文章
- Appache Flume 中文介绍(转)
Flume 是什么 Apache Flume是一个高可靠.高可用的分布式的海量日志收集.聚合.传输系统.它可以从不同的日志源采集数据并集中存储. Flume也算是Hadoop生态系统的一 ...
- Apache Solr 初级教程(介绍、安装部署、Java接口、中文分词)
Python爬虫视频教程零基础小白到scrapy爬虫高手-轻松入门 https://item.taobao.com/item.htm?spm=a1z38n.10677092.0.0.482434a6E ...
- Java Servlet API中文说明文档
Java Servlet API中文说明文档 目 录 1.... Servet资料 1.1 绪言 1.2 谁需要读这份文档 1.3 Java Servlet API的组成 ...
- Java编程中中文乱码问题的研究及解决方案
0 引言 Java最大的特性是与平台的无关性及开发环境的多样性.字符串被Java应用程序转化之前,是根据操作系统默认的编码方式编码.Java语言内部采用Unicode编码,它是定长双字节编码,即任何符 ...
- [转载]将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,解决办法
eclipse 代码中文注释乱码 求解决 将别人的项目或JAVA文件导入到自己的Eclipse中时,常常会出现JAVA文件的中文注释变成乱码的情况,主要原因就是别人的IDE编码格式和自己的Eclips ...
- Zigbee2007协议中文介绍
Zigbee2007中文介绍ZigBee2007规范定义了ZigBee和ZigBee Pro两个特性集,全新的ZigBee 2007规范建立在ZigBee2006之上,不但提供了增强型的功能而且在某些 ...
- Java IO读写中文各种乱码问题 【转】
Java IO读写中文各种乱码问题 转自:http://blog.sina.com.cn/s/blog_484ab56f0101muzh.html java.io.*读写中文各种乱码,很费劲.不完全解 ...
- 第一章 flume架构介绍
1.flume概念介绍 1.1 常见的分布式日志收集系统 Scribe是facebook开源的日志收集系统,在facebook内部已经得到大量的 ...
- java web服务器tomcat介绍【转载】
机器矩阵2016-08-10 22:14 java程序员亲切地称他为tom猫,看到这只猫可以说明1 服务器部署成功了 ,2 网络是联通的. 到底这只猫是什么来头呢? tomcat是Apache基金会下 ...
随机推荐
- ubuntu安装mysql 并对外暴露3306端口
安装 sudo apt-get install mysql-client mysql-server vi /etc/mysql/mysql.conf.d/mysqld.cnf bind 127注掉 m ...
- f-li.cn
package org.rx.service.command.impl; import lombok.Getter; import lombok.Setter; import org.rx.core. ...
- 并发编程(五)——GIL全局解释器锁、死锁现象与递归锁、信号量、Event事件、线程queue
GIL.死锁现象与递归锁.信号量.Event事件.线程queue 一.GIL全局解释器锁 1.什么是全局解释器锁 GIL本质就是一把互斥锁,相当于执行权限,每个进程内都会存在一把GIL,同一进程内的多 ...
- APP接口测试和功能测试点
- react-swiper 如何实现滑动小卡片的移动?
1.引入插件 import ReactSwipes from 'react-swipes'; import './swiperCard.css'; 2.代码构成 export default clas ...
- Object相关方法
const object1 = { a: 'somestring', b: 42, c: false }; console.log(Object.values(object1)); // expect ...
- runtime和runloop问答
Runtime 01 问题: objc在向一个对象发送消息时,发生了什么? 解答: 根据对象的 isa 指针找到类对象 id,在查询类对象里面的 methodLists 方法函数列表,如果没有在好到, ...
- tomcat访问控制及站点部署
访问控制: 在访问tomcat服务器状态时,出现403错误. 解决方法: [root@localhost ~]# vim /usr/local/tomcat8/conf/tomcat-users.xm ...
- Python学习笔记(九)——字符串
# 5.1 字符串的拼接 str1 = '我今天一共走了' num = 1280 str2 = '步' print(str1+str(num)+str2) # 计算字符串长度 print(len(st ...
- Linux系统的buff/cache缓存清理脚本
cacheClean.sh #!/bin/bash # 日期: # 作者: 黄慧丰/何鹏举 # 说明: fastdfs所在的linux系统的buffer cache过大, 且并没有有效的自动回收, 因 ...