数据结构论坛

首页 » 分类 » 定义 » FlumeKafkaStormRe
TUhjnbcbe - 2021/8/14 16:43:00

数据处理方法分为离线处理和在线处理,今天写到的就是基于Storm的在线处理。在下面给出的完整案例中,我们将会完成下面的几项工作:

如何一步步构建我们的实时处理系统(Flume+Kafka+Storm+Redis)

实时处理网站的用户访问日志,并统计出该网站的PV、UV

将实时分析出的PV、UV动态地展示在我们的前面页面上

如果你对上面提及的大数据组件已经有所认识,或者对如何构建大数据实时处理系统感兴趣,那么就可以尽情阅读下面的内容了。

需要注意的是,核心在于如何构建实时处理系统,而这里给出的案例是实时统计某个网站的PV、UV,在实际中,基于每个人的工作环境不同,业务不同,因此业务系统的复杂度也不尽相同,相对来说,这里统计PV、UV的业务是比较简单的,但也足够让我们对大数据实时处理系统有一个基本的、清晰的了解与认识,是的,它不再那么神秘了。

实时处理系统架构

我们的实时处理系统整体架构如下:

即从上面的架构中我们可以看出,其由下面的几部分构成:

Flume集群

Kafka集群

Storm集群

从构建实时处理系统的角度出发,我们需要做的是让数据在各个不同的集群系统之间打通(从上面的图示中也能很好地说明这一点),即需要做各个系统之前的整合,包括Flume与Kafka的整合,Kafka与Storm的整合。当然,各个环境是否使用集群,依个人的实际需要而定,在我们的环境中,Flume、Kafka、Storm都使用集群。

Flume+Kafka整合

1整合思路

对于Flume而言,关键在于如何采集数据,并且将其发送到Kafka上,并且由于我们这里了使用Flume集群的方式,Flume集群的配置也是十分关键的。而对于Kafka,关键就是如何接收来自Flume的数据。从整体上讲,逻辑应该是比较简单的,在Kafka中创建一个用于我们实时处理系统的topic,然后Flume将其采集到的数据发送到该topic上即可。

2整合过程

整合过程:Flume集群配置与KafkaTopic创建。

Flume集群配置

在我们的场景中,两个FlumeAgent分别部署在两台Web服务器上,用来采集Web服务器上的日志数据,然后其数据的下沉方式都为发送到另外一个FlumeAgent上,所以这里我们需要配置三个FlumeAgent。

FlumeAgent01

该FlumeAgent部署在一台Web服务器上,用来采集产生的Web日志,然后发送到FlumeConsolidationAgent上,创建一个新的配置文件flume-sink-avro.conf,其配置内容如下:

#########################################################

##

##主要作用是监听文件中的新增数据,采集到数据之后,输出到avro

##注意:Flumeagent的运行,主要就是配置sourcechannelsink

##下面的a1就是agent的代号,source叫r1channel叫c1sink叫k1

#########################################################

a1.sources=r1

a1.sinks=k1

a1.channels=c1

#对于source的配置描述监听文件中的新增数据exec

a1.sources.r1.type=exec

a1.sources.r1.

1
查看完整版本: FlumeKafkaStormRe