分布式日志收集系统:Flume

Flume知识点:

Event 是一行一行的数据

1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去。

2.flume里面有个核心概念,叫做agent。agent是一个java进程,运行在日志收集节点。

3.agent里面包含3个核心组件:source、channel、sink。

3.1 source组件是专用于收集日志的,可以处理各种类型各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义。

source组件把数据收集来以后,临时存放在channel中。

3.2 channel组件是在agent中专用于临时存储数据的,可以存放在memory、jdbc、file、自定义。

channel中的数据只有在sink发送成功之后才会被删除。

3.3 sink组件是用于把数据发送到目的地的组件,目的地包括hdfs、logger、avro、thrift、ipc、file、null、hbase、solr、自定义。

4.在整个数据传输过程中,流动的是event。事务保证是在event级别。

5.flume可以支持多级flume的agent,支持扇入(fan-in)、扇出(fan-out)。

扇入指的是:source 可以接收多个输入

扇出指的是:sink可以输出多个目的地


Flume安装:

1.分别解压这两个文件在节点里:

2.把src内容 复制到bin下:

cp -ri apache-flume-1.4.0-src/* apache-flume-1.4.0-bin/

3.src没用可以删掉了:

rm -rf apache-flume-1.4.0-src

4.重命名apache-flume-1.4.0-bin 为flume:

mv apache-flume-1.4.0-bin/ flume

注意:flume安装的 前提是你已经安装了hadoop ,因为它要用到hadoop的jar

5 . 书写配置文件example

agent1表示代理名称:

agent1.sources=source1

agent1.sinks=sink1

agent1.channels=channel1

Spooling Directory是监控指定文件夹中新文件的变化,一旦新文件出现,就解析该文件内容,然后写入到channle。写入完成后,标记该文件已完成或者删除该文件。

配置source1

agent1.sources.source1.type=spooldir

agent1.sources.source1.spoolDir=/root/hmbbs

agent1.sources.source1.channels=channel1

agent1.sources.source1.fileHeader = false

agent1.sources.source1.interceptors = i1

agent1.sources.source1.interceptors.i1.type = timestamp

配置sink1

agent1.sinks.sink1.type=hdfs

agent1.sinks.sink1.hdfs.path=hdfs://hadoop0:9000/hmbbs

agent1.sinks.sink1.hdfs.fileType=DataStream

agent1.sinks.sink1.hdfs.writeFormat=TEXT

agent1.sinks.sink1.hdfs.rollInterval=1 //指定时间文件被关闭

agent1.sinks.sink1.channel=channel1

agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d //生成文件的前缀

配置channel1

agent1.channels.channel1.type=file

//备份目录

agent1.channels.channel1.checkpointDir=/root/hmbbs_tmp/123

agent1.channels.channel1.dataDirs=/root/hmbbs_tmp/

把该文件写入flume 的conf文件夹下,并命名为example

6.在root目录下创建文件夹hmbbs

[[email protected] /]# cd /root

[[email protected] ~]# ls

anaconda-ks.cfg Documents install.log Music Public Videos

Desktop Downloads install.log.syslog Pictures Templates

[[email protected] ~]# mkdir hmbbs

7.在hadoop下创建文件夹

hadoop fs -mkdir /hmbbs

8.执行flume

进入flume执行命令

bin/flume-ng agent -n agent1 -c conf -f conf/example -Dflume.root.logger=DEBUG,console

9.创建

[[email protected] ~]# vi hello

[[email protected] ~]# cp hello hmbbs

在hdfs里会看到文件传输了进去

10 .

[[email protected] ~]# cd hmbbs

[[email protected] hmbbs]# ls

hello.COMPLETED

红色部分表示任务完成,已经传输到channel中,后缀.COMPLETED是重新命名后的结果。

[[email protected] ~]# cd hmbbs_tmp

[[email protected] hmbbs_tmp]# ls

hmbbs_tmp表示的是channel使用的目录。

[[email protected] hmbbs_tmp]# cd 123

[[email protected] 123]# ls

checkpoint checkpoint.meta inflightputs inflighttakes

这里的数据是备份数据,如果datadir里数据丢失可以从这里恢复。

在实际生产中是多节点配置,比较复杂,可以参考官方文档:

http://flume.apache.org

时间: 2024-10-18 21:51:30

分布式日志收集系统:Flume的相关文章

分布式日志收集系统Apache Flume的设计详细介绍

问题导读: 1.Flume传输的数据的基本单位是是什么? 2.Event是什么,流向是怎么样的? 3.Source:完成对日志数据的收集,分成什么打入Channel中? 4.Channel的作用是什么? 5.取出Channel中的数据,进行相应的存储文件系统,数据库,或者提交到远程服务器,由谁来完成? 6.Flume支那些数据格式? 7.对于直接读取文件Source,有两种方式,分别是什么? 8.Channel有多种方式有哪些方式? 概述Flume是Cloudera公司的一款高性能.高可能的分布

Flume可分布式日志收集系统

Flume 1. 前言 flume是由cloudera软件公司产出的可分布式日志收集系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一.尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一. 2. 概述 2.1. 什么是flume?http://flume.apache.org/index.html Apache Fl

打造分布式日志收集系统

前言 系统一大,就会拆分成多个独立的进程,比如web+wcf/web api等,也就成了分布式系统. 要看一个请求怎么从头到尾走的,就有些困难了,要是进行DEBUG.跟踪,就更加麻烦了,困难程度要视进程多少而定,越多越复杂. 分布式日志收集系统就登场了. 今天介绍一款 全开源日志收集.展示系统 - logstash(基于java)+kibana(基于JRuby, logstash已自带)+ElasticSearch+RabbitMQ 架构图如下 这张图是拷贝来的 里面虽然是Redis,但是没关系

Flume分布式日志收集系统

1.flume是分布式的日志收集系统,把收集来的数据传送到目的地去.2.flume里面有个核心概念,叫做agent.agent是一个java进程,运行在日志收集节点.通过agent接收日志,然后暂存起来,再发送到目的地.3.agent里面包含3个核心组件:source.channel.sink. 3.1 source组件是专用于收集日志的,可以处理各种类型各种格式的日志数据,包括avro.thrift.exec.jms.spooling directory.netcat.sequence gen

分布式日志收集系统实践(视频教程)

日志收集软件五花八门,最终用户没有精力,也不可能把所有的日志工具都拿过来试一遍,很多企业常见架构如图1所示. 图1 传统日志收集架构 这种架构中,除了日志标准化问题.存储的性能问题,关键是在故障来临时,无法在上亿条的日志中迅速找出故障日志,及诱发因素.接着我们看看OSSIM系统是如何处理的. 图2 分布式日志收集 在图2中,展示了基于OSSIM的分布式日志收集架构,其中还包含了Redis+RabbitMQ消息中间件处理系统,技术实现已经在<开源安全运维平台OSSIM最佳实践>中讲述,下面为大家

日志收集系统Flume调研笔记第1篇 - Flume简介

用户行为数据的收集无疑是构建推荐系统的先决条件,而Apache基金会下的Flume项目正是为分布式的日志收集量身打造的,本文是Flume调研笔记的第1篇,主要介绍Flume的基本架构,下篇笔记将会以实例说明Flume的部署和使用步骤. 本文所用的Flume版本为目前最新版的ver1.5.2,它属于Flume-NG,在系统架构上与Flume-OG有所区别,二者的不同可以参考FlumeWiki文档的说明. 1. Flume是什么 Flume是Apache基金会下的一个开源项目,它实现了一套分布式的.

日志收集系统Flume及其应用

Apache Flume概述 Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集.聚合和传输的系统.Flume 支持定制各类数据发送方,用于收集各类型数据:同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力.一般的采集需求,通过对 flume 的简单配置即可实现.针对特殊场景也具备良好的自定义扩展能力.因此,flume 可以适用于大部分的日常数据采集场景. 当前 Flume 有两个版本.Flume 0.9X 版本的统称 Flume O

日志收集系统Flume调研笔记第2篇 - Flume配置及使用实例

上篇笔记对Flume的使用场景和系统架构做了介绍,本篇笔记以实例说明Flume的配置方法.下面开始正文. 1. Flume使用实例 1.1 配置 Flume agent的3个组件及其拓扑关系是在配置文件中指定的,总的原则是必须列出source/channel/sink的name/type等重要的配置项,并通过channel将source(s)和sink(s)连接起来,此外,1个source可以指定多个channel,而1个sink只能接收来自1个channel的数据. 这里给出的是部署1套含1个

基于Flume的美团日志收集系统(一)架构和设计【转】

美团的日志收集系统负责美团的所有业务日志的收集,并分别给Hadoop平台提供离线数据和Storm平台提供实时数据流.美团的日志收集系统基于Flume设计和搭建而成. <基于Flume的美团日志收集系统>将分两部分给读者呈现美团日志收集系统的架构设计和实战经验. 第一部分架构和设计,将主要着眼于日志收集系统整体的架构设计,以及为什么要做这样的设计. 第二部分改进和优化,将主要着眼于实际部署和使用过程中遇到的问题,对Flume做的功能修改和优化等. 1 日志收集系统简介 日志收集是大数据的基石.