Flume笔记一之简介部署
简介
Flume是一种分布式,高可靠的数据收集工具,它可以从各种类型的数据源采集汇总数据到各种类型的目的地。flume本身并不产生数据它只是数据的搬运工。相比sqoop从数据库到hdfs的数据导入导出,flume可以监控端口,监听某一个文件的变化,也可以从数据库中获取数据并上传到hdfs中。
Flume的组成分为source接收,channel通道,sink汇总,这三个部分组成一个agent,每个agent就是一个flume服务。下图就是flume官网中的截图。
部署实例
1:下载
访问官网flume.apache.org下载安装包,注意选择下载binary,source是源码。
2:解压缩,目录结构
将安装包拷贝到linux中然后解压缩tar-zvxf apache-flume-1.7.0-bin.tar.gz,
解压后flume的主要目录结构为:
bin存放可执行文件
config存放配置文件
docs存放文档
lib存放各种架包。
3:修改flume-env.sh文件,配置环境变量
Flume是java写的所以需要配置环境变量,在config目录下有个flume-env.sh.template文件,我先执行拷贝命令复制此文件cp flume-env.sh.template flume-env.sh。在flume-env.sh文件中可以修改java_home。
打开此文件光标移动到JAVA_HOME所在行输入yyp复制本行然后修改JAVA_HOME,保存文件退出。注意which java命令可以查看jdk路径。
export JAVA_HOME=/usr/local/jdk1.7.0_79
4:实例
在flume的config目录下可以随便命名一个*.conf文件这里我创建一个shb01.conf文件,在这个文件中对flume进行配置。
下面的例子是监听一个端口,把发往此端口的数据以日志的形式打印出来。
创建shb01.conf文件,文件内容如下
#每个agent需要一个名字,本例中agent的名字叫a1
a1.sources=r1
a1.channels=c1
a1.sinks=k1
#配置数据源
a1.sources.r1.type=netcat #type配置数据源 ,netcat监听端口
a1.sources.r1.bink=0.0.0.0 #0.0.0.0表示只要能访问此服务器就可以向44444端口发数据,也可以为localhost
a1.sources.r1.port=44444 #被监听的端口
#配置通道
a1.channels.c1.type=memory #memory表示channel类型为内存
a1.channels.c1.capacity=1000 #channel数据最大容量
a1.channels.c1.transactioncapacity=100 #事务,一次性提交数据量不能超过100
a1.sinks.k1.type=logger #以log方式输出,并不上传到hdfs
#链接
a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1
5:启动Agent
bin/flume-ng agent --conf conf/ --conf-fileconf/shb01.conf --name a1 -Dflume.monitoring.type=http-Dflume.monitoring.port=34343 -Dflume.root.logger=INFO,console &
6:telnet
执行telent localhost 44444,然后输入hello可以在控制台中监听到。另外telnet退出是ctrl+]回车进入telnet界面后再输入quit退出。
7:可以在浏览器中查看agent服务
http://192.168.79.131:34343/