玩转Flume+Kafka原来也就那点事儿

作者介绍 

程超,易宝支付架构师,10年JAVA工作经验,擅长分布式和大数据技术领域,目前主要从事金融支付类方性能分析向。

 

  一、Flume介绍
 

Flume是一个分布式、可靠、和高可用的海量日志聚合的系统,支持在系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。

设计目标:

(1) 可靠性

当节点出现故障时,日志能够被传送到其他节点上而不会丢失。Flume提供了三种级别的可靠性保障,从强到弱依次分别为:end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。),Store on failure(这也是scribe采用的策略,当数据接收方crash时,将数据写到本地,待恢复后,继续发送),Best effort(数据发送到接收方后,不会进行确认)。

 

(2) 可扩展性

Flume采用了三层架构,分别为agent,collector和storage,每一层均可以水平扩展。其中,所有agent和collector由master统一管理,这使得系统容易监控和维护,且master允许有多个(使用ZooKeeper进行管理和负载均衡),这就避免了单点故障问题。

 

(3) 可管理性

所有agent和colletor由master统一管理,这使得系统便于维护。多master情况,Flume利用ZooKeeper和gossip,保证动态配置数据的一致性。用户可以在master上查看各个数据源或者数据流执行情况,且可以对各个数据源配置和动态加载。Flume提供了web 和shell script command两种形式对数据流进行管理。

 

(4) 功能可扩展性

用户可以根据需要添加自己的agent,collector或者storage。此外,Flume自带了很多组件,包括各种agent(file, syslog等),collector和storage(file,HDFS等)。

 

  二、Flume的一些核心概念
 

 

  三、Flume的整体构成图
 

 

注意:

  1. 源将事件写到一个多或者多个通道中。
  2. 接收器只从一个通道接收事件。
  3. 代理可能会有多个源、通道与接收器。

 

  四、Flume环境配置
 

http://flume.apache.org/ 下载Flume安装包,我们选择最新的1.6.0版本。

 

 

安装包内容如下:

 

配置文件

 

  • 常用配置模式一

 

扫描指定文件

 

 

  • 常用配置模式二

 

 

  • 常用配置模式三

 

 

我们今天重点使用第一种模式,因为要与Kafka相结合。

配置好参数以后,回到如下目录:

 

 

使用如下命令启动Flume:

 

 ./bin/flume-ng agent -n agent -c conf -f conf/hw.conf -Dflume.root.logger=INFO,console

 

 

最后一行显示Component type:SINK,name:k1 started表示启动成功。

 

在启动Flume之前,Zookeeper和Kafka要先启动成功,不然启动Flume会报连不上Kafka的错误。

 

1、使用./zkServer.sh start启动zookeeper。

2、使用如下命令启动Kafka,更详细的Kafka命令请参照我之前总结的http://www.jianshu.com/p/cfedb7122e38 (Kafka常用命令行总结)

 

 

3、使用Kafka默认提供的Consumer来接收消息

 

 

4、编写简单Shell脚本output.sh,并修改权限为可执行权限

 

 

循环向abc.log文件插入test文本消息。

5、执行output.sh。

 

 

整个过程流程如下:

 

 

至此简单的使用介绍已经讲完,关于Flume还有非常多的属性和配置技巧需要我们去挖掘,我们以此文章作为开篇为的是为以后源码分析作为铺垫。


时间: 2024-12-31 17:13:50

玩转Flume+Kafka原来也就那点事儿的相关文章

flume+kafka+hdfs详解

flume架构图 单节点flume配置 flume-1.4.0  启动flume bin/flume-ng agent --conf ./conf  -f conf/flume-conf.properties -Dflume.root.logger=DEBUG,console -n agent -n表示配置文件中agent的名字 agent.sources = r1 agent.sinks = s1 agent.channels = c1 agent.sources.r1.channels = 

flume kafka-关于flume和kafka结合效率的问题

问题描述 关于flume和kafka结合效率的问题 最近做了个测试.是flume+kafka的.是读取文件夹的.31M的文件读了很长时间.大概20分钟.不知道什么原因.哪位大神知道啊.指导下. 下面是flume的配置 #agent section producer.sources = s producer.channels = c producer.sinks = r #source section #producer.sources.s.type = seq #producer.sources

日志系统之Flume采集加morphline解析

概述 这段时间花了部分时间在处理消息总线跟日志的对接上.这里分享一下在日志采集和日志解析中遇到的一些问题和处理方案. 日志采集-flume logstash VS flume 首先谈谈我们在日志采集器上的选型.由于我们选择采用ElasticSearch作为日志的存储与搜索引擎.而基于ELK(ElasticSearch,Logstash,Kibana)的技术栈在日志系统方向又是如此流行,所以把Logstash列入考察对象也是顺理成章,Logstash在几大主流的日志收集器里算是后起之秀,被Elas

IBM BigInsights Flume 轻松部署可扩展的实时日志收集系统

IBM BigInsights Flume 简介 Flume 是开源的海量日志收集系统,支持对日志的实时性收集.初始的 flume 版本是 flume OG(Flume original generation) 由 Cloudera 公司开发,叫做 Cloudera Flume:后来,cloudera 把 flume 贡献给 Apache,版本改为 FLUME NG(Flume next generation)现在称为 Apache Flume.最初始的 BigInsights 使用 flume

Apache Kafka的代码实例

前提: 已经配置好kafka.若未安装,可以参照[Apache Kafka]安装升级指南 已在eclipse里面安装scala插件.Eclipse Kepler中在Help->Eclipse Markectplace中搜索Scala,然后安装即可. 使用maven构建kafka测试project在eclipse中. 创建topic:在kafka的安装目录下执行bin/kafka-create-topic.sh --zookeeper 192.168.20.99:2181 --replica 1

Kafka实战-实时日志统计流程

1.概述 在<Kafka实战-简单示例> 一文中给大家介绍来Kafka的简单示例,演示了如何编写Kafka的代码去生产数据和消费数据,今天给大家介绍如何去整合一个完整的项目,本篇博客我打 算为大家介绍Flume+Kafka+Storm的实时日志统计,由于涉及的内容较多,这里先给大家梳理一个项目的运用这些技术的流程.下面是今天的内容 目录: 项目流程 Flume Kafka Storm 下面开始今天的内容分享. 2.项目流程 在整合这套方案的时候,项目组也是经过一番讨论,在讨论中,观点很多,有人

日志系统之Flume日志收集

最近接手维护一个日志系统,它用于对应用服务器上的日志进行收集然后提供实时分析.处理并最后将日志存储到目标存储引擎.针对这三个环节,业界已经有一套组件来应对各自的需求需求,它们是flume+kafka+hdfs/hbase.我们在实时分析.存储这两个环节,选择跟业界的实践相同,但agent是团队自己写的,出于对多种数据源的扩展需求以及原来收集日志的方式存在的一些不足,于是调研了一下flume的agent.结果是flume非常契合我们的实际需求,并且拥有良好的扩展性与稳定性.于是打算采用flume的

Kafka+Storm+HDFS整合实践

在基于Hadoop平台的很多应用场景中,我们需要对数据进行离线和实时分析,离线分析可以很容易地借助于Hive来实现统计分析,但是对于实时的需求Hive就不合适了.实时应用场景可以使用Storm,它是一个实时处理系统,它为实时处理类应用提供了一个计算模型,可以很容易地进行编程处理.为了统一离线和实时计算,一般情况下,我们都希望将离线和实时计算的数据源的集合统一起来作为输入,然后将数据的流向分别经由实时系统和离线分析系统,分别进行分析处理,这时我们可以考虑将数据源(如使用Flume收集日志)直接连接

Kafka+Storm+HDFS整合

对数据进行离线和实时分析,离线分析可以很容易地借助于Hive来实现统计分析,但是对于实时的需求Hive就不合适了.实时应用场景可以使用Storm,它是一个实时处理系统,它为实时处理类应用提供了一个计算模型,可以很容易地进行编程处理.为了统一离线和实时计算,一般情况下,我们都希望将离线和实时计算的数据源的集合统一起来作为输入,然后将数据的流向分别经由实时系统和离线分析系统,分别进行分析处理,这时我们可以考虑将数据源(如使用Flume收集日志)直接连接一个消息中间件,如Kafka,可以整合Flume