数据仓库
文章平均质量分 82
数据建筑师
做一个有输出的人。面对现实,忠于理想。老骥伏枥,志在千里。
展开
-
多团队下SLA约定问题
比如,恰好有一天甲和乙都是正常时间产出,丙从3点30分开始启动,但是数据出现故障,延迟了55分钟,最终5点25分完成,没有打破SLA。丁由于启动晚了,正好和其他高优任务挤在一起,导致抢不到资源,比平时2小时的时间延迟了10分钟,所以是7点35分产出,正好打破了承诺的SLA。丁实际6点30分完成,对外承诺是7点30分。丁说,那我按7点30分启动算,任务需要2个小时,预留buffer一小时,可以承诺10点30完成。丙说,那我按5点30分启动算,任务需要个小时,预留buffer一小时,可以承诺7点30分完成。原创 2024-01-08 22:37:28 · 741 阅读 · 0 评论 -
离线计算和存储成本的基本概念和优化技巧
CU是计算单元(computer unit)的简称,离线计算1 CU=(1 vcores(虚拟cpu核心=0.64物理cpu核心),2.25G内存)。CU是一个状态值,代表某一时刻申请或分配的资源量,对于提交到yarn上的一个任务,每分钟会做一次采样,记录采样时刻资源的使用量并用采样值代表这一分钟该任务使用的资源量。原创 2023-09-29 15:28:01 · 292 阅读 · 0 评论 -
数仓设计中的存算分离
0.灵魂拷问数仓同学每天都在做表,但有没有想过一个问题,计算过程往往是不能节省的,但你是因为什么把某个计算结果落一张表,而某些计算结果不落表呢(只是中间过程),是因为“感觉应该落一张吗?1.云计算中的存算分离存算分离这个概念一开始是出自大数据和云计算,随着云原生的发展被提及的原来越多。早期在大数据和云计算环境中,存储服务和计算服务在集群中是混合部署的(存算耦合架构)。这样设计的原因也很简单,计算存储放一块可以避免很大的网络IO开销。原创 2023-09-17 17:13:11 · 161 阅读 · 1 评论 -
【基本功】视图在数仓中的作用
反向依赖的存在对下游很痛,对推下游的人也很痛,所以在架构设计中的一些场景应该尽量避免。其实不使用视图也有其他的方案可以既分发又节省存储,比如表中有分发的字段,根据字段的不同值分发给不同的垂直业务,权限控制可以使用河图的行级权限管理。这种情况下使用视图,既可以完成标准化的工作,还可以很好的节省存储空间,同时也能提升任务执行的速度,是一种比较好的方法。由于base层的建模一般还是3NF建模,而业务系统一般也是标准3NF建模,很多时候base层的表只做了标准化的工作(甚至连标准化都没有)。可以应用在以下场景中。原创 2023-09-17 17:05:59 · 238 阅读 · 0 评论 -
【基本功】hive表的分区字段设计
这种情况一般是新手可能会发生,在创建数据表的分区字段时,选择了一个可变的字段,每天这个字段的值发生变化则需要重新计算这条数据并归属新的分区。这种情况一般发生在海量数据下,一个表的分区字段可能无法把数据均匀的散列,这样会导致有的分区下数据量大,有的分区下数据量小。然而分区字段设计的不合理,也会引起一些危害,常见的危害有分区太多引起的小文件类问题和分区不合理引起的计算开销大的问题。另一方面,一个表有多个分区,可以有多个任务同时写入不同的分区,开发上可以逻辑解耦,计算上可以加速执行。原创 2023-05-04 20:03:24 · 1332 阅读 · 0 评论 -
【基本功】数仓为什么要分层
在此之前我们都是默认讨论进行逻辑的操作,如果对于任务2的结果进行持久化,以后基于任务2有多个下游逻辑都不用从逻辑1开始计算,一次计算多次使用,节省了计算资源。因此很自然的就会想到,把一整段逻辑拆分成多个小逻辑,并把几个相近的逻辑组合成一个任务,这样就把大任务拆分成了多个小任务。很显然,所有的目标数据集都是由最原始的数据源经过一次性的加工产生,没有中间过程,就是不分层的状态。明确职责,明确开发的先后顺序,让不同的开发人员开发思路更加统一,以便不同的人员可以更好的协作,真正出现问题也更好的定位到哪一层。原创 2023-04-24 18:31:04 · 197 阅读 · 0 评论