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)缺乏日志完成性验证


带开环升压转换器和逆变器的太阳能光伏系统 太阳能光伏系统驱动开环升压转换器和SPWM逆变器提供波形稳定、设计简单的交流电的模型 Simulink模型展示了一个完整的基于太阳能光伏的直流到交流电力转换系统,该系统由简单、透明、易于理解的模块构建而成。该系统从配置为提供真实直流输出电压的光伏阵列开始,然后由开环DC-DC升压转换器进行处理。升压转换器将光伏电压提高到适合为单相全桥逆变器供电的稳定直流链路电平。 逆变器使用正弦PWM(SPWM)开关来产生干净的交流输出波形,使该模型成为研究直流-交流转换基本操作的理想选择。该设计避免了闭环和MPPT的复杂性,使用户能够专注于光伏接口、升压转换和逆变器开关的核心概念。 此模型包含的主要功能: •太阳能光伏阵列在标准条件下产生~200V电压 •具有固定占空比操作的开环升压转换器 •直流链路电容器,用于平滑和稳定转换器输出 •单相全桥SPWM逆变器 •交流负载,用于观察实际输出行为 •显示光伏电压、升压输出、直流链路电压、逆变器交流波形和负载电流的组织良好的范围 •完全可编辑的结构,适合分析、实验和扩展 该模型旨在为太阳能直流-交流转换提供一个干净高效的仿真框架。布局简单明了,允许用户快速了解信号流,检查各个阶段,并根据需要修改参数。 系统架构有意保持模块化,因此可以轻松扩展,例如通过添加MPPT、动态负载行为、闭环升压控制或并网逆变器概念。该模型为进一步开发或整合到更大的可再生能源模拟中奠定了坚实的基础。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值