问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Flume+Kafka+Flink+Redis构建大数据实时处理系统(PV、UV)

发布网友 发布时间:2024-10-02 11:43

我来回答

1个回答

热心网友 时间:2024-10-07 03:57

大数据处理的常用方法目前流行两种:离线处理和在线实时流处理。在互联网应用中,无论是哪一种处理方式,基本数据来源都是日志数据,例如web应用的用户访问日志、点击日志等。

大数据处理目前流行的是离线处理和在线处理,基本处理架构如下:

对于数据分析结果时间要求严格的,可以采用在线实时处理方式。例如使用Flink、SparkStreaming进行处理。例如天猫双十一的成交额实时动态更新,就需要采用在线处理。接下来介绍实时数据处理方式,即基于Flink的在线处理,在以下完整案例中,我们将完成以下几项工作:

需要注意的是,本案例核心在于如何构建实时处理系统,让我们对大数据实时处理系统有一个基本的、清晰的了解与认识。

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

从以上架构可以看出,其由以下三个重要组成部分:

从构建实时处理系统的角度出发,我们需要做的是,如何让数据在各个不同集群系统之间打通,即需要做各个系统之前的整合,包括Flume与Kafka的整合,Kafka与Flink的整合。当然,各个环境是否使用集群,依个人实际需要而定,在我们的环境中,Flume、Kafka、Flink都使用集群。

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

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

对于Kafka而言,关键在于如何接收来自Flume的数据。从整体上讲,逻辑应该是比较简单的,即可以在Kafka中创建一个用于我们实时处理系统的topic,然后Flume将其采集到的数据发送到该topic上即可。

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

在Kafka中,先创建一个topic,用于后面接收Flume采集过来的数据:

Flink提供了特殊的Kafka Connectors来从Kafka topic中读取数据或者将数据写入到Kafka topic中,Flink的Kafka Consumer与Flink的检查点机制相结合,提供exactly-once处理语义。为了做到这一点,Flink并不完全依赖于Kafka的consumer组的offset跟踪,而是在自己的内部去跟踪和检查。

Flink的kafka consumer叫做FlinkKafkaConsumer08(对于Kafka 0.9.0.X来说是09 等),它提供了对一个或多个Kafka topic的访问。

Flink Kafka Consumer08、09等的构造函数接收以下参数:

1、topic名称或者名称列表

2、反序列化来自kafka的数据的DeserializationSchema/Keyed Deserialization Schema

3、Kafka consumer的一些配置,下面的配置是必需的: "bootstrap.servers"(以逗号分隔的Kafka brokers列表) "zookeeper.connect"(以逗号分隔的Zookeeper 服务器列表) "group.id"(consumer组的id)

例如:

Java 代码:

Scala 代码:

当前FlinkKafkaConsumer的实现会建立一个到Kafka客户端的连接来查询topic的列表和分区。

为此,consumer需要能够访问到从提交Job任务的服务器到Flink服务器的consumer,如果你在客户端遇到任何Kafka Consumer的问题,你都可以在客户端日志中看到关于请求失败的日志。

Flink Kafka Consumer将会从一个topic中消费记录并以一致性的方式周期性地检查所有Kafka偏移量以及其他操作的状态。Flink将保存流程序到状态的最新的checkpoint中,并重新从Kafka中读取记录,记录从保存在checkpoint中的偏移位置开始读取。

checkpoint的时间间隔定义了程序在发生故障时可以恢复多少。

同时需要注意的是Flink只能在有足够的slots时才会去重启topology,所以如果topology由于TaskManager丢失而失败时,任然需要有足够的slot可用。Flink on YARN支持YARN container丢失自动重启。

所谓Flink和Redis的整合,指的是在我们的实时处理系统中的数据的落地方式,即在Flink中包含了我们处理数据的逻辑,而数据处理完毕后,产生的数据处理结果该保存到什么地方呢?显然就有很多种方式了,关系型数据库、NoSQL、HDFS、HBase等,这应该取决于具体的业务和数据量,在这里,我们使用Redis来进行最后分析数据的存储。

所以实际上做这一步的整合,其实就是开始写我们的业务处理代码了,因为通过前面Flume-Kafka-FLink的整合,已经打通了整个数据的流通路径,接下来关键要做的是,在Flink中,如何处理我们的数据并保存到Redis中。

Flink自带的connector提供了一种简洁的写入Redis的方式,只需要在项目中加入下面的依赖即可实现。

兼容版本:Redis 2.8.5 注意:Flink的connector并不是Flink的安装版本,需要写入用户的jar包并上传才能使用。

数据可视化处理目前我们需要完成两部分的工作:

对于Web项目的开发,因个人技术栈能力而异,选择的语言和技术也有所不同,只要能够达到我们最终数据可视化的目的,其实都行的。这个项目中我们要展示的是pv和uv数据,难度不大,因此可以选择Java Web,如Servlet、SpringMVC等,或者Python Web,如Flask、Django等,Flask我个人非常喜欢,因为开发非常快,但因为前面一直用的是Java,因此这里我还是选择使用SpringMVC来完成。

至于UI这一块,我前端能力一般,普通的开发没有问题,但是要做出像上面这种地图类型的UI界面来展示数据的话,确实有点*为力。好在现在第三方的UI框架比较多,对于图表类展示的,比如就有highcharts和echarts,其中echarts是百度开源的,有丰富的中文文档,非常容易上手,所以这里我选择使用echarts来作为UI,并且其刚好就有能够满足我们需求的地图类的UI组件。

对于页面数据的动态刷新有两种方案,一种是定时刷新页面,另外一种则是定时向后端异步请求数据。

目前我采用的是第一种,页面定时刷新,有兴趣的同学也可以尝试使用第二种方法,只需要在后端开发相关的返回JSON数据的API即可。

至此,从整个大数据实时处理系统的构建到最后的数据可视化处理工作,我们都已经完成了,可以看到整个过程下来涉及到的知识层面还是比较多的,不过我个人觉得,只要把核心的原理牢牢掌握了,对于大部分情况而言,环境的搭建以及基于业务的开发都能够很好地解决。
Flume+Kafka+Flink+Redis构建大数据实时处理系统(PV、UV)

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

ZESTRON表界面分析

在Dr. O.K. Wack Chemie GmbH,我们高度重视ZESTRON的表界面分析技术。该技术通过深入研究材料表面与界面的性质,为提升产品质量与可靠性提供了有力支持。ZESTRON的表界面分析不仅涵盖了相变化、化学反应、吸附与解吸等关键领域,还通过高精度仪器如固体表面Zeta电位分析仪等,确保数据准确可靠。这些分析手段对于优化产品配方、改进生产工艺、预防失效问题等具有重要意义,是我们不断提升产品性能与质量的重要工具。表面污染分析包括评估表面上存在的颗粒、残留物或物质。通过利用显微镜、光谱学和色谱法等技术,分析人员可以识别和表征污染物,以确定其成分和来源。这种分析在电子、制药和制造等各个行业中至关重要,以确保产品质量、性能和安全性。了解表面...

SparkStreaming项目实战,实时计算pv和uv(硬肝)

项目流程涉及到从日志数据的采集、清洗、实时计算至结果展示的全过程。数据首先通过 Flume 采集并存储于 HDFS,以供离线业务使用,同时,这些数据也通过 Kafka 进行 sink,而 SparkStreaming 则从 Kafka 中拉取数据进行实时处理。计算 PV(页面访问量)时,采用直接拉取数据的模式,利用 mapWithState 算子...

基于Flink的实时计算平台的构建

针对业务系统数据,Canal监控Binlog日志,发送至kafka;针对日志数据,由Flume来进行统一收集,并发送至kafka。消息队列的数据既是离线数仓的原始数据,也是实时计算的原始数据,这样可以保证实时和离线的原始数据是统一的。2. 计算层 Flink 有了源数据,在 计算层 经过Flink实时计算引擎做一些加工处理,然后...

北京交通大学-研究生课程-大数据技术基础与应用-综合实验报告

本次实验旨在综合运用Flume、Kafka、Flink、Mysql和DLV构建一个全面的大数据处理平台,加深对各组件的相互联系及功能的理解,提升多组件整合搭建大数据平台的能力。实验首先设计了一个电影数据源,每固定时间间隔生成电影观看数据,并将数据写入特定目录。Flume agent监测该目录变化,将信息传递至Kafka和HDFS通道。

大数据处理需要用到的编程语言有哪些

java语言:Java是一门很适合大数据项目的编程语言,Hadoop、Spark、Storm、Flink、Flume、Kafka、Sqoop等大数据框架和工具都是用Java编写的,因此,大数据会不可避免的使用到Java。Scala语言:Scala是一门轻松的语言,在JVM上运行,成功地结合了函数范式和面向对象范式 ...

大数据开发工程师要学习哪些课程?

大数据技术栈:Hadoop、Spark、Storm、Flink等;数据收集:关系型数据收集工具Sqoop与Canel、非关系型数据收集系统Flume、分布式消息队列Kafka;数据存储:数据存储格式、分布式文件系统及分布式数据库;资源管理和服务协调:YARN、ZooKeeper;计算引擎:包括批处理、交互式处理,以及流式实时处理三类引擎,内容涉及...

华为大数据认证考什么

HCIA-Big Data 考试内容 HCIA-Big Data V3.0考试覆盖:(1)大数据行业的发展趋势,大数据特点以及华为鲲鹏大数据等;(2)常用且重要大数据组件基础技术原理(包括HBase, Hive, Loader, MapReduce, YARN, HDFS, Spark, Flume, Kafka, ElasticSearch,ZooKeeper, Flink,Redis);(3)华为大数据解决方案...

大数据工程师需要具备的技能有什么?

大数据需要学习的技术知识:基础部分为java语言和linux操作系统;大数据相关技术部分为hadoop、hive、hbase、oozie、flume、python、redis、kafka、scala、spark、ELK、flink等。大数据的学习周期:零基础通常需要脱产全日制学习6个月左右,前一个半月学习java,四个多月时间学习大数据处理技术以及做项目。。

每秒千万级实时数据处理系统是如何设计的?

大数据实时数据处理用的技术主要是Flume+Kafka+SparkStreaming、Flume+Kafka+Storm、Flink等。这些技术每个技术细节就不详细讲述了。它们都是处理海量数据使用的开源框架,对于京东或者阿里很有可能优化了源码,开发出适合他们公司需要的场景框架。但是核心技术差异不大。大数据实时计算技术基本上都是用Kafka、Spark...

大数据主要学习什么知识?

第五阶段为分布式计算引擎主要讲解计算引擎、scala语言、spark、数据存储hbase、redis、kudu,并通过某p2p平台项目实现spark多数据源读写。第六阶段为数据存储与计算(实时场景)主要讲解数据通道Kafka、实时数仓druid、流式数据处理flink、SparkStreaming,并通过讲解某交通大数让你可以将知识点融会贯通。第七...

大数据实时处理 实时数据处理 实时大数据 大数据实时计算框架 学linux用什么系统 实时数据分析 多数据流实时分析 实时数据库 实时数据仓库
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
视听说课程授课方式 ps4上有什么可以双手柄很欢乐的游戏 肥腴词语解释 上腴词语解释 今日冬至吃什么好 冬至吃饺子是为纪念谁 此日喝羊肉汤驱除寒冷-今日头条 哪里有在养殖五爪金龙蜥蜴???合法的,我网上查查不到,知道的告诉我下,谢... ...怎样还原到另一个苹果6splus里。(注:苹果6plus已丢失, 在一个池塘生态系统中属于生产者的是( )A.水草、浮游植物B.浮游动物C... 鸡翅应该怎样做味道绝佳? 已知函数f(x)=Asin(ωx+φ)(A>0,ω>0,0<φ<π,),其导函数y=f‘(x)的... 已知函数f(x)=Asin(wx+φ)(其中A>0,w>0,0<φ<π/2)的图象如图所示_百度... 已知函数f(x)= Asin(wx+φ)(x属于R,A>0,w>0,|φ|<π/2)的部分图象如图... 为什么 我16岁时候办的第二代身份证有效期是5年,第二次办的是10年。 已知函数f(x)=Acos(ωx+φ)(A>0,ω>0,0<φ<π)为奇函数,该函数的部分... ...φ) (x∈R,A>0,w>0,0<φ<π/2)的部分图像如图所示。 已知函数f(x)=Asin(ωx+φ)(A>0,φ>0,|φ|<π/2)的部分函数图象如图所 ... 哪些竹子会开花 南航包括什么航 腿关节积液怎么办 解梦 我没女朋友 却梦见我和女朋友分手 非常痛苦 从不喝酒的我 喝了... 求问 这是什么虫子?咬人不?在家里发现了它的尸首 感觉好恶心 请问现在适合买什么样的属于潜力股的邮票? 这是什么虫子?好恶心啊! 庚申年庚申年:猴票发行与投资 猴票的真假辨别 小米手机的电池健康度怎么查询? 怎样查电池寿命 成都博成知识产权代理有限责任公司企业产品与服务 有一艘质量为2.6x10(6次方)kg的运输船,在一次海难中沉入海底,打捞船利 ... flume客户端支持不同服务器同一日志文件名 数据中台技术架构简述 macos解压命令是什么? Apple Watch Series 9手表的起售价是多少? 求花美男连锁恐怖袭击事件下载 ...是6个螺栓但用了12角的套筒会出现什么问题? 《全面战争·三国》攻略(五)心中的三国游戏 机械革命x6s和t6s外观一样吗,性能差多少 机械革命MR X6S-LE01有用过的吗?建议买吗? 机械革命MR X6S-M 总共有几个固态硬盘的接口,接口类型是什么_百度知 ... oppo find 7去日本是否可以使用 oppofind7轻装版出泰国是否可以使用? ...则需赛多少场次?如果是单循环比赛,一共要多少场?求解答 系统重装后,请问装什么杀毒防毒工具最好 NOD32 金山 卡巴哪个好一点? 什么杀毒软件完全杀到毒 (专科生)想问一下,这个全媒体广告策划与营销究竟是干什么 关于卡巴和ewido 我用的是金山毒霸6,必须充值才能升级,不知大家都用哪种杀毒工具,哪种用... 请ewido的高手进来帮我解答一下!!