最具影响力的数字化技术在线社区

168大数据

 找回密码
 立即注册

QQ登录

只需一步,快速开始

1 2 3 4 5
打印 上一主题 下一主题
开启左侧

[综合] 纯干货-史上最详细的Flume介绍和实战应用,你值得拥有

[复制链接]
跳转到指定楼层
楼主
发表于 2018-12-21 11:02:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多数据大咖,获取更多知识干货,轻松玩转大数据

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

一、什么是Flume

Flume是由Cloudera软件公司提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,后与2009年被捐赠了apache软件基金会,为hadoop相关组件之一。尤其近几年随着flume的不断被完善以及升级版本的逐一推出,特别是flume-ng;同时flume内部的各种组件不断丰富,用户在开发的过程中使用的便利性得到很大的改善,现已成为apache top项目之一。

apache Flume 是一个从可以收集例如日志,事件等数据资源,并将这些数量庞大的数据从各项数据资源中集中起来存储的工具/服务。flume具有高可用,分布式,配置工具,其设计的原理也是基于将数据流,如日志数据从各种网站服务器上汇集起来存储到HDFS,HBase等集中存储器中。


下面我们就开始详细的讲解Flume,请大家跟随我的脚步,说你呢,那位同学赶紧跟上来,不要掉队。。。

二、安装

Flume的安装很简单,目前最新版本是1.7.0,安装1.7.0要满足以下几个条件

(1).java运行环境,要安装jdk1.7以上版本

(2).系统内存要足够用运行agent组件source,channel和sink。

(3).磁盘空间要足够

(4).目录权限,agent要有足够读写权限

Flume下载最新版本后,进行解压即可,但是要确保安装了java运行环境。

PS:默认flume是不支持windows系统的,没有bat的启动命令。不过有一个flume-ng.cmd,其实它也不是启动文件,只是启动了一个powershell而已,如果你本地有这个软件,就可以在windows下运行了。

三、Flume目录结构

文件夹

描述

bin

存放了启动脚本

lib

启动所需的所有组件jar包

conf

提供了几个测试配置文件

docs

文档

四、Flume Agent组件

Flume内部有一个或者多个Agent,然而对于每一个Agent来说,它就是一共独立的守护进程(JVM),它从客户端哪儿接收收集,或者从其他的 Agent哪儿接收,然后迅速的将获取的数据传给下一个目的节点sink,或者agent

(1).Source

source 负责数据的产生或搜集,一般是对接一些RPC的程序或者是其他的flume节点的sink,从数据发生器接收数据,并将接收的数据以Flume的event格式传递给一个或者多个通道Channel,Flume提供多种数据接收的方式,比如包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy、自定义

类型

Avro

监听Avro端口并接收Avro Client的流数据

Thrift

监听Thrift端口并接收Thrift Client的流数据

Exec

基于Unix的command在标准输出上生产数据

JMS

从JMS(Java消息服务)采集数据

Spooling Directory

监听指定目录

Twitter 1%

通过API持续下载Twitter数据(实验阶段)

Kafka

采集Kafka topic中的message

NetCat

监听端口(要求所提供的数据是换行符分隔的文本)

Sequence Generator

序列产生器,连续不断产生event,用于测试

Syslog

采集syslog日志消息,支持单端口TCP、多端口TCP和UDP日志采集

HTTP

接收HTTP POST和GET数据

Stress

用于source压力测试

Legacy

向下兼容,接收低版本Flume的数据

Custom

自定义source的接口

Scribe

从facebook Scribe采集数据

ps说明:在以后的文章中一个个示例讲解这些类型的参数详解,以及怎么配置等,请大家关注我的更新

(2).channel

Channel 是一种短暂的存储容器,负责数据的存储持久化,可以持久化到jdbc,file,memory,将从source处接收到的event格式的数据缓存起来,直到它们被sinks消费掉,可以把channel看成是一个队列,队列的优点是先进先出,放好后尾部一个个event出来,Flume比较看重数据的传输,因此几乎没有数据的解析预处理。仅仅是数据的产生,封装成event然后传输。数据只有存储在下一个存储位置(可能是最终的存储位置,如HDFS;也可能是下一个Flume节点的channel),数据才会从当前的channel中删除。这个过程是通过事务来控制的,这样就保证了数据的可靠性。

不过flume的持久化也是有容量限制的,比如内存如果超过一定的量,不够分配,也一样会爆掉。

Memory

Event数据存储在内存中

JDBC

Event数据存储在持久化存储中,当前Flume Channel内置支持Derby

Event存储在kafka集群

File Channel

Event数据存储在磁盘文件中

Spillable Memory Channel

Event数据存储在内存中和磁盘上,当内存队列满了,会持久化到磁盘文件(当前试验性的,不建议生产环境使用)

Pseudo Transaction Channel

测试用途

Custom Channel

自定义Channel实现

(3).sink

sink 负责数据的转发,将数据存储到集中存储器比如Hbase和HDFS,它从channel消费数据(events)并将其传递给目标地。目标地可能是另一个sink,也可能是hdfs、logger、avro、thrift、ipc、file、null、Hbase、solr、自定义等

HDFS

数据写入HDFS

HIVE

数据导入到HIVE中

Logger

数据写入日志文件

数据被转换成Avro Event,然后发送到配置的RPC端口上

数据被转换成Thrift Event,然后发送到配置的RPC端口上

IRC

数据在IRC上进行回放

File Roll

存储数据到本地文件系统

Null

丢弃到所有数据

Hive

数据写入Hive

HBase

数据写入HBase数据库

Morphline Solr

数据发送到Solr搜索服务器(集群)

ElasticSearch

数据发送到Elastic Search搜索服务器(集群)

Kite Dataset

写数据到Kite Dataset,试验性质的

数据写到Kafka Topic

自定义Sink实现

五、Flume有哪些优缺点

(1).优点

1. Flume可以将应用产生的数据存储到任何集中存储器中,比如HDFS,HBase

2. 当收集数据的速度超过将写入数据的时候,也就是当收集信息遇到峰值时,这时候收集的信息非常大,甚至超过了系统的写入数据能力,这时候,Flume会在数据生产者和数据收容器间做出调整,保证其能够在两者之间提供一共平稳的数据.

3. 提供上下文路由特征

4. Flume的管道是基于事务,保证了数据在传送和接收时的一致性.

5. Flume是可靠的,容错性高的,可升级的,易管理的,并且可定制的。

6.实时性,Flume有一个好处可以实时的将分析数据并将数据保存在数据库或者其他系统中

(2).缺点

Flume的配置很繁琐,source,channel,sink的关系在配置文件里面交织在一起,不便于管理

六、应用场景

(1).电子商务网站

比如我们在做一个电子商务网站,然后我们想从消费用户中访问点特定的节点区域来分析消费者的行为或者购买意图. 这样我们就可以更加快速的将他想要的推送到界面上,实现这一点,我们需要将获取到的她访问的页面以及点击的产品数据等日志数据信息收集并移交给Hadoop平台上去分析.而Flume正是帮我们做到这一点

(2).内容推送

现在流行的内容推送,比如广告定点投放以及新闻私人定制也是基于次

(3).ETL工具

可以利用插件把关系型数据实时增量的导入到Hdfs外部数据源

七、其他类似Flume框架

Facebook的Scribe,还有Apache新出的另一个明星项目chukwa,还有淘宝Time Tunnel

八、Flume插件

1. Interceptors拦截器

用于source和channel之间,用来更改或者检查Flume的events数据

2. 管道选择器 channels Selectors

在多管道是被用来选择使用那一条管道来传递数据(events). 管道选择器又分为如下两种:

默认管道选择器: 每一个管道传递的都是相同的events

多路复用通道选择器: 依据每一个event的头部header的地址选择管道.

3.sink线程

用于激活被选择的sinks群中特定的sink,用于负载均衡.

九、启动参数详解

你可以输入flume-ng help获得帮助提示:

参数

commands

这个是很重要的参数,因为flume可以使用不同的角色启动,比如agent以及client等等。暂时搞不清楚avro-client有什么特殊的,先了解一下吧!平时启动就使用agent就可以了

--conf 或者 -c

指定去conf目录下加载配置文件

--classpath 或者 -C

指定类加载的路径

--conf-file 或者 -f

指定配置文件

总结

关于flume的agent组件source,channel,sink的详细配置,将会在后面的文章中给出。老规矩:如果大家有大数据技术类的问题,欢迎在评论里面留言,我会一一回复,希望跟大家共同努力,共同进步,由于自己也在学习阶段,水平有限,还请专业的高手给予指点,提提意见,一起交流分享经验,帮助我尽快提高水平,更上一个新台阶


楼主热帖
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 赞 踩

168大数据 - 论坛版权1.本主题所有言论和图片纯属网友个人见解,与本站立场无关
2.本站所有主题由网友自行投稿发布。若为首发或独家,该帖子作者与168大数据享有帖子相关版权。
3.其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和168大数据的同意,并添加本文出处。
4.本站所收集的部分公开资料来源于网络,转载目的在于传递价值及用于交流学习,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。
5.任何通过此网页连接而得到的资讯、产品及服务,本站概不负责,亦不负任何法律责任。
6.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源,若标注有误或遗漏而侵犯到任何版权问题,请尽快告知,本站将及时删除。
7.168大数据管理员和版主有权不事先通知发贴者而删除本文。

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

关于我们|小黑屋|Archiver|168大数据 ( 京ICP备14035423号|申请友情链接

GMT+8, 2024-5-2 09:07

Powered by BI168大数据社区

© 2012-2014 168大数据

快速回复 返回顶部 返回列表