热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Doris和Flink在实时数仓实践

一、Doris简介1.1简介ApacheDoris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。ApacheDoris的分布式架

一、Doris简介
1.1 简介
Apache Doris是一个现代化的MPP分析型数据库产品。仅需亚秒级响应时间即可获得查询结果,有效地支持实时数据分析。Apache Doris的分布式架构非常简洁,易于运维,并且可以支持10PB以上的超大数据集。
Apache Doris可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。令您的数据分析工作更加简单高效!
1.2 架构

想要了解更多doris,可以去官网学习Apache Doris,Flink我也不赘述了,说多了,今天讲不完。
我们的业务背景,就是想秒级实时数据呈现。
二、进入正题
2.1 我们的历史架构

数据量介绍:
a.请求百亿级
b.曝光亿级
c.点击百万级
d.其他数据就不说了,我就简单讲哈哈。
2.2 遇到的问题
计算问题:
a. 多表join不易维护
b. sql化还要实现各种udf函数
c. 开发耗时
存储问题:
a. 宽表需要多流join,还得关联维度表
b. es不支持join,需要提前加工好宽表
c. es大量聚合查询性能下降
d. es-sql,计算函数支持不优雅,比如:除法等等
e. es没有聚合模型,全量写入会带来写入压力和冗余数据,需要依托flink窗口预计算来减轻写入压力。缺点:flink窗口小,写入量大带来数据冗余和写入性能差;flink窗口大,写入数据量会减少,数据时效性差,无法满足模型训练秒级别的需求
2.3 解决问题
计算替代思考?????
a.多流join,能否在近实时的olap引擎中去做?
b.用olap引擎做能带给我们什么价值?
c.web接口服务提供的维度数据如何办?olap也没法实时查询接口服务呀,还有kv内存得维度数据,这些都需要flink去扩充。mysql的数据也可以用flink扩充,也可以自己通过脚本写入到olap中。
结论:doris可以替代flink做join计算,并且doris的udf函数齐全,自带colocate join模型(按照相同key分桶,join的时候可以避免网络shuffle)和聚合模型(降低数据量,提升查询效率),还有好多优势,我就不多说了,doris真的是个神器。

看上面????这个图,你就知道doris的优势了,千万级数据join,秒级产出,非常赞????。
存储替代思考?????
a.为什么es不支持join,我们还要去用他?为什么不能替换?
b.什么组件替换比较好呢?行业内都在用什么组件?

总结:直接换成doris,es本身就不适合做olap多维聚合分析,尤其是在join的场景,无法满足业务需求。
a.计算上olap可以替代部分flink的join任务:
b.两个kafka流做join,无需关联kv和接口维度数据,比如点击流+唤起流+mysql维度信息(多个mysql表),可以直接在doris中做join,无需单独开发flink去做,复用doris的udf函数。(目前我在doris中都是进行4表join非常方便,千万级数据join性能在2-3s返回)
c.mysql可以写个定时任务写入到doris中
d.hive的维度数据也可以导入到doris中进行维度关联。
最后架构:

总结:doris内部做join可以节省开发时间,并且自已维护,不用考虑数据延迟落后的问题。doris内部自带物化视图,既可以存明细,也可以实现聚合模型,既方便报表查询,也方便线上通过明细数据问题排查,同时还方便维护,模型训练也支持秒级查询。
为什么我要all in 这个doris
a.es无法进行join计算
b.druid进行join计算还不够强大(虽然新版0.18.0本支持了join语法)
c.clickhouse运维复杂(还是长期看好,性能是个亮点)
d.kylin的cube爆炸,计算和管理成本高。
浅谈不到位的,还请各位大佬多多指点.
三、业务数仓架构应该具备哪些能力?
a.业务经常变动打法,你的实时数据仓不能构建的太重,需要短时间迭代上线(大家没有遇到业务提一个需求,一个月时间做完了,业务用了几次就不用了,还有就是公司改变广告营销打法,之前的实时指标可能没人去看了,打入冷宫了)。
b.你的架构要足够的轻量化,易维护,同时还得兼顾:明细查询(线上问题排查),聚合查询(报表指标呈现)
业务看重的是你支持业务的能力,而不是你花里胡哨的架构。你要确保业务当天提需求,当天可以完成,你的架构好坏是靠你支持业务的效果来体现,所以适合自己业务的架构,就是好架构。
c.你的架构平时稳只能算及格,你要确保架构在大促和高峰流量来时系统稳定,能不能抗住百亿或者千亿的流量。
d.不同sla的业务场景设计不同的架构,并不是所有的业务场景都是要求毫秒或者秒级,其实你仔细跟他们聊分钟级他们也可以接受,不同的sla对你的计算资源成本要求不一样,适量把控计算资源成本,优秀的工程师都是想办法给公司省钱,同时还可以圆满完成任务。



推荐阅读
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 马蜂窝数据总监分享:从数仓到数据中台,大数据演进技术选型最优解
    大家好,今天分享的议题主要包括几大内容:带大家回顾一下大数据在国内的发展,从传统数仓到当前数据中台的演进过程;我个人认为数 ... [详细]
  • 数据库异常智能分析与诊断
    数据库,异常, ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 本文介绍了OpenStack的逻辑概念以及其构成简介,包括了软件开源项目、基础设施资源管理平台、三大核心组件等内容。同时还介绍了Horizon(UI模块)等相关信息。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • OpenStackQ版本已经发布了一段时间了。今天,小编来总结一下OpenStackQ版本核心组件的各项主要新功能,再来汇总一下最近2年来OpenStackN、O、P、Q各版本核心 ... [详细]
  • Java工程师书单(初级,中级,高级)
    简介怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序员也是工作一两年之后开始迷茫的程序 ... [详细]
  • 企业数据应用挑战及元数据管理的重要性
    本文主要介绍了企业在日常经营管理过程中面临的数据应用挑战,包括数据找不到、数据读不懂、数据不可信等问题。针对这些挑战,通过元数据管理可以实现数据的可见、可懂、可用,帮助业务快速获取所需数据。文章提出了“灵魂”三问——元数据是什么、有什么用、又该怎么管,强调了元数据管理在企业数据治理中的基础和前提作用。 ... [详细]
  • 合并列值-合并为一列问题需求:createtabletab(Aint,Bint,Cint)inserttabselect1,2,3unionallsel ... [详细]
  • {moduleinfo:{card_count:[{count_phone:1,count:1}],search_count:[{count_phone:4 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有