`
qindongliang1922
  • 浏览: 2188598 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7265517b-f87e-3137-b62c-5c6e30e26109
证道Lucene4
浏览量:117663
097be4a0-491e-39c0-89ff-3456fadf8262
证道Hadoop
浏览量:126070
41c37529-f6d8-32e4-8563-3b42b2712a50
证道shell编程
浏览量:60024
43832365-bc15-3f5d-b3cd-c9161722a70c
ELK修真
浏览量:71399
社区版块
存档分类
最新评论

大数据日志收集框架之Flume入门

阅读更多

Flume是Cloudrea公司开源的一款优秀的日志收集框架,主要经历了两个大的版本,分别是
Flume-OG
Flume-NG
OG是0.9.x的版本,依赖zookeeper,角色职责不够单一,
NG是新版本指1.x的版本,官网解释它更轻量级,更小,角色职责更单一,利用点到点进行容错,当然这也是以后的趋势,
要理解Flume,就首先理解它的架构,下面看下,官网的一张拓扑图:




名词解释:
Source:泛指所有的日志收集源,可以是web页面,log文件,数据库,端口,卡口信息等
Channel:提供中转的临时存储区,可以是本地文件,redis,kakfa,数据库,内存等
Sink:指日志最终落地的存储区,可以是数据库,HDFS,Hbase,Hive,本地文件等
Agent:指上面三者组合后的一个完整的数据收集代理,有了这个代理,我们把它安装任何机器上进行收集日志,当然前提是这个Agent符合这个机器上的业务。



下面看下,安装实战例子:

首先下载flume-ng的安装包:

wget http://archive.apache.org/dist/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz

解压
tar -zxvf apache-flume-1.6.0-bin.tar.gz

将根目录下的conf下的一些模板文件,重命名成正常文件


如果没有配置JAVA_HOME为环境变量的话,
则需要在flume-env.sh里面配置jdk的地址


1,然后新建一个first.properties的文件,加入以下配置:


[webmaster@Hadoop-0-187 conf]$ cat first.properties 
# example.conf: A single-node Flume configuration

# Name the components on this agent
#datasource
a1.sources = r1
#store 
a1.sinks = k1
#transfer
a1.channels = c1

# Describe/configure the source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 44444

# Describe the sink
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1



配置例子2:收集本地日志到hadoop里面


hdfs的sink目前支持三种文件类型:
(1)SequenceFile   文本不可见
(2)DataStream   设置hdfs.writeFormat=Text,文本可见
(3)CompressedStream 设置hdfs.codeC=gzip, bzip2, lzo, lzop, snappy,其中一种,后面三个需要编译hadoop时支持才能设置。

默认是SequenceFile,以文本方式写进入的数据,是不可见的,除非改变类型为DataStream ,
然后设置hdfs.writeFormat=Text即可,这个选项默认是Writable

a.sources=exec-source
a.sinks=hdfs-sink
a.channels=ch1

#####source conf

a.sources.exec-source.type=exec
a.sources.exec-source.command=tail -F /ROOT/server/flume/v.log


#####sink conf
a.sinks.hdfs-sink.type=hdfs
a.sinks.hdfs-sink.hdfs.path=hdfs://h1:9000/flume/events
a.sinks.hdfs-sink.hdfs.filePrefix=search
a.sinks.hdfs-sink.hdfs.rollInterval=10
a.sinks.hdfs-sink.hdfs.rollSize=0

#不设置压缩,指定文本方式加入hdfs
#a.sinks.hdfs-sink.hdfs.fileType=DataStream
#a.sinks.hdfs-sink.hdfs.writeFormat=Text

#设置压缩lzo或者snappy
a.sinks.hdfs-sink.hdfs.fileType=CompressedStream
#a.sinks.hdfs-sink.hdfs.codeC=snappy
#a.sinks.hdfs-sink.hdfs.codeC=lzo
#a.sinks.hdfs-sink.hdfs.codeC=lzop
#a.sinks.hdfs-sink.hdfs.codeC=gzip
a.sinks.hdfs-sink.hdfs.codeC=bzip2


####channels conf
a.channels.ch1.type=memory
a.channels.ch1.capacity=1000

a.sources.exec-source.channels=ch1
a.sinks.hdfs-sink.channel=ch1


启动命令: 最后的a与配置文件里面的agent的name必须一致
bin/flume-ng agent --conf conf --conf-file  conf/to_hdfs.properties  --name a

下面是一个按年月日时分,收集的日志:

a.sources=exec-source
a.sinks=hdfs-sink
a.channels=ch1

#####source conf

a.sources.exec-source.type=exec
a.sources.exec-source.command=tail -F /ROOT/server/flume/v.log


#####sink conf
a.sinks.hdfs-sink.type=hdfs
a.sinks.hdfs-sink.hdfs.path=hdfs://h1:9000/flume/events/%Y/%m/%d/%H/%M
a.sinks.hdfs-sink.hdfs.filePrefix=search
a.sinks.hdfs-sink.hdfs.rollInterval=10
a.sinks.hdfs-sink.hdfs.rollSize=0
a.sinks.hdfs-sink.hdfs.useLocalTimeStamp=true

#不设置压缩
#a.sinks.hdfs-sink.hdfs.fileType=DataStream
#a.sinks.hdfs-sink.hdfs.writeFormat=Text

#设置压缩lzo或者snappy
a.sinks.hdfs-sink.hdfs.fileType=CompressedStream
#a.sinks.hdfs-sink.hdfs.codeC=snappy
#a.sinks.hdfs-sink.hdfs.codeC=lzo
#a.sinks.hdfs-sink.hdfs.codeC=lzop
#a.sinks.hdfs-sink.hdfs.codeC=gzip
a.sinks.hdfs-sink.hdfs.codeC=bzip2


####channels conf
a.channels.ch1.type=memory
a.channels.ch1.capacity=1000

a.sources.exec-source.channels=ch1
a.sinks.hdfs-sink.channel=ch1




最后看下,配置flume监听linux的rsyslog的日志:

可用nc模拟telent发送数据到5140端口
echo "<1>hello via syslog" | nc -t localhost 5140
配置/etc/rsyslog.conf
在最后一行,加入tcp转发端口:

*.* @@localhost:5140


如果不生效,可考虑:取消注释,使下面的生效:

# Provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 5140


改完之后,重启rsyslog

sudo service rsyslog restart


然后配置flume
flume监听rsyslog,或者syslog

a.sources=exec-source
a.sinks=hdfs-sink
a.channels=ch1

#####source conf rsyslog 

a.sources.exec-source.type=syslogtcp
a.sources.exec-source.port=5140
a.sources.exec-source.host=0.0.0.0


#####sink conf
a.sinks.hdfs-sink.type=hdfs
a.sinks.hdfs-sink.hdfs.path=hdfs://h1:9000/flume/events/%Y/%m/%d/%H/%M
a.sinks.hdfs-sink.hdfs.filePrefix=search
a.sinks.hdfs-sink.hdfs.rollInterval=10
a.sinks.hdfs-sink.hdfs.rollSize=0
a.sinks.hdfs-sink.hdfs.useLocalTimeStamp=true

#不设置压缩
#a.sinks.hdfs-sink.hdfs.fileType=DataStream
#a.sinks.hdfs-sink.hdfs.writeFormat=Text

#设置压缩lzo或者snappy
a.sinks.hdfs-sink.hdfs.fileType=CompressedStream
#a.sinks.hdfs-sink.hdfs.codeC=snappy
#a.sinks.hdfs-sink.hdfs.codeC=lzo
#a.sinks.hdfs-sink.hdfs.codeC=lzop
#a.sinks.hdfs-sink.hdfs.codeC=gzip
a.sinks.hdfs-sink.hdfs.codeC=bzip2


####channels conf
a.channels.ch1.type=memory
a.channels.ch1.capacity=1000

a.sources.exec-source.channels=ch1
a.sinks.hdfs-sink.channel=ch1


配置完成启动:
然后看flume的log再次登陆终端,推出终端,sudo命令执行失败,flume都会采集转发到hdfs上存储起来


总结:
Flume不愧是大数据平台的一个标准组件,与Hadoop能非常完美的结合,当然,除了与hadoop结合外,还支持Hbase,Hive等, 相比Logstash+ElasticSearch+Kibana的ELK里面的Logstash,flume比较适合结构化的日志收集,存储,而Logstasch则还可以非常方便的解析,清洗数据,虽然flume通过扩展jar也能支持,但logstash使用的是Jruby语法,相比java,则比较简单。这也是ELK都能够快速部署的原因,当然flume也支持向elasticsearch推送索引数据,通过扩展的jar,几乎大部分功能都能轻松实现,所以,没有谁最好用,谁最不好用,只有谁最适合业务,才是最好的!





有什么问题 可以扫码关注微信公众号:我是攻城师(woshigcs),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园














  • 大小: 14.9 KB
1
1
分享到:
评论

相关推荐

    大数据日志分析实战

    在整个项目中,可以看到如何通过各种工具的组合来完成一个复杂的大数据日志分析项目,从数据的收集、存储、实时处理到分析结果的展示,这些工具形成了一个完整的生态系统。而项目本身也提供了从零基础开始学习大数据...

    尚硅谷大数据技术之 Flume 1

    【尚硅谷大数据技术之 Flume 1】章节主要介绍了Apache Flume的基础知识,这是一个用于高效收集、聚合和传输大规模日志数据的分布式服务。Flume以其流数据流的简单灵活架构设计,具备高可靠性和容错性,适用于实时...

    大数据技术之Hadoop(入门).docx

    - **Flume**:用于日志数据的收集、聚合和传输。 - **Kafka**:用于构建实时数据管道,提供消息队列服务。 - **Storm**:实时流处理框架,支持持续计算。 - **Spark**:内存计算框架,可用于批处理、交互式查询和流...

    Flume1.6.0入门:安装、部署、及flume的案例

    综上所述,Flume 作为一款成熟稳定的大数据日志收集工具,不仅在技术上具有显著的优势,而且在实践中也得到了广泛的应用和认可。通过合理的配置和应用,Flume 可以为企业的数据收集和处理提供强有力的支持。

    1大数据技术之Hadoop(入门).doc

    【大数据技术之Hadoop入门】 Hadoop是一种由Apache基金会开发的分布式系统基础架构,主要用于解决海量数据的存储和分析计算问题。它源自于Doug Cutting创建的Lucene项目,旨在实现类似Google的全文搜索功能。随着...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 32.Spark入门之Scala(共173页).pptx

    - **Flume**:Flume用于收集、聚合和移动大量日志数据。 - **Kafka**:Kafka是一个高吞吐量的分布式消息系统,常用于实时流数据处理。 - **Storm**:Storm是一个实时计算系统,用于处理无界数据流。 - **Spark**...

    大数据精品文档-高质量-苦心收集

    Flume主要用于实时、可靠地收集、聚合和移动大量日志数据,它具有高度可配置性和容错性,适合大数据环境下的数据流处理。而Sqoop则是一款用于在Hadoop和结构化数据存储(如关系数据库)之间进行数据迁移的工具,它...

    BigData-Getting-Started:大数据相关框架实战项目(Hadoop, Spark, Storm, Flink)

    大数据相关框架学习 本仓库主要存放了一些学习大数据的实战项目代码,项目来源主要来自慕课网 1. 集群搭建 ...本课程从实时数据产生和流向的各个环节出发,通过集成主流的分布式日志收集框架Flume、分布

    大数据 培训 课程 入门 HDFS hadoop

    - **Flume**:用于收集、聚合和传输大规模日志数据的工具。 - **Mahout**:提供了可扩展的机器学习算法库。 - **Sqoop**:用于在关系型数据库和Hadoop之间导入导出数据的工具。 **Hadoop的应用场景** Hadoop广泛...

    大数据入门指南v1.0

    【大数据入门指南】是针对初学者的一份详细教程,涵盖了大数据技术栈中的多个重要组件,包括Hadoop、Hive、Spark、Storm、Flink、HBase、Kafka、Zookeeper和Flume等。以下是各部分的主要知识点: 1. **Hadoop**: ...

    大数据技术之Kafka教程

    Flume是一款流行的日志收集系统,本章将介绍如何将Flume与Kafka集成,实现日志数据的实时传输和处理。 #### 第七章 Kafka面试题 本章将提供一系列与Kafka相关的面试题目,帮助读者准备相关面试,提升技术水平。 ...

    大数据快速入门

    - **Flume**:一个高可靠、高性能的服务级应用,用于收集、聚合和移动大量日志数据。 - **Flink**:一个流处理框架,提供了低延迟、高吞吐量的数据流处理能力。 - **Kylin**:一个开源的分布式分析引擎,提供了...

    大数据课程分类.pdf

    Flume用于分布式日志收集,Zookeeper提供分布式协调服务,Kafka则是消息队列系统,这些工具在大数据架构中扮演着重要角色,确保数据的流动和处理效率。 **大数据实时计算:** Mahout是机器学习库,Spark提供快速、...

    【大数据入门笔记系列】第一节 大数据常用组件

    Flume是收集、聚合和传输大量日志数据的分布式服务,而Logstash则是一个数据收集引擎,可以将不同来源的数据整合并标准化到目标存储。Zookeeper作为一个协调服务,负责管理分布式应用程序的配置信息和同步任务。...

    搞定大数据平台:从入门到实战

    《搞定大数据平台:从入门到实战》这门课程是一次全面深入的大数据技术之旅,旨在帮助初学者乃至无基础的同学建立起完整的数据处理和分析环境。课程涵盖了大数据领域中广泛使用的技术组件,确保学习者能够从零开始...

    BD大数据十三期.docx

    9. **Flume**: 数据采集工具,用于收集、聚合和移动大量日志数据。 10. **Kafka**: 分布式流处理平台,用于构建实时数据管道和应用。 11. **Storm**: 实时计算系统,处理持续的数据流。 12. **Zookeeper**: 集群协调...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 39.Titan(共20页).pptx

    此外,Sqoop用于数据导入导出,Flume用于日志收集,Kafka作为消息中间件,支持实时数据流处理。 【图计算与Titan】 图计算是大数据分析的一个重要分支,课程提到了Titan,这是一个分布式图数据库,适用于大规模图...

    ApacheCN 大数据译文集.zip

    3. **Flume**:Flume是一款用于收集、聚合和移动大量日志数据的工具,适用于数据采集。译文可能会讲解Flume的数据源、通道和接收器配置,以及如何搭建高可用的Flume集群。 4. **Kafka**:Kafka是一个高吞吐量的...

    精品课程推荐 大数据与云计算教程课件 优质大数据课程 40.Neo4j(共50页).pptx

    【大数据与云计算教程】课程涵盖了从基础到高级的大数据处理技术,主要围绕Hadoop和相关生态系统的组件展开,包括Hadoop的安装与入门、MapReduce编程模型、HDFS分布式文件系统、Hive数据仓库工具、HBase分布式数据库...

Global site tag (gtag.js) - Google Analytics