大数据之Flume入门

Flume

一、简介:

Flume是一种分布式,可靠且可用的服务,用于有效的收集、聚合和移动大量日志数据。

优点:

        1、具有基于数据流的简单灵活的架构。

        2、具有可靠的可靠性机制和许多故障转移和恢复机制,具有强的容错能力。

        3、使用简单的可扩展数据模型,允许在线分析应用程序。

        4、可以将应用产生的数据存储到大部分存储器上。

Flume的工作方式有两种:

1、Coudera提供的Flume-og。 

        采用多Master的方式,引入ZooKeeper来保存其配置数据,以保证配置数据的一致性。Flume Master之间使用gossip协议(六度分隔理论)同步数据。

2、Apache提供的Flume-ng

        采用单节点(数据安全性问题后面实际应用及其原理会有阐述),变为一个纯粹的传输工具。

FLume-og和Flume-ng对比

 

Flume-ng

Flume-og

方式

多Master

单角色节点(agent)

线程

单线程(写入速度大于写出速度会产生数据阻塞)

多线程(source、channel、sink)

二、Flume-ng(大数据生产环境常用数据收集工具)

1、Flume-ng架构

Flume-ng为单角色的节点:agent角色,agent由source、channel、sink组成

Source:source用于采集数据,source是对接(个人理解为对接,而不是产生)数据流产生的地方,同时source会将数据流封装发送到channel。

Channel:连接source和sink,类似于队列

Sink:从Channel抽取数据,并将数据写到目标地址。

2、Flume-ng详解

1)、Source

1、功能:source监控某个文件或者端口,拿到数据后封装到event当中,并将event put/commit到channel当中

2、类型:1、avro(序列化、监听avro端口)

                 2、exec(命令产生的输出作为源)

                 3、taildir(监控制定的多个文件、可靠性高、不能读取二进制文件、不适用windows系统、)

                 4、spooling directory(监听目录、目录中文件不许修改且不许重名)、netcat(监听指定端口)

                 5、kafka(指定topic读数据)。

          以上为常用的source,其余source不做赘述。详情见(https://blog.csdn.net/u014612521/article/details/103058090)

2)、Channel

1、功能:channel类似于队列(先进先出),接收来自source的event,并等待sink拉取数据。

2、类型:1、memory channel(固定大小内存、速度快、容易丢数据)

                 2、JDBC channel(支持JDBC连接的数据库中、官推Derby、数据可恢复)

                 3、File channel(指定目录、可指定目录大小、数据可恢复、频繁读取磁盘速度慢)

                 4、spillable memory channel(内存做主要存储、临界点溢写磁盘(配置:overflowCapacity))

         以上为常用的channel,其余channel不做赘述。详情见(https://blog.csdn.net/u014612521/article/details/103058809)

 

3)、Sink

1、功能:sink主动去channel当中去拉数据,然后将数据写到目标地址。

2、类型: 1、hdfs sink(文本和序列化文件、两种文件压缩格式、自动划分文件、桶或区)

                 2、hive sink(包含分隔符或者JSON数据的events直接写入hive表或分区)

                 3、logger sink(INFO级别、多用来测试调试)

                 4、avro sink(events转换为avro events、大小同channel中events大小)

                 5、thrift sink(events转换为thrift events、大小同channel中events大小)

                 6、file roll sink(落本地文件)

        以上为常用的sink,其余sink不做赘述。详情见(https://www.cnblogs.com/swordfall/p/8157766.html)

4)、event

概述:在整个数据传输的过程中,流动的是event,既事务保证是在event级别进行的。

概念:event将传输的数据进行封装,是flume传输数据的基本单位,如果是文本文件,通常是一行记录,event也是事务的基本单位。event从source,流向channel,再到sink,本身为一个字节数据,并可携带headers(头信息)信息。event代表着一个数据的最小完整单元,从外部数据源来,向外部的目的地去。

大数据之Flume入门_第1张图片

                                                                                               Flume整体架构图

你可能感兴趣的:(Flume,大数据,大数据)