Flume+kafka+flink+es 构建大数据实时处理

大数据目前的处理方法有两种:一种是离线处理,一种是实时处理。如何构建我们自己的实时数据处理系统我们选用flume+kafka+flink+es来作为我们实时数据处理工具。因此我们的架构是:

flume集群

kafka集群

flink集群

es集群

其具体架构如图

对于flume集群,它的作用就是采集数据并将数据提供给kafka集群,我们可以通过topic来实现。

对于zookeeper-kafka集群,它的作用是存储flume提供的数据,并且将相应的topic对外开放。它的作用就相当于一个数据库(事实上它喜欢被动)

对于flink集群,它当然是消费kafka的message,并且对这些message进行各种犀利的处理(它对计算很擅长,对于关系并不像吹的那样牛逼也许是我们主要使用streamAPI而不是tableAPI的缘故)这里要声明的是我们做的是流式逐条数据处理。表关联和同表不同数据关联请先跑一遍mysql。因为tableAPI并不能支持我们之前用过的所有sql函数,当然最常见的SUM,AVG,COUNT等除外。曾经很SB的想用flink的tableAPI把大约3G的数据文件根据某个字段合并(i7 4核 16G内存的MBP跑了7分钟)觉得还是nio的0拷贝好一点随便七八十的分片并行(数据量大的话能把别的系统跑崩)对于连接ES和kafka的事交给flink的API仨字儿,真好用。

当然版本也要注意:我们flume => 1.8.0

                                       zookeeper => 3.5.5

                                       kafka => 2.11

                                       flink => 1.9.1

                                       ES => 7.2.0

具体配置下次再聊

发布了15 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/Nryana0/article/details/104050950