热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

大数据3Flume收集数据+落地HDFS

 flume日志收集系统Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据

 

flume

  日志收集系统

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

    当前Flume有两个版本Flume 0.9X版本的统称Flume-og,Flume1.X版本的统称Flume-ng。由于Flume-ng经过重大重构,与Flume-og有很大不同,使用时请注意区分。

  大数据3-Flume收集数据+落地HDFS

 

 

大数据3-Flume收集数据+落地HDFS

 

  基本概念

     Event 事件

      把读取的一条日志信息包装成一个对象,这个对象就叫Flume Event。

      本质就是一个json字符串,如:{head:info,body:info}

    Agent 代理

      代理,是一个java进程(JVM),它承载event,从外部源传递到下一个目标的组件。

      主要由3部分组成:Source、Channel、Sink。

    Source 数据源

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

    Channel 数据通道

      Source组件把数据收集来以后,临时存放在channel中,即channel组件在agent中是专门用来存放临时数据的。对采集到的数据进行简单的缓存,可以存放在memory、jdbc、file等等。

    Sink 数据汇聚点

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

    组合过程

      为了安全性,数据的传输是将数据封装成一个Event事件。Source会将从服务器收集的数据封装成Event,然后存储在缓冲区Channel,Channel的结构与队列比较相似(先进先出)。Sink就会从缓冲区Channel中抓取数据,抓取到数据时,就会把Channel中的对应数据删除,并且把抓取的数据写入HDFS等目标地址或者也可以是下一个Source。一定是当数据传输成功后,才会删除缓冲区Channel中的数据,这是为了可靠性。当接收方Crash(崩溃)时,以便可以重新发送数据。

 

 大数据3-Flume收集数据+落地HDFS

 

 

 

  2、可靠性

    当节点出现故障时,日志能够被传送到其他节点上而不会丢失。

    Flume提供了三种级别的可靠性保障,从强到弱依次分别为:

      end-to-end(收到数据agent首先将event写到磁盘上,当数据传送成功后,再删除;如果数据发送失败,可以重新发送。) 

      Store on failure(这也是Scribe-Facebook开源的日志收集系统-采用的策略,当数据接收方crash(崩溃)时,将数据写到本地,待恢复后,继续发送) 

      Besteffort(数据发送到接收方后,不会进行确认) 

  3、需要安装jdk 

jdk安装

  4、安装flume

安装flume

   5、目录结构

目录结构

    大数据3-Flume收集数据+落地HDFS

 大数据3-Flume收集数据+落地HDFS

    大数据3-Flume收集数据+落地HDFS

 

 大数据3-Flume收集数据+落地HDFS大数据3-Flume收集数据+落地HDFS

  Source组件

      重点掌握Avro SourceSpooling Directory Source

#单节点Flume配置
#命名Agent a1的组件
a1.sources  =  r1
a1.sinks  =  k1
a1.channels  =  c1

#描述/配置Source
a1.sources.r1.type  =  netcat        #内置类型,接收来自网络的数据
a1.sources.r1.bind  =  0.0.0.0            #等同于网络的127.0.0.1
a1.sources.r1.port  =  22222        #服务的端口号

#描述Sink
a1.sinks.k1.type  =  logger        #内置类型

#描述内存Channel
a1.channels.c1.type  =  memory    #保存数据到内存
a1.channels.c1.capacity  =  1000     #容量最大存放1000条日志
a1.channels.c1.transactionCapacity  =  100    #事务中的一批数据100条

#为Channle绑定Source和Sink
a1.sources.r1.channels  =  c1        #一个source可以绑定到多个channel
a1.sinks.k1.channel  =  c1        #一个sink只能绑定到一个channel    
flume.properties
推荐阅读
author-avatar
飘泊的牛小盆友
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有