flume

## 1.1 Flume定义

Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。

大数据框架大致分为3类:

数据的采集和传输:flume

数据的存储:HDFS

数据的计算:MapReduce

1.2 应用场景

flume主要应用于数仓

数仓中,HDFS用来存储数据,HIVE用来对数据进行管理和计算(分层计算)。分析出结果然后给关系型数据库然后再做可视化等。

flume在项目中的基本架构:

1.3 为什么选用flume

Flume最主要的作用就是:实时读取服务器本地磁盘的数据,将数据写入到HDFS。因此Flume就要部署到日志所在的那台节点上,或者说日志得发送到Flume所在的节点。即日志和Flume必须在一起才行。

1.4 flume基础架构

flume基础架构如图所示:

如何选择相应的flume呢?

根据data source 和 store 来选择相应的source和sink


1.5 Flume架构中的组件:

1.5.1 Agent


Agent是一个JVM进程,它以事件的形式将数据从源头送至目的。

Agent主要有3个部分组成,Source、Channel、Sink。

1.5.2 Source

Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directorynetcat、sequence generator、syslog、http、legacy。

其中:

avro:(序列化框架)flume在搭建的时候可能会搭建多层,即涉及到flume的串联,avro主要用在两个flume之间,前一个flume的avro sink,后一个flume的avro source

exec: 主要用来监控一个文件,后面可以跟shell命令——tail -f 文件名 这样就可以监控这个文件了。生产环境中一般不用exec source。

spooling directory: 监控一个路径下的多个文件,

netcat: 用来监听网络端口,如果外界向机器的1234端口发送数据,通过netcat就可以监听到1234这个端口传进来的数据。

1.5.3 Sink

Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。

Sink组件目的地包括hdfs、logger、avro、thrift、ipc、file、HBase、solr、自定义。

hdfs: 最基本最常用的就是hdfs sink, 将数据存储到hdfs上。

logger: 一般用来做测试,将数据以日志的形式打印在控制台。

avro:avro source 进行对接,同样是涉及到flume的串联的时候使用。

file: 输出到本地文件。

hbase: 输出到HBase数据库。

1.5.4 Channel

Channel 两个主要的作用:解耦和缓冲。

Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。

Flume自带两种Channel:Memory ChannelFile Channel

Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。



优点:速度块,延迟低,吞吐量高

缺点:可能会丢数据

File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。



优点:不会丢数据

缺点:速度没有memory channel快,延迟没有memory channel低,吞吐量低

1.5.5 Event

传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地

Event由HeaderBody两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。

最新文章

  1. 墙裂推荐4款js网页烟花特效
  2. IOS-WebViewJavascriptBridge使用说明
  3. 【Java每日一题】20161208
  4. Network-POJ3694并查集+LCA
  5. Java 使用对话框选择文件并输出到控制台
  6. openni和骨架追踪 rviz查看---34
  7. (转)C# MD5
  8. hdu 1023 Train Problem II
  9. 开心系列学习笔记---------javascript(7)
  10. 图书管理系统设置登录验证(cookies)
  11. JQuery UI - resizable
  12. [十]基础数据类型之Unicode编码简介
  13. windows程序设计 Unicode和多字节之间转换
  14. php 随机红包算法
  15. [JLOI2014]聪明的燕姿(搜索)
  16. 使用 EF Core 的 EnableRetryOnFailure 解决短暂的数据库连接失败问题
  17. Python Socket实现文件上传(TCP协议)
  18. 整合SpringDataJPA
  19. 腾讯大湘网某处csrf(city.hn.qq.com)可投诉刷留言
  20. rabbitmq的安装和使用

热门文章

  1. C# 中国日历 农历 阳历 星座 二十四节气 二十八星宿 节日 天干地支
  2. root密码忘记了,怎么办?
  3. C#中的依赖注入和IoC容器
  4. CentOS Linux SVN服务器 配置用户目录访问 权限 Authorization failed
  5. JDBC UPDATE误区
  6. 本地项目上传至GitHub
  7. hadoop大数据组件启动
  8. ES6模板字符串及字符串的扩展方法
  9. Eclipse-Che 安装(Centos)
  10. Azure Table Storage(一) : 简单介绍