Flink实时电商数仓之Doris框架(七)

这篇具有很好参考价值的文章主要介绍了Flink实时电商数仓之Doris框架(七)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Doris框架

大规模并行处理的分析型数据库产品。使用场景:一般先将原始数据经过清洗过滤转换后,再导入doris中使用。主要实现的功能有:

  1. 实时看板
    • 面向企业内部分析师和管理者的报表
    • 面向用户或者客户的高并发报表分析
  2. 即席查询
  3. 统一数仓构建:替换了原来由Spark, Hive,Kudu, Hbase等旧框架
  4. 数据湖联邦查询:通过外表的方式联邦分析位于Hive,IceBerg,Hudi中的数据

Doris架构

  • 后端:C语言编写的,用于数据查询
  • 前端:Leader, Follower, Oberserver
    Flink实时电商数仓之Doris框架(七),flink,大数据,doris

部署注意事项

  1. 磁盘空间按用户总数据量x3副本计算,然后再预留额外40%的空间。
  2. 所有部署节点关闭swap
  3. FE节点数据至少为1。一个Follower和一个Observer时,可以实现高可用
    Flink实时电商数仓之Doris框架(七),flink,大数据,doris

参数修改

  1. 最大同时打开文件个数
  2. 设置最大虚拟块,sudo reboot重启后生效
  3. 根据自己需求下载对应的安装包,如果是苹果电脑下载arm包,否则选择x64. https://doris.apache.org/download/
  4. 解压安装fe, be,以及其他依赖,也就是下载的安装包里面的三个文件。
  5. 由于虚拟机有多张网卡,因此需要修改对应的网段信息,和NAT模式里面的网段对应。

Flink实时电商数仓之Doris框架(七),flink,大数据,doris

  1. 如果参数配置错误,导致无法成功启动,直接删掉已经安装的文件,直接重新解压。

配置BE

  1. 修改web_server的端口号,改为7040
  2. 修改网段地址为NAT的网段
  3. 添加单台后端BEALTER SYSTEM ADD BACKEND "hadoop102:9050";
  4. /opt/module/doris/be/bin/start_be.sh --daemon启动后端
  5. SHOW PROC '/backends'\G查看后端状态

BE后台节点变更

  • 建议直接分发BE压缩包,因为Doris解压启动后就会产生底层数据,直接使用新的压缩包扩容会更为方便。在MySQL客户端,通过ALTER SYSTEM ADD BACKEND
  • 减少节点时需要先移动数据,然后再删除。ALTER SYSTEM DECOMMISSION BACKEND "be_host:be_heartbeat_service_port";

FE节点的变更

  1. 分发fe文件,注意删除元数据。hadoop102 发过来的元数据rm -rf /opt/module/doris/fe/doris-meta/*
  2. 启动FE:/opt/module/doris/fe/bin/start_fe.sh --daemon --helper hadoop102:9010
  3. 查看FE状态:show proc '/frontends';
  4. FE的缩容:ALTER SYSTEM DROP FOLLOWER[OBSERVER] "fe_host:edit_log_port";

群启群关脚本

  • 创建脚本为doris.sh
#!/bin/bash
case $1 in
    "start")
        for host in hadoop102 hadoop103 hadoop104 ; do
            echo "========== 在 $host 上启动 fe  ========="
            ssh $host "source /etc/profile; /opt/module/doris/fe/bin/start_fe.sh --daemon"
        done
        for host in hadoop102 hadoop103 hadoop104 ; do
            echo "========== 在 $host 上启动 be  ========="
            ssh $host "source /etc/profile; /opt/module/doris/be/bin/start_be.sh --daemon"
        done

       ;;
    "stop")
            for host in hadoop102 hadoop103 hadoop104 ; do
                echo "========== 在 $host 上停止 fe  ========="
                ssh $host "source /etc/profile; /opt/module/doris/fe/bin/stop_fe.sh "
            done
            for host in hadoop102 hadoop103 hadoop104 ; do
                echo "========== 在 $host 上停止 be  ========="
                ssh $host "source /etc/profile; /opt/module/doris/be/bin/stop_be.sh "
            done

           ;;

    *)
        echo "你启动的姿势不对"
        echo "  start   启动doris集群"
        echo "  stop    停止stop集群"

    ;;
esac
  • chmod +x doris.sh 添加脚本执行权限

数据表设计

  • row: 用户的一行数据
  • column:描述一行数据中的不同字段
    • key: 维度列
    • value:指标列
  • 分区分片
    • Tablet:数据分片,数据划分的最小逻辑单元
    • Partition:最小的管理单元,数据的导入与删除,都只能针对一个partition进行
  • 数据模型
    • Aggregate聚合模型
      • 一般用来存放事实表
      • 副本数不能高于be的个数
      • 没有幂等性,如果sum求和,多次插入同样数据时,结果会加起来
    • Unique唯一性模型
      • 使用unique key(k1, k2)来保证key的唯一
      • 底层其实也是使用聚合模型,非主键使用replace关键字
    • Duplicate重复模型
      • 一般用于收集日志
      • 数据会自动排序

建表语法

Flink实时电商数仓之Doris框架(七),flink,大数据,doris

  1. olap是默认引擎,字段可以设置引擎,如果是其他的引擎,就表示远程连接其他数据库
  2. 尽量选择整型类型,整型长度遵循够用即可
  3. 分区方式,如果不分区时,会默认创建一个跟表名一致的分区
    • range分区,一般按照天数划分。一般使用value less than 的方式来指定上界,区间都是左闭右开的
    • list分区,一般按照城市划分。使用value in(一般是城市名称列表)
  4. 分桶:分桶字段一般是join时使用的关键字字段。建议桶的个数等于离线时划分的个数。一般为10~20.
  5. propertities属性
    • 副本数
    • 设定到期时间,到期后作为冷数据放到机械硬盘

动态分区

动态分区只支持Range分区,动态分区功能启动时,FE会启动一个后台进程,根据用户指定的规则创建或删除分区。
Flink实时电商数仓之Doris框架(七),flink,大数据,doris

  1. 查看分区详情:show partition from 表名
  2. 如果分区不存在,则无法插入数据。并且会报错 no partition for this tuple

上卷

  1. desc 表名 all :查询表格的全部信息
  2. 上卷类似MR中的预聚合,提前创建好要查询的指标。后期查询该数据时,直接返回即可。也可以对于部分数据做排序。

物化视图

预先计算定义好的数据集,存储在Doris中的一个特殊的表。加快对固定维度进行分析查询。

  • 适用场景:
    • 查询仅涉及表中的很小一部分列或行
    • 查询包含一些耗时处理操作,比如,事件很久的聚合操作
    • 查询需要匹配不同的前缀索引
  • 使用
    • 创建物化视图

    • 检查物化视图是否构建完成desc sales_records all;

    • 检验当前查询是否匹配到了合适的物化视图EXPLAIN SELECT store_id, sum(sale_amt) FROM sales_records GROUP BY store_id;文章来源地址https://www.toymoban.com/news/detail-770222.html

create materialized view store_amt as 
select 
store_id, 
sum(sale_amt) 
from sales_records 
group by store_id;

到了这里,关于Flink实时电商数仓之Doris框架(七)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Flink电商实时数仓(三)

    维度层的重点和难点在于实时电商数仓需要的维度信息一般是动态的变化的,并且由于实时数仓一般需要一直运行,无法使用常规的配置文件重启加载方式来修改需要读取的ODS层数据,因此需要通过Flink-cdc实时监控MySql中的维度数据配置信息表,实时动态的发布广播信息。主

    2024年02月03日
    浏览(49)
  • Flink实时电商数仓(十)

    app BaseApp: 作为其他子模块中使用Flink - StreamAPI的父类,实现了StreamAPI中的通用逻辑,在其他子模块中只需编写关于数据处理的核心逻辑。 BaseSQLApp: 作为其他子模块中使用Flink- SQLAPI的父类。在里面设置了使用SQL API的环境、并行度、检查点等固定逻辑。 bean:存放其他子模块中

    2024年02月03日
    浏览(43)
  • Flink实时电商数仓(八)

    主要任务:从kafka页面日志主题读取数据,统计 七日回流用户:之前活跃的用户,有一段时间不活跃了,之后又开始活跃,称为回流用户 当日独立用户数:同一个用户当天重复登录,只算作一个独立用户。 读取kafka页面主题数据 转换数据结构: String - JSONObject 过滤数据,u

    2024年02月03日
    浏览(38)
  • 如何基于 Apache Doris 与 Apache Flink 快速构建极速易用的实时数仓

    随着大数据应用的不断深入,企业不再满足离线数据加工计算的时效,实时数据需求已成为数据应用新常态。伴随着实时分析需求的不断膨胀,传统的数据架构面临的成本高、实时性无法保证、组件繁冗、运维难度高等问题日益凸显。为了适应业务快速迭代的特点,帮助企业

    2024年02月12日
    浏览(48)
  • Apache Flink X Apache Doris构建极速易用的实时数仓架构

    大家好,我叫王磊。是SelectDB 大数据研发。今天给大家带来的分享是《Apache Flink X Apache Doris构建极速易用的实时数仓架构》。 下面是我们的个人介绍:我是Apache Doris Contributor 和阿里云 MVP。同时著有《 图解 Spark 大数据快速分析实战》等书籍。 接下来咱们进入本次演讲的正题

    2023年04月24日
    浏览(49)
  • Flink 实时数仓 (一) --------- 数据采集层

    1. 普通实时计算与实时数仓比较 普通的实时计算优先考虑时效性,所以从数据源采集经过实时计算直接得到结果。如此做时效性更好,但是弊端是由于计算过程中的中间结果没有沉淀下来,所以当面对大量实时需求的时候,计算的复用性较差,开发成本随着需求增加直线上升

    2024年02月06日
    浏览(47)
  • Flink实时同步MySQL与Doris数据

    技术解析|Doris Connector 结合 Flink CDC 实现 MySQL 分库分表 Exactly Once 精准接入-阿里云开发者社区 1. Flink环境: https://flink.apache.org/zh/ 下载flink-1.15.1 解压,修改配置 修改配置 修改rest.bind-address为 0.0.0.0 下载依赖jar包 至 flink安装目录lib下 启动flink 访问WebUI http://192.168.0.158:8081 2、

    2024年02月13日
    浏览(45)
  • 使用 Flink CDC 实现 MySQL 数据,表结构实时入 Apache Doris

    现有数据库:mysql 数据:库表较多,每个企业用户一个分库,每个企业下的表均不同,无法做到聚合,且表可以被用户随意改动,增删改列等,增加表 分析:用户自定义分析,通过拖拽定义图卡,要求实时,点击确认即出现相应结果,其中有无法预判的过滤 问题:随业务增长

    2023年04月08日
    浏览(56)
  • [选型] 实时数仓之技术选型

    对于已有的hive数据仓,怎样改造成实时数仓的要求呢? 2.关于实时数仓的选型 如果选择hbase,建议选择kudu 如果选择kudu, 还可以选择doris 如果选择doris,建议选择iceberg 以上三种选择,要配合具体的场景; 其中doris作为实时数仓,可以设计存储n天的(doris紫自身能够自动就行数

    2024年02月13日
    浏览(51)
  • 实时数仓|基于Flink1.11的SQL构建实时数仓探索实践

    实时数仓主要是为了解决传统数仓数据时效性低的问题,实时数仓通常会用在实时的 OLAP 分析、实时的数据看板、业务指标实时监控等场景。虽然关于实时数仓的架构及技术选型与传统的离线数仓会存在差异,但是关于数仓建设的基本方法论是一致的。本文会分享基于 Flink

    2024年02月16日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包