饿了么大数据开发凉经

news2024/11/19 5:49:01

1 一个mapreduce进程会启动多少map进程多少reduce进程*

1)map数量由处理的数据分成的block数量决定default_num = total_size / split_size;
2)reduce数量为job.setNumReduceTasks(x)中x 的大小。不设置的话默认为 1。

2 讲下shuffle的过程

shuffle分为map端和reduce端的工作。

MapTask工作机制

(1)Read阶段:Map Task通过用户编写的RecordReader,从输入InputSplit中解析出一个个key/value。
(2)Map阶段:该节点主要是将解析出的key/value交给用户编写map()函数处理,并产生一系列新的key/value。
(3)Collect收集阶段:在用户编写map()函数中,当数据处理完成后,一般会调用OutputCollector.collect()输出结果。在该函数内部,它会将生成的key/value分区(调用Partitioner),并写入一个环形内存缓冲区中。
(4)Spill阶段:即“溢写”,当环形缓冲区满后,MapReduce会将数据写到本地磁盘上,生成一个临时文件。需要注意的是,将数据写入本地磁盘之前,先要对数据进行一次本地排序,并在必要时对数据进行合并、压缩等操作。(5)Combine阶段:当所有数据处理完成后,MapTask对所有临时文件进行一次合并,以确保最终只会生成一个数据文件。

ReduceTask工作机制

(1)Copy阶段:ReduceTask从各个MapTask上远程拷贝一片数据,并针对某一片数据,如果其大小超过一定阈值,则写到磁盘上,否则直接放到内存中。
(2)Merge阶段:在远程拷贝数据的同时,ReduceTask启动了两个后台线程对内存和磁盘上的文件进行合并,以防止内存使用过多或磁盘上文件过多。
(3)Sort阶段:按照MapReduce语义,用户编写reduce()函数输入数据是按key进行聚集的一组数据。为了将key相同的数据聚在一起,Hadoop采用了基于排序的策略。由于各个MapTask已经实现对自己的处理结果进行了局部排序,因此,ReduceTask只需对所有数据进行一次归并排序即可。(4)Reduce阶段:reduce()函数将计算结果写到HDFS上。

3 常见的数据倾斜情况以及解决方案

  • 空值引发的数据倾斜
    解决方案:
    第一种:可以直接不让null值参与join操作,即不让null值有shuffle第二种:因为null值参与shuffle时的hash结果是一样的,那么我们可以给null值随机赋值,这样它们的hash结果就不一样,就会进到不同的reduce中
  • 不同数据类型引发的数据倾斜
    解决方案:
    如果key字段既有string类型也有int类型,默认的hash就都会按int类型来分配,那我们直接把int类型都转为string就好了,这样key字段都为string,hash时就按照string类型分配了
  • 不可拆分大文件引发的数据倾斜
    解决方案:
    这种数据倾斜问题没有什么好的解决方案,只能将使用GZIP压缩等不支持文件分割的文件转为bzip和zip等支持文件分割的压缩方式。
    所以,我们在对文件进行压缩时,为避免因不可拆分大文件而引发数据读取的倾斜,在数据压缩的时候可以采用bzip2和Zip等支持文件分割的压缩算法。
  • 数据膨胀引发的数据倾斜
    解决方案:
    在Hive中可以通过参数 hive.new.job.grouping.set.cardinality 配置的方式自动控制作业的拆解,该参数默认值是30。表示针对grouping sets/rollups/cubes这类多维聚合的操作,如果最后拆解的键组合大于该值,会启用新的任务去处理大于该值之外的组合。如果在处理数据时,某个分组聚合的列有较大的倾斜,可以适当调小该值。
  • 表连接时引发的数据倾斜
    解决方案:
    通常做法是将倾斜的数据存到分布式缓存中,分发到各个Map任务所在节点。在Map阶段完成join操作,即MapJoin,这避免了 Shuffle,从而避免了数据倾斜。
  • 其他情况引发的数据倾斜
    解决方案:
    这类问题最直接的方式就是调整reduce所执行的内存大小。
    调整reduce的内存大小使用mapreduce.reduce.memory.mb这个配置。

4 HBase读写流程*

        HBase读写数据与操作流程https://zhuanlan.zhihu.com/p/373740211

5 星形模型的特点

  • 维度表只和事实表关联,维度表之间没有关联;
  • 每个维度表的主码为单列,且该主码放置在事实表中,作为两边连接的外码;
  • 以事实表为核心,维度表围绕核心呈星形分布。

6 常见事实表几种?特点?周期形快照事实表的特点?除了是数值形的还有什么?*

一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)-阿里云开发者社区一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)https://developer.aliyun.com/article/931862#:~:text=1%E3%80%81%E4%B8%89%E7%A7%8D%E4%BA%8B%E5%AE%9E%E8%A1%A8%E6%A6%82%E8%BF%B0%201%201.1%20%E4%BA%8B%E5%8A%A1%E4%BA%8B%E5%AE%9E%E8%A1%A8%20%E4%B9%9F%E7%A7%B0%E5%8E%9F%E5%AD%90%E4%BA%8B%E5%AE%9E%E8%A1%A8%EF%BC%8C%E6%8F%8F%E8%BF%B0%E4%B8%9A%E5%8A%A1%E8%BF%87%E7%A8%8B%EF%BC%8C%E8%B7%9F%E8%B8%AA%E6%8E%A7%E4%BB%B6%E6%88%96%E6%97%B6%E9%97%B4%E4%B8%8A%E6%9F%90%E7%82%B9%E7%9A%84%E5%BA%A6%E9%87%8F%E4%BA%8B%E4%BB%B6%EF%BC%8C%E4%BF%9D%E5%AD%98%E7%9A%84%E6%98%AF%E6%9C%80%E5%8E%9F%E5%AD%90%E7%9A%84%E6%95%B0%E6%8D%AE%EF%BC%9B%20%E4%B8%AA%E4%BA%BA%E7%90%86%E8%A7%A3%EF%BC%9A%E7%B1%BB%E4%BC%BC%E4%BA%8Emysql%20binlog%E6%97%A5%E5%BF%97%EF%BC%8C%E6%AF%8F%E4%B8%80%E6%AC%A1%E7%9B%B8%E5%85%B3%E7%9A%84%20change,%E4%B8%AA%E4%BA%BA%E7%90%86%E8%A7%A3%EF%BC%9A%E8%A6%81%E7%9C%8B%E6%95%B4%E4%B8%AA%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E7%9A%84%E5%A4%9A%E4%B8%AA%E4%B8%9A%E5%8A%A1%E8%BF%87%E7%A8%8B%EF%BC%8C%E6%AF%94%E5%A6%82%EF%BC%9A%E5%88%9B%E5%BB%BA%E8%AE%A2%E5%8D%95%20%E2%86%92%20%E4%B9%B0%E5%AE%B6%E4%BB%98%E6%AC%BE%20%E2%86%92%20%E5%8D%96%E5%AE%B6%E5%8F%91%E8%B4%A7%20%E2%86%92%20%E4%B9%B0%E5%AE%B6%E7%A1%AE%E8%AE%A4%E6%94%B6%E8%B4%A7%E3%80%82%20

7 主题域划分的思路*

按部门划分、按业务线划分、按业务系统划分、按业务过程划分。

8 数仓建模6连(细问项目)

  1. 有负责过具体某个域或者某个主题的开发吗?
  2. 一共化了几个主题域?挑一个讲一讲
  3. 做了哪个域的建设,负责了哪些业务过程,一致性纬度有哪些,建了哪些表?
  4. 描述下总线矩阵(一边是业务过程、一边是一致性维度)
  5. dwd是怎么建设?
  6. 用户下单有很多流水,是什么类型的事实表?有哪些维表?

        按照业务系统划分,先按系统划分一级主题域,再按系统各自的菜单(也就是子系统)划分二级主题域,例如主要的订票APP实际上有订票系统,还有积分系统,值机系统,抽奖活动系统等等。

        我来介绍下我做过的托运系统的主题域,其业务过程大致如下:创建订单(订单维度(订单id、流水号、订单号、下单时间)、客户维度(用户昵称、用户真实姓名、用户性别、用户身份证号、用户出生日期)、航班维度(起飞机场名称、起飞城市id、到达机场、名称、是否转机)、城市维度)->买家付款->客户值机(打印登机牌上的信息,有城市维度、客户维度、)->航班起飞->航班降落->用户服务。

        公共维度有城市维度(客户值机、航班起飞航班降落)、客户维度(创建订单、用户服务)、机长维度、乘务员维、机场维度、航班维度。

9 数据治理做了哪些工作?*

数据治理分为四个实施步骤:统筹规划→管理实施→稽核检查→资产运营,我主要参与了前两个步骤,在第一步统筹规划中,我的主要工作在盘点数据资产,其主要针对元数据,根据大数据之路的第12章,将元数据分成两类,技术性元数据和业务形元数据,然后针对业务形元数据梳理血缘图谱,并给元数据打标签。在第二步工作中,我主要通过计算统计量对数据质量做出评估,计算空值的比例,计算空值字段较多的比例,计算有效字段的中位数和众数(当空值达到一定比例时,认为该字段无效,遵循3西格玛准则,大于5%无效)

10 手撕SQL两道题

1.某一天的新用户。

窗口函数row_number()

2.连续7天登录的客户。*

先去重、再row_number()开窗、日期-rnk、最后group by id、rnk having count(*)>=7

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Python dxfgrabber+matplotlib】显示AutoCAD导出的.dxf格式文件

代码: import dxfgrabber,matplotlib import matplotlib.pyplot as plt from matplotlib.patches import Polygonmatplotlib.use(TkAgg)# 使用 dxfgrabber 库加载 DXF 文件 drawing dxfgrabber.readfile(files/Main board0.DXF)# 创建 Matplotlib 图形 fig, ax p…

【无线点对点网络时延分析和可视化】模拟无线点对点网络中的延迟以及物理层和数据链路层之间的相互作用(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

Stimulsoft Reports 2023Crack

Stimulsoft Reports 2023Crack Stimulsoft Reports.BLAZOR是一个跨平台的报告工具,用于集成应用程序,使用BLAZOR框架工作。我们的组件支持Blazor的所有主要功能。通过使用WebAssembly技术,它们既可以在.NET服务器端工作,也可以在…

Linux学习之firewallD

systemctl status firewalld.service查看一下firewalld服务的状态,发现状态是inactive (dead)。 systemctl start firewalld.service启动firewalld,systemctl status firewalld.service查看一下firewalld服务的状态,发现状态是active (runni…

贪心(一)

一、区间问题 1.1区间选点 #include<iostream> #include<algorithm>using namespace std;const int N 100010;int n; struct Range {int l,r;bool operator < (const Range &w)const{return r < w.r;} }range[N];int main() {scanf("%d",&a…

JVM元空间溢出的排除思路

背景&#xff1a; java的应用我们为了防止元空间的无限扩展&#xff0c;一般都会设置MaxMetaSpace参数&#xff0c;一般来说只要这个值是512M或者1G左右就足够了&#xff0c;不过今天遇到一个meta空间溢出问题&#xff0c;简单记录下排除的思路 meta元空间溢出 最开始的现象…

【Vue3.0 ——指令学习】

v-text 期望值是string v-html 期望值&#xff1a;string 注意&#xff1a;在你的站点上动态渲染任意的HTML是非常危险的&#xff0c;因为他很容易导致XSS攻击。请只对可信内容使用HTML差值&#xff0c;绝不要将用户提供的内容作为插值 scoped将不会作用于v-html&#xff0…

【悬挂绝缘子的串效模型】测量每个绝缘子盘之间的电压并测量串效研究(Simulink)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

解析错误:‘import‘和‘export‘可能只出现在顶层

1、import引入文件时&#xff0c;提示Parsing error: ‘import’ and ‘export’ may only appear at the top leveleslint 中文含义&#xff1a;解析错误:import和export可能只出现在顶层&#xff0c;如下提示&#xff1a; 2、下载包npm i babel/eslint-parser -D 在此配置中…

算法学习总结

算法总结 文章目录 算法总结搜索遍历dfs树的深度树的重心图的连通块划分 bfs双端队列bfsbfs图问题 迭代加深双向搜索A*IDA*Morris遍历Manacher 数论质数判断质数分解质因数埃氏筛法线性筛法 约数求N的正约数集合——试除法求1~N每个数的正约数集合——倍除法 欧拉函数快速幂快速…

2008-2020年全国各省绿色金融发展指数(含原始数据)

2008-2020年全国各省绿色金融发展指数&#xff08;含原始数据&#xff09; 1、时间&#xff1a;2008-2020年 2、范围&#xff1a;30个省市 不含西藏 3、来源&#xff1a;原始数据整理自csmar、eps、wind等数据库 4、原始数据指标&#xff1a; A股上市环保企业新增银行贷款…

kaggle注册不显示验证码

edge浏览器 1.点击浏览器右上角三个点 2.点击扩展 3.点击管理扩展 4.点击获取Microsoft Edge扩展&#xff0c;在左上角输入Head Editor 5.输入https://www.azurezeng.com/static/HE-GoogleRedirect.json 6.下载后&#xff0c;点保存 成功&#xff01;

spring框架,以及和spring框架相关的Java面试题和spring ioc的注入方式

目录 一.spring来源&#xff0c;以及介绍 1.spring诞生的背景 2.spring框架 介绍 3.spring框架在使用中的优点以及不足 3.1优点 3.2不足 3.3总结 4.为什么要使用spring 二.将spring框架部署在IDEA中 1.替换pom.xml 2.构建spring所需要的xml文件 三.spring的三种注入…

从针尖对麦芒,到丝滑入扣,记录那些BT需求

前言&#xff1a; 最近被一个“简单”的需求&#xff0c;搞的有点难受。需求其实很简单&#xff0c;就是记录某成品生产过程数据&#xff0c;然后进行展示&#xff0c;但因需求部门是管理部门。为了能获取足够多的参数来提高生产效率和研发进度。因此需要生产来统计收集对应生产…

文件IO编程 1 2

头文件包含路径 linux 操作系统分为两大空间&#xff1a;用户空间和内核空间 这样划分&#xff0c;是为了保护内核的核心组件&#xff0c;不被轻易访问和修改 系统调用&#xff1a;安全的访问内核空间 其核心是&#xff1a;函数API&#xff08;API&#xff1a;用户编程接口&…

Ogami Organic Store有机商店WordPress主题

Ogami Organic Store有机商店WordPress主题是一个整洁且响应迅速的 WooCommerce WordPress 主题&#xff0c;适用于任何类型的食品、蔬菜店、化妆品或类似网站&#xff0c;这些网站需要功能丰富且美观的在线展示以及优雅灵活的设计。 网址: Ogami Organic Store有机商店WordPr…

信息与通信工程面试准备——信号与系统|10:23

8月16日 23:21 目录 ​编辑 1. 调制的作用 2. 放大器与振荡器的作用和区别 工作原理 输出信号 应用 反馈方式 设计复杂度 装置性质 3. 信号与系统&#xff1a;三大变换之间的关系&#xff1f; 4. 无码间串扰的条件 5. 冲激函数的作用&#xff1f; 研究的意义&…

Java免费自学网站推荐来啦!

Java自学的难度因人而异&#xff0c;取决于个人的学习能力、学习方法和学习态度等因素。对于一些有编程经验或者具备良好的逻辑思维能力的人来说&#xff0c;自学Java可能会相对容易些。而对于零基础的初学者来说&#xff0c;可能需要更多的时间和精力来理解和掌握Java的概念和…

进制转换:二进制、八进制、十六进制、十进制之间的转换

对于基础薄弱的读者&#xff0c;本节的内容可能略显晦涩和枯燥&#xff0c;如果你觉得吃力&#xff0c;可以暂时跳过&#xff0c;基本不会影响后续章节的学习&#xff0c;等用到的时候再来阅读。 上节我们对二进制、八进制和十六进制进行了说明&#xff0c;本节重点讲解不同进制…

无痛VSCode+clangd+lldb+cmake配置C/C++开发环境

前言 在C/C开发中&#xff0c;如果使用vscode作为开发平台的话&#xff0c;相信大家都会安装C/C扩展&#xff0c;在remote到远程一个机器上开发时&#xff0c;C/C扩展提供的自动补全等功能总是慢一拍&#xff0c;这让我感觉很不舒服&#xff0c;时间就了就人忍不下去了&#x…