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

Doris框架

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

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

Doris架构

  • 后端:C语言编写的,用于数据查询
  • 前端:Leader, Follower, Oberserver
    在这里插入图片描述

部署注意事项

  1. 磁盘空间按用户总数据量x3副本计算,然后再预留额外40%的空间。
  2. 所有部署节点关闭swap
  3. FE节点数据至少为1。一个Follower和一个Observer时,可以实现高可用
    在这里插入图片描述

参数修改

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

在这里插入图片描述

  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重复模型
      • 一般用于收集日志
      • 数据会自动排序

建表语法

在这里插入图片描述

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

动态分区

动态分区只支持Range分区,动态分区功能启动时,FE会启动一个后台进程,根据用户指定的规则创建或删除分区。
在这里插入图片描述

  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;

create materialized view store_amt as 
select 
store_id, 
sum(sale_amt) 
from sales_records 
group by store_id;
  • 18
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
课程总体架构请观看89讲。数据库是一个面向主题的、集成的、随时间变化的、但信息本身相对稳定的数据集合,用于对管理决策过程的支持。数据库的应用有:1.数据分析、数据挖掘、人工智能、机器学习、风险控制、无人驾驶。2.数据化运营、精准运营。3.广告精准、智能投放等等。数据库是伴随着企业信息化发展起来的,在企业信息化的过程中,随着信息化工具的升级和新工具的应用,数据量变的越来越大,数据格式越来越多,决策要求越来越苛刻,数据库技术也在不停的发展。数据库有两个环节:数据库的构建与数据库的应用。随着IT技术走向互联网、移动化,数据源变得越来越丰富,在原来业  务数据库的基础上出现了非结构化数据,比如网站log,IoT设备数据,APP埋点数据等,这些数据量比以往结构化的数据大了几个量级,对ETL过程、存储都提出了更高的要求。互联网的在线特性也将业务需求推向了实时化 ,随时根据当前客户行为而调整策略变得越来越常见,比如大促过程中库存管理,运营管理等(即既有中远期策略型,也有短期操作型)。同时公司业务互联网化之后导致同时服务的客户剧增,有些情况人工难以完全处理,这就需要机器 自动决策 。比如欺诈检测和用户审核。总结来看,对数据库的需求可以抽象成两方面: 实时产生结果、处理和保存大量异构数据。本课程基于真实热门的互联网商业务场景为案例讲解,结合分层理论和实战对数设计进行详尽的讲解,基于Flink+DorisDB实现真正的实时,数据来及分析,实时报表应用。具体数报表应用指标包括:实时大屏分析、流量分析、订单分析、商品分析、商家分析等,数据涵盖全端(PC、移动、小程序)应用,与互联网企业大数据技术同步,让大家能够学到大数据企业级实时数据库的实战经验。本课程包含的技术: 开发工具为:IDEA、WebStorm Flink 1.11.3Hadoop 2.7.5Hive 2.2.0ZookeeperKafka 2.1.0、Spring boot 2.0.8.RELEASESpring Cloud Finchley.SR2Flume 、Hbase 2.2.6DorisDB 0.13.9、RedisVUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav等课程亮点: 1.与企业接轨、真实工业界产品2.DorisDB高性能分布式数据库3.大数据热门技术Flink最新版4.真正的实时以及分层设计5.海量数据大屏实时报表6.数据分析涵盖全端(PC、移动、小程序)应用7.主流微服务后端系统8.数据库实时同步解决方案9.涵盖主流前端技术VUE+jQuery+Ajax+NodeJS+ElementUI+Echarts+Datav10.集成SpringCloud实现统一整合方案11.互联网大数据企业热门技术栈12.支持海量数据的实时报表分析13.支持全端实时实时报表分析14.全程代码实操,提供全部代码和资料 15.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值