- 浏览: 2187834 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (682)
- 软件思想 (7)
- Lucene(修真篇) (17)
- Lucene(仙界篇) (20)
- Lucene(神界篇) (11)
- Solr (48)
- Hadoop (77)
- Spark (38)
- Hbase (26)
- Hive (19)
- Pig (25)
- ELK (64)
- Zookeeper (12)
- JAVA (119)
- Linux (59)
- 多线程 (8)
- Nutch (5)
- JAVA EE (21)
- Oracle (7)
- Python (32)
- Xml (5)
- Gson (1)
- Cygwin (1)
- JavaScript (4)
- MySQL (9)
- Lucene/Solr(转) (5)
- 缓存 (2)
- Github/Git (1)
- 开源爬虫 (1)
- Hadoop运维 (7)
- shell命令 (9)
- 生活感悟 (42)
- shell编程 (23)
- Scala (11)
- MongoDB (3)
- docker (2)
- Nodejs (3)
- Neo4j (5)
- storm (3)
- opencv (1)
最新评论
-
qindongliang1922:
粟谷_sugu 写道不太理解“分词字段存储docvalue是没 ...
浅谈Lucene中的DocValues -
粟谷_sugu:
不太理解“分词字段存储docvalue是没有意义的”,这句话, ...
浅谈Lucene中的DocValues -
yin_bp:
高性能elasticsearch ORM开发库使用文档http ...
为什么说Elasticsearch搜索是近实时的? -
hackWang:
请问博主,有用solr做电商的搜索项目?
Solr中Group和Facet的用法 -
章司nana:
遇到的问题同楼上 为什么会返回null
Lucene4.3开发之第八步之渡劫初期(八)
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),在后台留言咨询。
本公众号的内容是有关搜索和大数据技术和互联网等方面内容的分享,也是一个温馨的技术互动交流的小家园
发表评论
-
Apache Flink在阿里的使用(译)
2019-02-21 21:18 1204Flink是未来大数据实时 ... -
计算机图形处理的一些知识
2018-04-25 17:46 1234最近在搞opencv来做一些 ... -
如何在kylin中构建一个cube
2017-07-11 19:06 1282前面的文章介绍了Apache Kylin的安装及数据仓 ... -
Apache Kylin的入门安装
2017-06-27 21:27 2148Apache Kylin™是一个开源的分布式分析引擎,提供 ... -
ES-Hadoop插件介绍
2017-04-27 18:07 1996上篇文章,写了使用spark集成es框架,并向es写入数据,虽 ... -
如何在Scala中读取Hadoop集群上的gz压缩文件
2017-04-05 18:51 2138存在Hadoop集群上的文件,大部分都会经过压缩,如果是压缩 ... -
如何收集项目日志统一发送到kafka中?
2017-02-07 19:07 2797上一篇(http://qindongliang.iteye. ... -
Hue+Hive临时目录权限不够解决方案
2016-06-14 10:40 4725安装Hue后,可能会分配多个账户给一些业务部门操作hive,虽 ... -
Hadoop的8088页面失效问题
2016-03-31 11:21 4457前两天重启了测试的hadoop集群,今天访问集群的8088任 ... -
Hadoop+Hbase集群数据迁移问题
2016-03-23 21:00 2527数据迁移或备份是任何 ... -
如何监控你的Hadoop+Hbase集群?
2016-03-21 16:10 4924前言 监控hadoop的框架 ... -
Logstash与Kafka集成
2016-02-24 18:44 11645在ELKK的架构中,各个框架的角色分工如下: Elastic ... -
Kakfa集群搭建
2016-02-23 15:36 2653先来整体熟悉下Kafka的一些概念和架构 (一)什么是Ka ... -
Apache Tez0.7编译笔记
2016-01-15 16:33 2535目前最新的Tez版本是0.8,但还不是稳定版,所以大家还 ... -
Bug死磕之hue集成的oozie+pig出现资源任务死锁问题
2016-01-14 15:52 3841这两天,打算给现有的 ... -
Hadoop2.7.1和Hbase0.98添加LZO压缩
2016-01-04 17:46 26071,执行命令安装一些依赖组件 yum install -y ... -
Hadoop2.7.1配置NameNode+ResourceManager高可用原理分析
2015-11-11 19:51 3184关于NameNode高可靠需要配置的文件有core-site ... -
设置Hadoop+Hbase集群pid文件存储位置
2015-10-20 13:40 2862有时候,我们对运行几 ... -
Hadoop+Maven项目打包异常
2015-08-11 19:36 1591先简单说下业务:有一个单独的模块,可以在远程下载Hadoop上 ... -
CDH-Hadoop2.6+ Apache Pig0.15安装记录
2015-06-26 20:06 27371,使用CDH的hadoop里面有对应的组件Pig,但版本较低 ...
相关推荐
在整个项目中,可以看到如何通过各种工具的组合来完成一个复杂的大数据日志分析项目,从数据的收集、存储、实时处理到分析结果的展示,这些工具形成了一个完整的生态系统。而项目本身也提供了从零基础开始学习大数据...
【尚硅谷大数据技术之 Flume 1】章节主要介绍了Apache Flume的基础知识,这是一个用于高效收集、聚合和传输大规模日志数据的分布式服务。Flume以其流数据流的简单灵活架构设计,具备高可靠性和容错性,适用于实时...
- **Flume**:用于日志数据的收集、聚合和传输。 - **Kafka**:用于构建实时数据管道,提供消息队列服务。 - **Storm**:实时流处理框架,支持持续计算。 - **Spark**:内存计算框架,可用于批处理、交互式查询和流...
综上所述,Flume 作为一款成熟稳定的大数据日志收集工具,不仅在技术上具有显著的优势,而且在实践中也得到了广泛的应用和认可。通过合理的配置和应用,Flume 可以为企业的数据收集和处理提供强有力的支持。
【大数据技术之Hadoop入门】 Hadoop是一种由Apache基金会开发的分布式系统基础架构,主要用于解决海量数据的存储和分析计算问题。它源自于Doug Cutting创建的Lucene项目,旨在实现类似Google的全文搜索功能。随着...
- **Flume**:Flume用于收集、聚合和移动大量日志数据。 - **Kafka**:Kafka是一个高吞吐量的分布式消息系统,常用于实时流数据处理。 - **Storm**:Storm是一个实时计算系统,用于处理无界数据流。 - **Spark**...
Flume主要用于实时、可靠地收集、聚合和移动大量日志数据,它具有高度可配置性和容错性,适合大数据环境下的数据流处理。而Sqoop则是一款用于在Hadoop和结构化数据存储(如关系数据库)之间进行数据迁移的工具,它...
大数据相关框架学习 本仓库主要存放了一些学习大数据的实战项目代码,项目来源主要来自慕课网 1. 集群搭建 ...本课程从实时数据产生和流向的各个环节出发,通过集成主流的分布式日志收集框架Flume、分布
- **Flume**:用于收集、聚合和传输大规模日志数据的工具。 - **Mahout**:提供了可扩展的机器学习算法库。 - **Sqoop**:用于在关系型数据库和Hadoop之间导入导出数据的工具。 **Hadoop的应用场景** Hadoop广泛...
【大数据入门指南】是针对初学者的一份详细教程,涵盖了大数据技术栈中的多个重要组件,包括Hadoop、Hive、Spark、Storm、Flink、HBase、Kafka、Zookeeper和Flume等。以下是各部分的主要知识点: 1. **Hadoop**: ...
Flume是一款流行的日志收集系统,本章将介绍如何将Flume与Kafka集成,实现日志数据的实时传输和处理。 #### 第七章 Kafka面试题 本章将提供一系列与Kafka相关的面试题目,帮助读者准备相关面试,提升技术水平。 ...
- **Flume**:一个高可靠、高性能的服务级应用,用于收集、聚合和移动大量日志数据。 - **Flink**:一个流处理框架,提供了低延迟、高吞吐量的数据流处理能力。 - **Kylin**:一个开源的分布式分析引擎,提供了...
Flume用于分布式日志收集,Zookeeper提供分布式协调服务,Kafka则是消息队列系统,这些工具在大数据架构中扮演着重要角色,确保数据的流动和处理效率。 **大数据实时计算:** Mahout是机器学习库,Spark提供快速、...
Flume是收集、聚合和传输大量日志数据的分布式服务,而Logstash则是一个数据收集引擎,可以将不同来源的数据整合并标准化到目标存储。Zookeeper作为一个协调服务,负责管理分布式应用程序的配置信息和同步任务。...
《搞定大数据平台:从入门到实战》这门课程是一次全面深入的大数据技术之旅,旨在帮助初学者乃至无基础的同学建立起完整的数据处理和分析环境。课程涵盖了大数据领域中广泛使用的技术组件,确保学习者能够从零开始...
9. **Flume**: 数据采集工具,用于收集、聚合和移动大量日志数据。 10. **Kafka**: 分布式流处理平台,用于构建实时数据管道和应用。 11. **Storm**: 实时计算系统,处理持续的数据流。 12. **Zookeeper**: 集群协调...
此外,Sqoop用于数据导入导出,Flume用于日志收集,Kafka作为消息中间件,支持实时数据流处理。 【图计算与Titan】 图计算是大数据分析的一个重要分支,课程提到了Titan,这是一个分布式图数据库,适用于大规模图...
3. **Flume**:Flume是一款用于收集、聚合和移动大量日志数据的工具,适用于数据采集。译文可能会讲解Flume的数据源、通道和接收器配置,以及如何搭建高可用的Flume集群。 4. **Kafka**:Kafka是一个高吞吐量的...
【大数据与云计算教程】课程涵盖了从基础到高级的大数据处理技术,主要围绕Hadoop和相关生态系统的组件展开,包括Hadoop的安装与入门、MapReduce编程模型、HDFS分布式文件系统、Hive数据仓库工具、HBase分布式数据库...