【Flume-01】安装部署

第一章:Flume的简介

1.1 大数据处理流程

在企业中,大数据的处理流程一般是:

  • 1.数据采集
  • 2.数据存储
  • 3.数据清洗
  • 4.数据分析
  • 5.数据展示

参考下图:


 

在数据采集和搜集的工具中,Flume框架占有一定的市场份量。

1.2 Flume的简介

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

参考官网: Welcome to Apache Flume — Apache Flume

Flume is a distributed, reliable, and available service for efficiently collecting, aggregating, and moving large amounts of log data. It has a simple and flexible architecture based on streaming data flows. It is robust and fault tolerant with tunable reliability mechanisms and many failover and recovery mechanisms. It uses a simple extensible data model that allows for online analytic application.

flume 最开始是由 cloudera 开发的实时日志收集系统,受到了业界的认可与广泛应用。但随着 flume 功能的扩展,flume的代码工程臃肿、核心组件设计不合理、核心配置不标准等缺点渐渐暴露出来,尤其是在发行版本 0.9.4中,日志传输不稳定的现象尤为严重。

为了解决这些问题,2011 年 10 月 22 号,cloudera 对 Flume 进行了里程碑式的改动:重构核心组件、核心配置以及代码架构,并将 Flume 纳入 apache 旗下,从cloudera Flume 改名为 Apache Flume。

1.3 版本区别

 为了与之前版本区分开,重构后的版本统称为 **Flume NG(next generation)**,重构前的版本被统称为 **Flume OG(original generation)**,Flume目前只有Linux系统的启动脚本,没有Windows环境的启动脚本。

第二章:Flume的体系结构

2.1 体系结构简介

Flume 运行的核心是 Agent。Flume是以agent为最小的独立运行单位。一个agent就是一个JVM。它是一个完整的数据收集工具,含有三个核心组件,分别是source、 channel、 sink。通过这些组件, Event 可以从一个地方流向另一个地方。如下图所示:


 

2.2 组件及其作用

- Client:
 客户端,Client生产数据,运行在一个独立的线程中

- Event: 
 一个数据单元,消息头和消息体组成。(Events可以是日志记录、 avro 对象等。)

- Flow:
	Event从源点到达目的点的迁移的抽象。

- Agent: 
 一个独立的Flume进程,运行在JVM中,包含组件Source、 Channel、 Sink。
 每台机器运行一个agent,但是一个agent中可以包含多个sources和sinks。

- Source: 
 数据收集组件。source从Client收集数据,传递给Channel

- Channel: 
 管道,负责接收source端的数据,然后将数据推送到sink端。

- Sink: 
 负责从channel端拉取数据,并将其推送到持久化系统或者是下一个Agent。
 
- selector:
 选择器,作用于source端,然后决定数据发往哪个目标。

- interceptor:
 拦截器,flume允许使用拦截器拦截数据。允许使用拦截器链,作用于source和sink阶段。 

第三章:Flume的安装

3.1 安装和配置环境变量

3.1.1 准备软件包

将apache-flume-1.8.0-bin.tar.gz 上传到linux系统中的/root/softwares/目录中

3.1.2 解压软件包

[root@hadoop01 softwares]# pwd
/root/softwares
[root@hadoop01 softwares]# tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /usr/local/

3.1.3 更名操作

[root@hadoop01 softwares]# cd /usr/local/
[root@hadoop01 local]# mv apache-flume-1.8.0-bin/ flume

3.1.4 配置环境变量

[root@hadoop01 local]# vim /etc/profile
........省略..........
export FLUME_HOME=/usr/local/flume
export PATH=$FLUME_HOME/bin:$PATH

# 加载环境变量
[root@hadoop01 local]# source /etc/profile


 

3.1.5 验证环境变量

[root@hadoop01 local]# flume-ng version


 

3.2 配置文件

[root@hadoop01 local]# cd flume/conf/
[root@hadoop01 conf]# cp flume-env.sh.template flume-env.sh
[root@hadoop01 conf]# vim flume-env.sh
# 再文件末尾添加JAVA_HOME的路径
export JAVA_HOME=/usr/local/jdk


 

第四章:Flume的部署

4.1 数据模型

- 单一数据模型
- 多数据流模型

4.1.1 单一数据模型

在单个 Agent 内由单个 Source, Channel, Sink 建立一个单一的数据流模型,如下图所示,整个数据流为 Web Server --> Source --> Channel --> Sink --> HDFS。


 

4.1.2 多数据流模型

1)多 Agent 串行传输数据流模型


 

2)多 Agent 汇聚数据流模型


 

3)单 Agent 多路数据流模型


 

4)Sinkgroups 数据流模型


 

4.1.3 小总结

在flume提供的数据流模型中,几个原则很重要。

Source--> Channel
 1.单个Source组件可以和多个Channel组合建立数据流,既可以replicating 和 multiplexing。
 2.多个Sources可以写入单个 Channel

Channel-->Sink
 1.多个Sinks又可以组合成Sinkgroups从Channel中获取数据,既可以loadbalancing和failover机制。
 2.多个Sinks也可以从单个Channel中取数据。
 3.单个Sink只能从单个Channel中取数据

根据上述 5 个原则,你可以设计出满足你需求的数据流模型。

4.2 配置介绍

4.2.1 定义组件名称

要定义单个代理中的流,您需要通过通道链接源和接收器。您需要列出给定代理的源,接收器和通道,然后将源和接收器指向一个通道。一个源实例可以指定多个通道,但是一个接收器实例只能指定一个通道。格式如下:

# list the sources, sinks and channels for the agent
<Agent>.sources = <Source>
<Agent>.sinks = <Sink>
<Agent>.channels = <Channel1> <Channel2>

# set channel for source
<Agent>.sources.<Source>.channels = <Channel1> <Channel2> ...

# set channel for sink
<Agent>.sinks.<Sink>.channel = <Channel1>

案例如下:

# list the sources, sinks and channels for the agent
agent_foo.sources = avro-appserver-src-1
agent_foo.sinks = hdfs-sink-1
agent_foo.channels = mem-channel-1

# set channel for source
agent_foo.sources.avro-appserver-src-1.channels = mem-channel-1

# set channel for sink
agent_foo.sinks.hdfs-sink-1.channel = mem-channel-1

4.2.2 配置组件属性

# properties for sources
<Agent>.sources.<Source>.<someProperty> = <someValue>

# properties for channels
<Agent>.channel.<Channel>.<someProperty> = <someValue>

# properties for sinks
<Agent>.sources.<Sink>.<someProperty> = <someValue>

案例如下:

agent_foo.sources = avro-AppSrv-source
agent_foo.sinks = hdfs-Cluster1-sink
agent_foo.channels = mem-channel-1

# set channel for sources, sinks

# properties of avro-AppSrv-source
agent_foo.sources.avro-AppSrv-source.type = avro
agent_foo.sources.avro-AppSrv-source.bind = localhost
agent_foo.sources.avro-AppSrv-source.port = 10000

# properties of mem-channel-1
agent_foo.channels.mem-channel-1.type = memory
agent_foo.channels.mem-channel-1.capacity = 1000
agent_foo.channels.mem-channel-1.transactionCapacity = 100

# properties of hdfs-Cluster1-sink
agent_foo.sinks.hdfs-Cluster1-sink.type = hdfs
agent_foo.sinks.hdfs-Cluster1-sink.hdfs.path = hdfs://namenode/flume/webdata

#...

4.3 常用的source和sink种类

4.3.1 常用的flume sources

# Avro source:
	avro
# Syslog TCP source:
	syslogtcp
# Syslog UDP Source:
	syslogudp
# HTTP Source:
	http	
# Exec source:
	exec
# JMS source:
	jms
# Thrift source:
	thrift	
# Spooling directory source:
	spooldir
# Kafka source:
	org.apache.flume.source.kafka,KafkaSource
.....	

4.3.2 常用的flume channels

# Memory Channel
	memory
# JDBC Channel
	jdbc
# Kafka Channel
	org.apache.flume.channel.kafka.KafkaChannel
# File Channel
	file

4.3.3 常用的flume sinks

# HDFS Sink
	hdfs
# HIVE Sink
	hive
# Logger Sink
	logger
# Avro Sink
	avro
# Kafka Sink
	org.apache.flume.sink.kafka.KafkaSink
# Hbase Sink
	hbase
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值