Flume+Kafka+SparkStreaming实时统计网站日志--3、Flume采集数据到Kafka

      在上一篇 2、项目技术选型和项目架构 中,确定了项目使用的技术架构,接下来要开始实践了。根据里面的架构图,第一步是使用flume来采集web 服务器上的日志。
      因为一般的web服务器是不和Hadoop集群放在一起的,所以需要使用一个 flume agent 放在web服务器上,采集之后再传到Hadoop集群上的Flume,flume再把数据发送给Kafka。这里的2个Flume就形成了串联。

一、flume采集架构图

在这里插入图片描述
      在服务器A上放一个flume agent,用来采集日志 data.log ,采集之后串联Hadoop集群上的Flume,把数据写到集群的Kafka。

二、日志自动生成

使用Java代码(也可以使用scala、python等),编造日志,日志格式如下(实际中每个数据之间是用 \t 分隔的,下面是为了方便展示用逗号):

(ip,yyyy-MM-dd HH:mm:ss,url,statuCode,referer)
(48.10.89.198	2019-11-26 17:29:01	"GET /class/121.html HTTP/1.1"	205	https://www.baidu.com/s?wd=Hadoop基础)
  • ip:IP地址,从一个数组随机取,然后拼接成ip地址
  • yyyy-MM-dd HH:mm:ss:时间,取当前时间
  • url:/class 开头的才是要的课程,其他开头的不需要;从一个数组中随机取id,如121,然后前面拼接上GET和后面拼接上HTTP/1.1
  • statuCode:http的返回状态码,有200、404、500等,从一个数据中随机取
  • referer:从不同搜索引擎过来的,从一个数组随机取
          Java实现很简单,除了时间是直接拿当前的,其他数据都从各自的数组中随机取一个,然后拼接成一条日志数据,把数据写入到文件中,将这个步骤重复10次。最后把这个java类打成jar包,放在服务器上,每分钟跑一次,一两天之后就有几万条数据了。
## 每分钟跑一次任务,cron.sh里面的内容是:
:<<!
#!/bin/bash
source /etc/profile
java -jar /home/ylqdh/project_jars/logGenerator.jar /usr/local/web/data.log
!

*/1 * * * * /home/gwnet/project_jars/cron.sh
## 如果不懂这个,建议先学习一下 linux crontab的用法

这个 LogGenerator.java 代码放在我的github上 ylqdh的Github

三、Flume采集的配置文件写法

服务器A上flume的采集配置文件 exec-memory-avro.conf ,如下:

exec-agent.sources = exec-source
exec-agent.channels = exec-channel
exec-agent.sinks = exec-sink

## sources
exec-agent.sources.exec-source.type=exec
exec-agent.
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值