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电商实时数仓(四)

    业务数据:数据都是MySQL中的表格数据, 使用Flink SQL 处理 日志数据:分为page页面日志(页面信息,曝光信息,动作信息,报错信息)和启动日志(启动信息,报错信息),使用Flink Stream API处理 五种日志数据: “start”; 启动信息 “err”; 错误信息 “display”; 曝光信息 “ac

    2024年01月17日
    浏览(38)
  • Flink实时电商数仓(八)

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

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

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

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

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

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

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

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

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

    2024年02月06日
    浏览(37)
  • 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日
    浏览(34)
  • 使用 Flink CDC 实现 MySQL 数据,表结构实时入 Apache Doris

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

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

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

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

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

    2024年02月16日
    浏览(34)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包