在这个大数据技术栈里,NginxFlumeKafkaFlinkApache Doris 分别承担不同的功能, 详细介绍数据从采集到清洗再到入库的整个流转过程。

1. 数据采集

  • Nginx:它作为 Web 服务器或反向代理服务器,在前端接收大量来自客户端的请求和数据。例如,网站的用户访问日志、API 请求数据等都会先汇聚到 Nginx 中。这些数据包含了丰富的信息,像用户的 IP 地址、访问时间、请求的页面或接口等。
  • Flume:作为专业的日志采集工具,会从 Nginx 这里采集数据。它可以通过配置不同的数据源(如文件、网络端口等)来收集数据。比如,Flume 可以通过监控 Nginx 的日志文件路径,实时捕获新产生的日志数据。配置好 Flume 的数据源和通道后,它会将采集到的数据传输到下一个环节。示例配置

2. 数据传输与缓冲

  • Kafka:是一个高吞吐量的分布式消息队列系统。Flume 将采集到的数据发送到 Kafka 的指定主题(topic)中。Kafka 在这里起到了缓冲和削峰填谷的作用,它可以存储大量的实时数据,并且保证数据的顺序性和可靠性。多个数据消费者(如 Flink)可以从 Kafka 中订阅数据,实现数据的异步处理。不同的业务系统可以根据自己的需求,从 Kafka 中获取所需的数据进行处理。

3. 数据清洗与处理

  • Flink:作为一个流式计算框架,从 Kafka 中读取数据并进行清洗和处理。Flink 具有强大的实时处理能力,支持多种数据处理操作,如过滤、转换、聚合等。例如,对于 Nginx 日志数据,Flink 可以过滤掉无效的请求记录,将数据中的时间格式进行统一转换,或者对用户的访问行为进行聚合统计。

4. 数据入库

  • Apache Doris:是一个高性能的分布式分析型数据库。Flink 处理完的数据可以直接写入 Apache Doris 中。Apache Doris 支持多种数据导入方式,如 Stream LoadBroker Load 等。通过 Stream LoadFlink 可以以流的方式将处理后的数据实时写入 Apache Doris 中,方便后续进行快速的查询和分析。

5. 数据查询与分析

  • Presto:是一个分布式 SQL 查询引擎,可用于对存储在 Kudu、Iceberg 等数据源中的数据进行交互式查询和分析。Presto 支持标准的 SQL 语法,可以快速地对大规模数据进行查询和分析,适用于实时数据分析、报表生成等场景。

综上所述,整个数据流转过程是从 Nginx 采集数据,通过 Flume 传输到 Kafka 进行缓冲,再由 Flink 进行清洗和处理,最后将处理后的数据存储到 Apache Doris 中,以便后续进行数据分析和挖掘。