1 flume快速入门——十分钟学会flume
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 directory、netcat、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 Channel和File Channel。
Memory Channel是内存中的队列。Memory Channel在不需要关心数据丢失的情景下适用。如果需要关心数据丢失,那么Memory Channel就不应该使用,因为程序死亡、机器宕机或者重启都会导致数据丢失。
优点:速度块,延迟低,吞吐量高
缺点:可能会丢数据
File Channel将所有事件写到磁盘。因此在程序关闭或机器宕机的情况下不会丢失数据。
优点:不会丢数据
缺点:速度没有memory channel快,延迟没有memory channel低,吞吐量低
1.5.5 Event
传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。
Event由Header和Body两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组。
1 flume快速入门——十分钟学会flume的更多相关文章
- 大数据技术之_09_Flume学习_Flume概述+Flume快速入门+Flume企业开发案例+Flume监控之Ganglia+Flume高级之自定义MySQLSource+Flume企业真实面试题(重点)
第1章 Flume概述1.1 Flume定义1.2 Flume组成架构1.2.1 Agent1.2.2 Source1.2.3 Channel1.2.4 Sink1.2.5 Event1.3 Flum ...
- PHP学习过程_Symfony_(3)_整理_十分钟学会Symfony
这篇文章主要介绍了Symfony学习十分钟入门教程,详细介绍了Symfony的安装配置,项目初始化,建立Bundle,设计实体,添加约束,增删改查等基本操作技巧,需要的朋友可以参考下 (此文章已被多人 ...
- 快速入门:十分钟学会Python
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 快速入门:十分钟学会Python(转)
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- Flume - 快速入门
关于Flume,官方定义如下: Apache Flume is a distributed, reliable, and available system for efficiently collec ...
- 高速入门:十分钟学会Python
初试牛刀 如果你希望学习Python这门语言.却苦于找不到一个简短而全面的新手教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手冊(Cheat ...
- 十分钟学会 tmux
tmux 是一款终端复用命令行工具,一般用于 Terminal 的窗口管理.在 macOS 下,使用 iTerm2 能应付绝大多数窗口管理的需求. 如上图所示,iTerm2 能新建多个标签页(快捷键 ...
- Python十分钟学会
初试牛刀 假设你希望学习Python这门语言,却苦于找不到一个简短而全面的入门教程.那么本教程将花费十分钟的时间带你走入Python的大门.本文的内容介于教程(Toturial)和速查手册(Cheat ...
- 快速入门:十分钟学会PythonTutorial - Learn Python in 10 minutes
This tutorial is available as a short ebook. The e-book features extra content from follow-up posts ...
随机推荐
- Visual Studio 默认git拉取Github出错 No error could not read Username for 'https://github.com': terminal prompts disabled
发布到远程存储库时遇到错误: Git failed with a fatal error.fatal: HttpRequestException encountered. ��������ʱ��� ...
- 【程序包管理】Linux程序包管理之rpm安装总结
rpm简介 rpm( Red Hat Package Manager )是一个开放的软件包管理系统.它工作于Red Hat Linux及其他Linux系统,成为Linux中公认的软件包管理标准. rp ...
- VS编译程序添加图标
如图 然后编译就就生成有图标的了.
- springboot项目报错Exception getting JDBC Driver: com.mysql.cj.jdbc.Driver
将驱动换成 <jdbcConnection driverClass="com.mysql.jdbc.Driver" connectionURL="jdbc:mysq ...
- VS使用过程中可能会遇到的问题
Q:某个类无法引用命名空间 A:可能是类名与文件夹名重复了
- 初探JAVA内部类细节一
定义: 可以将一个类的定义放在另一个类的内部 这就是内部类.--摘自java编程思想 一般实现方式: public class SimpleInnerClass { class Content { p ...
- Spring Cloud Gateway应用篇(十三)
一.概述 在微服务架构中,每个服务都是一个可以独立开发和运行的组件,而一个完整的微服务架构由一系列独立运行的微服务组成.其中每个服务都只会完成特定领域的功能,比如订单服务提供与订单业务场景有关的功能. ...
- Redis基础篇(七)哨兵机制
上一篇文章介绍了高可靠方案:主从集群模式.通过主从库的读写分离,来保证服务的可靠性. 当某个从库出现故障时,不影响服务的使用,主库仍然可以处理写命令,其他从库可以处理读命令.但主库发生故障,就不能处理 ...
- java中网络通信 Scoket
在客户/服务器通信模式中,客户端需要主动建立与服务器连接的Socket,服务器端收到客户端的连接请求,也会创建与客户端连接的Socket.Socket可以看做是通信连接两端的收发器,客户端和服务店都通 ...
- mysql 创建[序列],功能类似于oracle的序列
参考自菜鸟教程 https://www.runoob.com/mysql/mysql-using-sequences.html 使用函数创建自增序列管理表(批量使用自增表,设置初始值,自增幅度) 第一 ...