Apache Flume初识

Apache Flume 是一款分布式、可靠且高可用的系统,用于高效地收集、聚合及传输大量来自不同源的日志数据。它由Apache社区维护,简化后的架构包括source、sink和channel三部分。


官网介绍:http://flume.apache.org/FlumeUserGuide.html


Apache flume是一个分布式的可靠的高可用的系统,能够有效地收集、汇总和移动大量的从许多不同的来源日志数据,并集中式存储数据。

1)它是FlumeOG的重构版本,apache来开发管理。
2)它变的很简单, Master、zookeeper、collector和WebUI没有了
3)简化成了
1、source (avro:很简单使用;exec:使用shell命令; Http Post source;Spool Directory Source; JMS Source等
2、sink (hdfs、file、kafka)
3、channel(Memory、disk)

系统要求

  1. Java Runtime Environment - Java 1.6 or later (Java 1.7 Recommended)
  2. Memory - Sufficient memory for configurations used by sources, channels or sinks
  3. Disk Space - Sufficient disk space for configurations used by channels or sinks
  4. Directory Permissions - Read/Write permissions for directories used by agent

数据流模型


数据获取

1)RPC
1、在flume中 ,Avro客户端使用AVRO RPC机制可以发送一个给定的文件 Avro 源:
2、$ bin/flume-ng avro-client -H localhost -p 31515 -F /usr/logs/log.10
3、上面的命令将发送的/ usr/logs/log.10的内容到 flume源监听端
2)Executing commands
1、还有一个exec执行一个给定的命令获得输出的源。一个单一的输出,即“line”。回车('\ R')或换行符('\ N'),或两者一起的文本。注:Flume不支持tail做为一个源,不过可以通过exec tail。
3)Network streams
Flume支持以下的机制,从流行的日志流类型读取数据
1、Avro(数据序列化系统)
2、Syslog
3、Netcat(使用TCP或UDP协议的网络连接去读写数据)


数据channel:


数据sink:



举例说明:

agent.sources = tailPlay
agent.channels = memoryChannel
agent.sinks = kafka

#Describe channels
agent.channels.memoryChannel.type = memory
agent.channels.memoryChannel.capacity = 500

#Describe sources 
agent.sources.tailPlay.type = exec
agent.sources.tailPlay.command = tail -F /export/servers/nginx/logs/x.jd.com/x.jd.com_info.log
agent.sources.tailPlay.channels = memoryChannel

#Describe sinks
agent.sinks.kafka.type = com.xxx.flume.sink.kafka.KafkaSink
agent.sinks.kafka.channel = memoryChannel
agent.sinks.kafka.serializer.class = kafka.serializer.StringEncoder
agent.sinks.kafka.metadata.broker.list=192.168.39.169:9092,192.168.39.170:9092,192.168.39.171:9092
agent.sinks.kafka.topic=play

bin/flume-ng agent --conf conf --conf-file  flume-conf-play.properties --name agent  -Dflume.root.logger=INFO,console

agent会自动收集日志并通过kafka发送


实现Configurable并继承AbstractSink,可以实现自己的sink插件

public class KafkaSink extends AbstractSink implements Configurable{

}


flume性能优化:

优化channel
agent.channels.memoryChannel.capacity = 50000
agent.channels.memoryChannel.transactionCapacity=50000

优化source

agent.sources.tailPlay.batchTimeout = 100
agent.sources.tailPlay.batchSize = 2000

优化sink(以Kafka为例)

agent.sinks.kafka.message.batchSize=1000(kafka最大批量发送数目)
agent.sinks.kafka.message.timeout.ms=100 (Kafka发送最低超时时间)


目前apache-flume-1.4.0是apache的第一版

1)文档资料匮乏,学习的代价比较高
2)日志收集只能按行读取
3)缺乏日志完成性验证


本 PPT 介绍了制药厂房中供配电系统的总体概念与设计要点,内容包括: 洁净厂房的特点及其对供配电系统的特殊要求; 供配电设计的一般原则与依据的国家/行业标准; 从上级电网到工厂变电所、终端配电的总体结构与模块化设计思路; 供配电范围:动力配电、照明、通讯、接地、防雷与消防等; 动力配电中电压等级、接地系统形式(如 TN-S)、负荷等级与可靠性、UPS 配置等; 照明的电源方式、光源选择、安装方式、应急与备用照明要求; 通讯系统、监控系统在生产管理与消防中的作用; 接地与等电位连接、防雷等级与防雷措施; 消防设施及其专用供电(消防泵、排烟风机、消防控制室、应急照明等); 常见高压柜、动力柜、照明箱等配电设备案例及部分设计图纸示意; 公司已完成的典型项目案例。 1. 工程背景与总体框架 所属领域:制药厂房工程的公用工程系统,其中本 PPT 聚焦于供配电系统。 放在整个公用工程中的位置:与给排水、纯化水/注射用水、气体与热力、暖通空调、自动化控制等系统并列。 2. Part 01 供配电概述 2.1 洁净厂房的特点 空间密闭,结构复杂、走向曲折; 单相设备、仪器种类多,工艺设备昂贵、精密; 装修材料与工艺材料种类多,对尘埃、静电等更敏感。 这些特点决定了:供配电系统要安全可靠、减少积尘、便于清洁和维护。 2.2 供配电总则 供配电设计应满足: 可靠、经济、适用; 保障人身与财产安全; 便于安装与维护; 采用技术先进的设备与方案。 2.3 设计依据与规范 引用了大量俄语标准(ГОСТ、СНиП、SanPiN 等)以及国家、行业和地方规范,作为设计的法规基础文件,包括: 电气设备、接线、接地、电气安全; 建筑物电气装置、照明标准; 卫生与安全相关规范等。 3. Part 02 供配电总览 从电源系统整体结构进行总览: 上级:地方电网; 工厂变电所(10kV 配电装置、变压
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值