美文网首页
Flume基础

Flume基础

作者: 糊涂蟲 | 来源:发表于2018-08-10 22:39 被阅读0次

1、产生背景

RDBMS==>Sqoop==>Hadoop

日志:分数在各个服务器上  如何抽到HDFS上

1、定时任务将文件写到HDFS    crontab

2、flume

2、官网

flume.apache.org

Flume是一种分布式、可靠和可用的服务,可以高效地收集、聚合和移动大量的日志数据。它具有基于流数据流的简单灵活的体系结构。它具有稳定性和容错性,具有可调的可靠性机制和多种故障转移和恢复机制。它使用了一个简单的、可扩展的数据模型,允许在线分析应用程序。

3、关键字

collecting            采集       source

aggregating        聚合       channel (找个地方把采集过来的数据暂存下)

moving               移动       sink

4、功能

Flume:编写配置文件,组合source、channel、sink三者之间的关系

Agent:就是由source、channel、sink组成

编写flume的配置文件其实就是配置agent的构成

Flume就是一个框架:针对日志数据进行采集汇总,把日志从A地方搬运到B地方去

5、系统要求

1、java1.6以上

2、足够内存(source,sink,channel都可能用)

3、足够的磁盘空间

4、对文件要有读写权限

6、环境搭建

文档:官网-->documentation-->Flume User Guide

版本:cdh5.7.0(与Hadoop统一)

wget http://archive.cloudera.com/cdh5/cdh/5/flume-ng-1.6.0-cdh5.7.0.tar.gz

解压

tar -xzvf flume-ng-1.6.0-cdh5.7.0.tar.gz -C ~/app

配置环境变量并生效   

vi ~/.bash_profile

export FLUME_HOME=/home/hadoop/app/apache-flume-1.6.0-cdh5.7.0-bin

export PATH=$FLUME_HOME/bin:$PATH

source ~/.bash_profile

修改配置文件

cp flume-env.sh.template flume-env.sh

vi flume-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_45

7、版本

flume -og        老版本,已经不用

flume -ng        新版本

8、运行

flume-ng  <commad> [options]...

常用的commads:help / agent / avro-client / version

举例:[hadoop@hadoop000 bin]$ flume-ng version

            Flume 1.6.0-cdh5.7.0

            Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git

            Revision: 8f5f5143ae30802fe79f9ab96f893e6c54a105d1

            Compiled by jenkins on Wed Mar 23 11:38:48 PDT 2016

            From source with checksum 50b533f0ffc32db9246405ac4431872e

9、启动命令标准的写法

        ./flume-ng agent \                    ===>启动命令

        --name $agent_name \            ===>自定义的agent_name

        --conf $FLUME_HOME/conf \        ===>使用conf目录下一个配置文件:全局

        --conf-file /home/hadoop/script/flume/xxxx.conf \        ==>指定一个配置文件(自己编写的agent的配置文件:自定义)

        -Dflume.root.logger=INFO,console \

        -Dflume.monitoring.type=http \    

        -Dflume.monitoring.port=34343

9、agent_xxx.conf 的写法

agent_name:a1

r1、k1、c1分别为source、sink和channel的名称

# Name the components on this agent

复数表示每一个可以配多个

<agent_name>.sources=<source_name>        

<agent_name>.sinks=<sink_name>

<agent_name>.channels=<channel_name>

--------------------------------------------------------------------------------

<agent_name>.sources.<source_name>.type =xx

<agent_name>.sinks.<sink_name>.type =yyy

<agent_name>.channels.<channel_name>.type =zzz

-------------------------------------------------------------------------------------

<agent_name>.sources.<source_name>.channels=<channel_name>

<agent_name>.sinks.<sink_name>.channel=<channel_name>

--------------------------------------------------------------------------------------

举例:从指定的网络端口上采集日志到控制台输出(netcat source、memory channel 和logger  sink),需要telnet输入日志

        a1.sources = r1

        a1.sinks = k1

        a1.channels = c1

# Describe/configure the source   配置source信息

        a1.sources.r1.type = netcat     ==>必须netcat

        a1.sources.r1.bind = 0.0.0.0    ==>绑定本地ip

        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

# Bind the source and sink to the channel  将source和sink绑定到channel

        a1.sources.r1.channels = c1        ==>source 去哪个channel

        a1.sinks.k1.channel = c1            ==>sink去channel拿数据

10、常用的source

avro (重点):监听Avro端口和从外部Avro端接收事件流,当在另一个(上一个)Flume agent搭配内置Avro sink,它可以创建分层集合拓扑

exec  :启动的时候运行给定一个linux命令 tail -F  xx.log            ===>监控文件

Spooling Directory:允许通过将文件放入磁盘上的“spooling”目录中来读取数据               ===>监控文件夹(不能有子文件)

Taildir:exec 和spooling的整合  (生成90%以上)           1.6版本不能工作在windows

netcat: 可以监听给定的端口,并将每一行文本转换为一个事件   需要telnet

具体写法参考官网

11、常用的sink

HDFS:数据写到HDFS

logger:打印在控制台

avro : 配合avro source使用

kafka:(sparkstreaming或者 storm、 flink的流式处理当中)使用flume搜集数据推送到kafka,然后流式处理的数据到kafka中去取

12、常用的channel

memory:event将会被暂存在内存了

file:数据存到本地

13、agentxxx.conf作用

各种组合source、channel、sink之间的关系,需要什么去官网找什么

例如:把一个文件中新增的内容收集到HDFS

        exec ---memory ---HDFS    模式

如果是一个文件夹

        spooling---memory---HDFS    

文件数据写入kafka    

        exec---memory---kafka

以此类推。。。

14、Event

传输的最小单元

Event是有headers  +  body(字节数组  +  内容)组成

相关文章

  • Flume基础

    1、产生背景 RDBMS==>Sqoop==>Hadoop日志:分数在各个服务器上 如何抽到HDFS上1、定时任务...

  • Flume应用

    基础应用 Flume 支持的数据源种类有很多,可以来自directory、http、kafka等。Flume提供 ...

  • 大数据学习之小白快速了解flume

    科多大数据带你来快速了解flume。 flume的整体基础架构包括三个,分别是source,chanel, sin...

  • Flume框架基础

    * Flume框架基础 框架简介: ** Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集、聚集、...

  • 数据采集组件:Flume基础用法和Kafka集成

    一、Flume简介 1、基础描述 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、...

  • Flume基础案例

    核心概念 Agent:使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个s...

  • Flume基础学习

    Flume是一款非常优秀的日志采集工具。支持多种形式的日志采集,作为apache的顶级开源项目,Flume再大数据...

  • Flume01

    Flume架构组成 Flume 负载均衡 Flume Agent内部原理 启动 Flume 监听

  • Flume

    总结 一、Flume的定义 1、flume的优势 2、flume的组成 3、flume的架构 二、 flume部署...

  • 玩转大数据计算之Flume

    Flume版本:我们使用Flume最新的版本:Flume NG 1.7.0 Flume架构Flume是一个分布式的...

网友评论

      本文标题:Flume基础

      本文链接:https://www.haomeiwen.com/subject/hsjfvftx.html