环境准备:
hadoop集群正常运行
zookeeper正常运行
机器 master slave1 slave2
IP 192.168.231.105 192.168.231.106 192.168.231.107
环境搭建:
一、下载安装
1、下载flume-1.8.0-bin.tar.gz:
Index of /flume/1.8.0 https://downloads.apache.org/flume/1.8.0/
2、解压:
tar -zxvf apache-flume-1.8.0-bin.tar.gz -C /home
3、重命名:
mv apache-flume-1.8.0-bin/ flume
二、环境变量
1、配置flume环境变量:
vim /etc/profile
2、使环境变量立即生效:
source /etc/profile
三、配置文件
1、修改配置文件 flume-env.sh:
进入conf目录,拷贝 flume-env.sh.template 为 flume-env.sh:
cp flume-env.sh.template flume-env.sh
修改jdk路径:
export JAVA_HOME=/home/jdk
2、在 conf 目录下创建slave.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 = /tmp/logs #对于sink的配置描述 使用avro日志做数据的消费 a1.sinks.k1.type = avro # hostname是最终传给的主机名称或者ip地址 a1.sinks.k1.hostname = master a1.sinks.k1.port = 44444 #对于channel的配置描述 使用文件做数据的临时缓存 这种的安全性要高 a1.channels.c1.type = file a1.channels.c1.checkpointDir = /home/flume/checkpoint a1.channels.c1.dataDirs = /home/flume/data #通过channel c1将source r1和sink k1关联起来 a1.sources.r1.channels = c1 a1.sinks.k1.channel = c1
注:需要注意的地方标号已注明,需保证logs目录存在且为空,3,4两处依据实际情况进行修改
3、在 /tmp/下创建logs监控目录,flume/ 目录下创建checkpoint,data目录(3台机器全部都要做):
mkdir -p /tmp/logs
mkdir checkpoint
mkdir data
4、分发 flume 文件到slave1和slave2从机:
scp -r /home/flume slave1:/home/flume
scp -r /home/flume slave2:/home/flume
5、在master的flume的conf文件夹下创建一个master.conf文件:
vim 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 # hostname是最终传给的主机名称或者ip地址 a1.sources.r1.bind = master 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 #集群的nameservers名字 #单节点的直接写:hdfs://主机名(ip):9000/xxx a1.sinks.k1.hdfs.path = hdfs://master: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
注:如果机器名与笔者相同,只需修改这一行即可,master后的数字为core-site.xml配置文件中的配置数字
四、启动集群
1、启动hadoop集群:
sbin/start-all.sh
2、启动zookeeper:
3、启动flume集群:
在flume目录下 master端: bin/flume-ng agent -n a1 -c conf -f conf/master.conf -Dflume.root.logger=INFO,console slave1端和slave2端: bin/flume-ng agent -n a1 -c conf -f conf/slave.conf -Dflume.root.logger=INFO,console
五、在slave机器 /tmp/logs 目录下创建文本
1、创建test1:
vim test1
2、创建test2:
vim test2
slave端:
master端:
注:可以在master和slave终端均看到有持续的信息回读且正确读取到test1和test2文件
六、web端查看
master:50070
七、终端查看上传hdfs文件:
1、查看 hdfs 根目录列表:
hdfs dfs -ls /
2、查看上传文件内容:
hdfs dfs -cat /flume/20211109/events-.1636507269933
centos安装flume(集群模式)完成