一、引言
实时数据分析和处理在当今信息化时代变得越来越重要。为了满足企业对大规模数据处理的需求,Apache Flink作为一款流式计算引擎,得到了广泛的应用和认可。本文将介绍如何结合Doris和Flink来构建高效易用的实时数据仓库。
二、Doris简介
Doris是一款开源的分布式实时OLAP数据库,具有分布式、实时和高性能的特点。它能够快速处理大规模数据,支持高并发查询和实时分析。Doris采用多维模型并行计算的方式,利用列式存储和分布式计算的优势,提供了层次化的数据仓库模型,具备优秀的查询性能和灵活的数据建模能力。
三、Flink简介
Apache Flink是一个开源的、分布式的、高性能的流式计算引擎。它能够处理具有大规模、高吞吐量和低延迟的数据流,并提供了丰富的流式处理和批处理的API。Flink的优势在于其良好的容错性和自动化的故障恢复机制,能够保证数据处理的可靠性和准确性。
Flink部署
注意:
1 slot改成100 (CDC表一个表占用一个slot,同步表多了小心不够用!)
2 flink1:8081
3 提交任务(这2个sql文件是下文python脚本生成!!!)
-- doris建表
ssh -t -t $FEIP
ssh $FEIP " mysql -h$FEIP -uroot -p密码 -P9030 -e'source /root/sink2doris.sql;'"
-- 提交flinkJob 开始数据同步
cd /flink/bin/
./sql-client.sh -f /flinksync/output/mysql2sink.sql
离线数据同步脚本(Doris官方提供BUT需要修改!!!)
mysql to doris 主要适用于自动化创建doris odbc 表,主要用shell脚本实现。
官网给的此脚本内容自己下载mysql_to_doris.tar.gz解压即可查看,这里看看我改变的部分吧:
1 bin/run.sh 保持原样、勿动!
vi /root/mysql_to_doris/conf/doris_tables
vi /root/mysql_to_doris/conf/mysql_tables
vi /root/mysql_to_doris/conf/env.conf
sh bin/run.sh -o
#建表并同步数据
sh mysql_to_doris/bin/run.sh -o -t JDBC -e -i
失败看日志
/root/mysql_to_doris/conf/error.log
四、Doris与Flink的集成
为了实现高效易用的实时数据仓库,我们可以将Doris和Flink进行集成。具体而言,可以通过Flink的DataStream API来实时读取和处理数据,并将结果写入Doris数据仓库。通过这种方式,我们可以充分利用Flink的流式计算能力和Doris的高性能存储和查询能力,实现快速、准确和可靠的实时数据分析和处理。
五、构建实时数仓的步骤
-
安装和配置Doris和Flink:首先,我们需要安装和配置Doris和Flink的相关环境,并确保它们能够正常运行。
-
数据加载和转换:将原始数据加载到Flink的DataStream中,并实现必要的数据转换和清洗操作。
-
实时计算和分析:利用Flink的流处理API,对数据进行实时计算和分析,并生成相应的结果。
-
结果写入Doris:将计算结果写入Doris数据仓库,保证数据的持久化存储和查询。
六、实践案例
假设我们需要构建一个实时销售数据分析系统。首先,我们从各个销售渠道收集到实时的销售数据,并通过Flink实时处理数据,计算各个渠道的销售额、销售量和销售排名等指标。然后,将计算结果写入Doris数据仓库,并利用Doris的高性能查询功能,实现实时的销售数据分析和报表展示。
如果说Flink作为实时计算利器是不二选择,那么Doris是实时数仓的最佳选择。Apache Doris是一款开源的MPP分析型数据库产品,不仅能够在压秒级响应时间即可获得查询结果,有效的支持实时数据分析,而且支持10PB以上的超大的数据集。相较于其他业界比较火的OLAP数据库系统,Doris的分布式架构非常简洁,支持弹性伸缩,易于运维,节省大量人力和时间成本。目前国内社区火热,也有美团、小米等大厂在使用。
七、总结
通过结合Doris和Flink,我们可以构建一个高效易用的实时数据仓库。借助于Flink流式计算引擎的能力和Doris高性能存储和查询的优势,实现快速、准确和可靠的实时数据分析和处理。希望本文能够对大家有所启发,引起对实时数据仓库构建的兴趣和思考。