Flume监听端口

Flume概念及作用

作用

flume可以监听端口或者文件夹,对传输到此处的数据进行打印输出或上传hdfs等操作

概念

flume是Cloudera提供的一个基于流式系统高可用的、高可靠的分布式海量日志采集、聚合和传输系统

组件

Agent

Agent是一个JVM进程,是flume传输的基本单元

Source

Source是负责接收数据到Flume Agent的组件

Channel

Channel是位于Source和Sink之间的缓冲区

Sink

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

Sink是完全事务性的,在从Channel批量删除数据之前,每个Sink用Channel启动一个事务,数据一旦被提交,Channel则从自己的缓冲区删除事件

Flume的安装

1、在官网下载相应版本flume安装包

网址为:http://archive.apache.org/dist/flume/

在这里使用的flume版本为1.6

2、上传到linux并解压

这里使用xftp上传

Flume监听端口_第1张图片

解压并重命名为flume

tar -zxvf /apps/download/apache-flume-1.6.0-bin.tar.gz -C /apps
mv /apps/apache-flume-1.6.0 /apps/flume

进入flume/conf复制并重命名flume-env.sh.template

cd /apps/flume/conf
cp flume-env.sh.template flume-env.sh

修改flume-env.sh,添加java环境变量

Flume监听端口_第2张图片

 测试查看flume版本

在flume路径下

bin/flume-ng -version

完成以上配置后,就可以进行flume的hello world了

Hello Flume!

目标:用flume监听localhost的55555的端口,并把从telnet中传入的值打印到console中

编写配置文件

1、在flume目录下创建job目录,用来存放用于配置agent的conf文件

2、创建flume-telnet-logger.conf

注:名字无所谓,后缀.conf就好

touch flume-telnet-logger.conf

3、编写flume-telnet-logger.conf

vim flume-telnet-logger.conf
# Name the components on this agent
# 分别给agent中组件定义别名
a1.sources = r1
a1.sinks = k1
a1.channels = c1

# Describe/configure the source
# 配置接收方法、地址和端口号
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = 55555

# Describe the sink
# 定义sink类型
a1.sinks.k1.type = logger

# Use a channel which buffers events in memory
# 定义channel类型
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100

# Bind the source and sink to the channel
# 把source和sink用channel连接
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

运行flume agent

在flume路径下

bin/flume-ng agent --conf conf/ --name a1 --conf-file /job/flume-telnet-logger.conf -Dflume.root.logger=INFO,logger

--conf指定了flume的conf路径

--conf-file指定了编写的agent的conf文件

Flume监听端口_第3张图片

 如图所示则启动成功

使用telnet传输数据

1、检查是否安装telnet、telnet-server、xinetd

新建一个会话

rpm -qa telnet-server
rpm -qa telnet
rpm -qa xietd

如果什么都有没显示则未未安装,一下是已经安装的提示Flume监听端口_第4张图片

如未安装则在虚拟机联网后使用以下命令安装

yum install telnet-server
yum install telnet
yum install xinetd

2、用telnet连接并输入信息,查看flume是否打印

telnet localhost 55555

Flume监听端口_第5张图片

在flume的会话中查看

Flume监听端口_第6张图片

成功输出hello world!

3、关闭flume监听

Ctrl+C

遇到的问题

telnet localhost 55555 时 connect refused

原因

没有启动flume agent监听55555端口就直接telnet连接导致

因为不开启就不会使用此端口,也就无法连接

解决方法

先启动 flume agent 再telnet 连接

你可能感兴趣的:(flume,hadoop)