Flume大数据集群安装
一 flume 的简介
二 flume的环境准备
三 flume的安装步骤
四 运行测试flume
五 遇见的问题和注意事项
一 flume 的简介
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
flume的组合形式:
Multiplexing the flow(选择分流)
二 flume的环境准备
操作系统:CentOS 7)
搭建好hadoop集群(三台已经搭好集群的虚拟机)
Flume版本:1.8.0 flume 下载地址
jdk版本:jdk1.8.0_171
三 flume的安装步骤
1 master主机 创建tools(安装包目录)将flume安装包上传到tools目录下,然后将flume解压到training(安装目录)目录下(tools,training 目录可以根据个人习惯进行更改)
[root@niit01 ~]# tar -zvxf /tools/apache-flume-1.8.0-bin.tar.gz -c /training/
2 对flume进行重命名,并在conf 目录下复制出flume-env .sh
mv +要重命名的flume + 你重命名后的地址
[root@niit04 flume1]# mv /flume1 /training/flume
[root@niit04 conf]# cp flume-env.sh.template flume-env.sh
3.配置flume -env.sh
进入编辑
[root@niit04 conf]# vim flume-env.sh
只需要更改jdk的安装路径,然后保存退出
export JAVA_HOME=/training/jdk1.8.0_171
4 创建日志文件目录 临时缓存目录
创建logs目录(为空后面否则会报错)
[root@niit01 flume]# mkdir logs
[root@niit01 flume]# ll
总用量 148
drwxr-xr-x 2 root root 59 11月 24 17:17 bin
-rw-r--r-- 1 root root 81264 9月 15 2017 CHANGELOG
drwxr-xr-x 2 root root 4096 11月 24 20:36 conf
drwxr-xr-x 3 root root 18 11月 24 17:31 data
-rw-r--r-- 1 root root 5681 9月 15 2017 DEVNOTES
-rw-r--r-- 1 root root 2873 9月 15 2017 doap_Flume.rdf
drwxr-xr-x 10 root root 4096 9月 15 2017 docs
drwxr-xr-x 2 root root 4096 11月 24 17:17 lib
-rw-r--r-- 1 root root 27663 9月 15 2017 LICENSE
drwxr-xr-x 2 root root 6 11月 24 17:28 logs
-rw-r--r-- 1 root root 249 9月 15 2017 NOTICE
-rw-r--r-- 1 root root 2483 9月 15 2017 README.md
-rw-r--r-- 1 root root 1588 9月 15 2017 RELEASE-NOTES
drwxr-xr-x 2 root root 67 11月 24 17:17 tools
创建临时缓存目录
我是一级一级创建的,也可以直接创建
[root@niit01 flume]# mkdir data
[root@niit01 data]# mkdir flume
[root@niit01 flume]# mkdir checkpoint
5 .配置slave.conf 文件
[root@niit01 conf]# touch slave.conf
进入配置
[root@niit01 conf]# vim slave.conf
配置内容:主要作用是监听目录中的新增数据,采集到数据之后,输出到avro (输出到agent)
注意:Flume agent的运行,主要就是配置source channel sink
下面的a1就是agent的代号,source叫r1 channel叫c1 sink叫k1
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#具体定义source
a1.sources.r1.type = spooldir
#创建此目录,保证里面空的
a1.sources.r1.spoolDir = /training/flume/logs
#对于sink的配置描述 使用avro日志做数据的消费
a1.sinks.k1.type = avro
# hostname是最终传给master节点的位置
a1.sinks.k1.hostname = niit01
a1.sinks.k1.port = 44444#端口号
#对于channel的配置描述 使用文件做数据的临时缓存 创建一个检查点的位置用于临时缓存提高安全性
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /training/flume/data/flume/checkpoint
a1.channels.c1.dataDirs = /training/flume/data
#通过channel c1将source r1和sink k1关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
6.配置环境变量
vi ~/.bash_profile
#flume
export FLUME_HOME=/training/flume
export PATH=$PATH:$FLUME_HOME/bin
#让环境变量生效
[root@niit01 ~]# source ~/.bash_profile
查看环境配置是否成功;
[root@niit01 ~]# flume-ng version
Flume 1.8.0
Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
Revision: 99f591994468633fc6f8701c5fc53e0214b6da4f
Compiled by denes on Fri Sep 15 14:58:00 CEST 2017
From source with checksum fbb44c8c8fb63a49be0a59e27316833d
7.配置好的flume分发到slave节点上(niit04,niit05)Hadoop的从节点
[root@niit01 ~]# scp -r /training/flume/ root@niit04:/training/
[root@niit01 ~]# scp -r /training/flume/ root@niit05:/training/
8.在master主节点上面创建master.conf文件夹,编辑配置
[root@niit01 conf]# touch master.conf
[root@niit01 conf]# vim master.conf
master.conf配置:
#slave1,2上的数据,聚合起来,传到hdfs上面
# :Flume agent的运行,主要就是配置source channel sink
# 下面的a1就是agent的代号,source叫r1 channel叫c1 sink叫k1
a1.sources = r1
a1.sinks = k1
a1.channels = c1
#对于source的配置描述 监听avro
a1.sources.r1.type = avro
# 传入的主机名和端口号
a1.sources.r1.bind = niit01
a1.sources.r1.port = 44444
#定义拦截器,为消息添加时间戳
a1.sources.r1.interceptors = i1
a1.sources.r1.interceptors.i1.type = org.apache.flume.interceptor.TimestampInterceptor$Builder
#对于sink的配置描述 传递到hdfs上面
a1.sinks.k1.type = hdfs
#设置master的hdfs路径地址
a1.sinks.k1.hdfs.path = hdfs://niit01:9000/flume/%Y%m%d
a1.sinks.k1.hdfs.filePrefix = events-
a1.sinks.k1.hdfs.fileType = DataStream
#不按照条数生成文件
a1.sinks.k1.hdfs.rollCount = 0
#HDFS上的文件达到128M时生成一个文件
a1.sinks.k1.hdfs.rollSize = 134217728
#HDFS上的文件达到60秒生成一个文件
a1.sinks.k1.hdfs.rollInterval = 60
#对于channel的配置描述 使用内存缓冲区域做数据的临时缓存
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
#通过channel c1将source r1和sink k1关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
#保存退出
配置完成,进行测试
四 运行测试flume
1.启动maste flume
[root@niit01 ~]# flume-ng agent -n a1 -c conf -f /training/flume/conf/master.conf -Dflume.root.logger=INFO,console
出现一下界面就是启动成功
2.在slave节点上启动slave.conf
[root@niit04 flume]# bin/flume-ng agent -n a1 -c conf -f conf/slave.conf -Dflume.root.logger=INFO,console
出现如下界面就是启动成功了
3.在从节点上面test 复制到logs中
[root@niit04 ~]# vim Test
[root@niit04 ~]# cp Test /training/flume/logs/
Test 内容
会出现如下界面
4.登录http://niit01:50070/explorer.html#
出现就说明flume集群安装完成;
五 遇见的问题和注意事项
1 logs 中有内容(将logs中的内容清空既可以解决)
2.hadoop 集群没有启动也会报错,所以在启动flume之前 需要先启动Hadoop,