目录
1、rdd的5大特性:
2、Hive分桶和分区的区别:
3、Hive表动态分区和静态分区
4、一个Hive表,数据量很大,分布在集群的100个节点,现在需要定期取top100,如何设计/实现:
5、窗口函数
6、hive sql和spark sql底层执行流程?
6、Spark任务的执行流程
7、Spark和MapReduce
8、cache和persist的区别
9、什么是宽窄依赖
10、spark的shuffle和MR shuffle
1)shuffle的过程描述一下
hadoop shuffle:
spark shuffle:
2)MR的shuffle和Spark的shuffle之间的区别
11、增量合并具体是怎么实现的你了解吗?如果让你来实现的话你怎么写
12、flink和spark streaming有什么区别
13、spark streamiing相比flink有什么优点
14、udf和udaf
15、spark你常用的参数设置有哪些
16、Hive的order by和sort by什么区别,都有哪些应用场景
17、Hive的distribute by和group by有什么区别
18、Dataframe和RDD有什么区别
19、Flink的原理
20、数仓分层了解吗
21、数仓建模除了维度建模还有其他的吗
22、数仓的特性讲一下
23、你真的了解全量表,增量表及拉链表吗?
24、数据仓库中的维表和事实表
25、.数据倾斜有哪几种优化思路?
26、考虑一个100亿数据的表关联一个10亿数据的表,如何优化
27、HashMap的底层原理
28、去重都有哪些方式?
29、数据量特别大的情况下(例如10g、100g、1t)如何用mr实现全局排序?
30、flatmap算子的理解,flat原理,返回类型?(iterator)
31、hive的metastore的三种模式
32、hive join的类别(方式)?
33、对一组数据频繁插入删除,选哪种数据结构
34、MR中的map具体流程
35、MR的map阶段完成了几次排序?
36、海量数据处理 - 10亿个数中找出最大的10000个数(top K问题)
37、hdfs读写流程
38、hdfs的体系结构
39、一个datanode 宕机,怎么一个流程恢复
40、hadoop 的 namenode 宕机,怎么解决
41、namenode对元数据的管理
42、yarn资源调度流程
43、hadoop中combiner和partition的作用,分别举例什么情况要使用 combiner,什么情况不使用?
44、用mapreduce怎么处理数据倾斜问题?
45、Mapreduce 的 map 数量 和 reduce 数量是由什么决定的 ,怎么配置
46、MR运行流程解析
47、HDFS数据安全性如何保证
48、在通过客户端向hdfs中写数据的时候,如果某一台机器宕机了,会怎么处理
49、Hadoop优化有哪些方面
0)HDFS 小文件影响
1)数据输入小文件处理:
2)Map 阶段
3)Reduce 阶段
4)IO 传输
5)整体
50、列出正常工作的hadoop集群中hadoop都分别启动哪些进程以及他们的作用
51、Hadoop总job和Tasks之间的区别是什么?
52、Hadoop高可用HA模式
52、简要描述安装配置一个hadoop集群的步骤
53、yarn的三大调度策略
54、hadoop的shell命令用的多吗?,说出一些常用的
55、namenode的fsimage与editlog详解
56、left semi join和left join区别
57、hive内部表和外部表的区别,及使用场景
58、用hive创建表有几种方式
59、线上业务每天产生的业务日志(压缩后>=3G),每天需要加载到hive的log表中,将每天产生的业务日志在压缩之后load到hive的log表时,最好使用的压缩算法是哪个,并说明其原因
60、若在hive中建立分区仍不能优化查询效率,建表时如何优化
61、Hive 里边字段的分隔符用的什么?为什么用t?有遇到过字段里 边有t 的情况吗,怎么处理的?为什么不用 Hive 默认的分隔符,默认的分隔符是什么?
62、在hive的row_number中distribute by 和 partition by的区别
63、hive和传统数据库之间的区别
64、hive中导入数据的4种方式
65、创建rdd的几种方式
66、Spark中Partition的数量由什么决定
67、Spark中coalesce与repartition的区别
68、sortBy 和 sortByKey的区别,reduceByKey和groupBykey的区别
69、map和mapPartitions的区别
70、cache和checkPoint的比较
71、spark共享变量和累加器
72、当 Spark 涉及到数据库的操作时,如何减少 Spark 运行中的数据库连接数?
73、特别大的数据,怎么发送到excutor中?
74、Spark on Yarn作业执行流程?yarn-client和yarn-cluster有什么区别?
75、spark任务为什么会被yarn kill掉?
76、sql问题:连续活跃n天用户的获取
77、spark中reparation和coalesce的用法和区别
78、ClickHouse常用表引擎
79、Spark小文件合并
80、数据中台之OneData体系
81、维度建模和范式建模对比
算法:
其他
Spark之RDD的定义及五大特性 - |旧市拾荒| - 博客园
https://blog.csdn.net/u010003835/article/details/80911215
https://blog.csdn.net/sinat_40572875/article/details/128062279
https://hero78.blog.csdn.net/article/details/80382174
个人答案:先对100个节点的数据求top100,然后将数据导入1张表,再对该表求top100;
hive窗口函数必备宝典_dingchangxiu11的博客-CSDN博客_hive窗口函数
Hive开窗函数总结_Abysscarry的博客-CSDN博客_hive的开窗函数
HIVE源码(1):HQL 是如何转换为 MR 任务的 - 秋华 - 博客园
Spark SQL的底层执行流程_蓝色校服的岁月的博客-CSDN博客_sparksql的执行流程
一文读懂Spark SQL运行流程 - 知乎
Spark任务执行流程_wlk_328909605的博客-CSDN博客_spark执行任务的流程
Spark(五)Spark任务提交方式和执行流程 - Frankdeng - 博客园
spark集群的任务提交执行流程_bokzmm的博客-CSDN博客_spark执行流程
1)MapReduce和Spark的区别
mapreduce与spark的区别--内容详细_wyz0516071128的博客-CSDN博客
spark与mapreduce的区别 - db_record - 博客园
2)为什么Spark比MapReduce快
为什么Spark比MapReduce快?_数仓大山哥的博客-CSDN博客
为什么Spark运行比MapReduce快_寞逍遥的博客-CSDN博客_spark为什么快
为什么Spark比MapReduce快_大数据从入门到放弃的博客-CSDN博客
百度面试总结:spark比MapReduce快的原因是什么?(比较完整)_道法—自然的博客-CSDN博客_spark比mapreduce处理速度快的原因不包括哪一项
每次进步一点点——spark中cache和persist的区别_housir的专栏-CSDN博客
Spark 宽窄依赖 - Earendil - 博客园
Spark宽窄依赖详解_modefrog的博客-CSDN博客_spark宽窄依赖
https://blog.csdn.net/kaede1209/article/details/81953262
https://blog.csdn.net/shujuelin/article/details/83992061
https://blog.csdn.net/weixin_42868529/article/details/84622803
https://blog.csdn.net/quitozang/article/details/80904040
MapReduce Shuffle 和 Spark Shuffle 区别看这篇就够了_reduce
https://blog.csdn.net/wuwang1988/article/details/80131728
https://blog.csdn.net/m0_37803704/article/details/86174267
大数据量增量同步方案杂谈【面试+工作】
https://blog.csdn.net/xianpanjia4616/article/details/85076247
干货 | Spark Streaming 和 Flink 详细对比
https://blog.csdn.net/mojir/article/details/96033432
https://blog.csdn.net/xiaofengguojiangnan/article/details/80059703
set spark.sql.adaptive.enabled = true;
set spark.sql.adaptive.join.enabled = true;
set spark.sql.adaptive.skewedJoin.enabled = true; --自动处理 Join 时数据倾斜
set spark.sql.parser.quotedRegexColumnNames = false;
Spark开发常用参数 - XIAO的博客 - 博客园
Spark常用参数解释及建议值_淡淡的倔强的博客-CSDN博客_spark常用参数
Hive中Order by和Sort by的区别是什么?_春华秋实-CSDN博客
https://blog.csdn.net/qq_40795214/article/details/82190827
https://jthink.blog.csdn.net/article/details/38903775
Hive:distribute by与group by,order by与sort by , cluster by的区别_云舒s的博客-CSDN博客
RDD和DataFrame和DataSet三者间的区别_乌镇风云的博客-CSDN博客_rdd和dataframe有什么区别
https://blog.csdn.net/wo334499/article/details/51689549
https://blog.csdn.net/weixin_39793644/article/details/79050762
https://blog.csdn.net/weixin_39793644/article/details/79050762
https://blog.csdn.net/sxiaobei/article/details/80861070
https://blog.csdn.net/oTengYue/article/details/102689538
数仓分层_吗达拉的博客-CSDN博客_数仓分层及各层作用
数仓理论之关系建模与维度建模_ITBOY_ITBOX博客-CSDN博客_关系建模和维度建模区别
数据仓库具有四个主要特性_guanyi的博客-CSDN博客_数据仓库的四大特点
你真的了解全量表,增量表及拉链表吗?_我的祖传代码-CSDN博客
数据仓库之维度表和事实表_不言尘世-CSDN博客_维度表和事实表
https://segmentfault.com/a/1190000009166436
https://segmentfault.com/a/1190000021439076?utm_source=sf-similar-article
过滤、分桶
Work
HashMap 的底层原理 - holyqueen - 博客园
java提高篇(二三)-----HashMap - chenssy - 博客园
distinct、group by、row_number、hive的collect_set()
https://www.nowcoder.com/discuss/165412
数据量很大的排序问题 大量数据如何排序_pan_jinquan的博客-CSDN博客
https://www.nowcoder.com/discuss/165412
Spark2.3 RDD之flatMap源码解析_DPnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnice的博客-CSDN博客
https://www.nowcoder.com/discuss/165412
https://www.nowcoder.com/discuss/165412
Hive的三种Join方式 - Raymoc - 博客园
https://www.nowcoder.com/discuss/165412
堆---实现最小堆及堆的插入与删除_江城的博客-CSDN博客_堆插入
MapReduce 图解流程超详细解答(1)-【map阶段】 - 五三中 - 博客园
mapreduce过程发生多少次排序_Peanut的博客-CSDN博客_mapreduce有几次排序
https://blog.csdn.net/zyq522376829/article/details/47686867
hadoop hdfs 读写流程_lsp的博客-CSDN博客_hdfs读写流程
HDFS体系结构及常见功能_cp_Mark的博客-CSDN博客
Datanode宕机了后,如果是短暂的宕机,可以实现写好脚本监控,将它启动起来。如果是长时间宕机了,那么datanode上的数据应该已经被备份到其他机器了,那这台datanode就是一台新的datanode了,删除他的所有数据文件和状态文件,重新启动。
先分析宕机后的损失,宕机后直接导致client无法访问,内存中的元数据丢失,但是硬盘中的元数据应该还存在,如果只是节点挂了,重启即可,如果是机器挂了,重启机器后看节点是否能重启,不能重启就要找到原因修复了。但是最终的解决方案应该是在设计集群的初期就考虑到这个问题,做namenode的HA。
NameNode元数据管理机制_dlrb_beautiful的博客-CSDN博客_namenode元数据管理
Hadoop中NameNode元数据管理机制解读
NameNode管理元数据的机制_汤小萌的博客-CSDN博客
Yarn资源调度工作原理_sxiaobei的博客-CSDN博客_yarn资源调度
https://blog.csdn.net/yunpiao123456/article/details/51802986
MapReduce:Combiner,partition的作用_Rnan_prince的博客-CSDN博客
MapReduce: combiner_北京小辉-CSDN博客
哪些场景才能使用Combiner?-三伏磨
MapReduce如何解决数据倾斜问题_wyqwilliam的博客-CSDN博客_mapreduce数据倾斜
用mapreduce怎么处理数据倾斜问题_复姓独孤的博客-CSDN博客_mapreduce数据倾斜
Hive mapreduce的map与reduce个数由什么决定?_lihuazaizheli的博客-CSDN博客_hive map数量由什么决定
MR 运行原理_首席撩妹指导官的博客-CSDN博客_mr的原理
MapReduce的分区分组问题_mys_35088的博客-CSDN博客
存储在HDFS系统上的文件,会分割成128M大小的block存储在不同的节点上,block的副本数默认3份,也可配置成更多份;
第一个副本一般放置在与client(客户端)所在的同一节点上(若客户端无datanode,则随机放),第二个副本放置到与第一个副本同一机架的不同节点,第三个副本放到不同机架的datanode节点,当取用时遵循就近原则;
datanode已block为单位,每3s报告心跳状态,做10min内不报告心跳状态则namenode认为block已死掉,namonode会把其上面的数据备份到其他一个datanode节点上,保证数据的副本数量;
datanode会默认每小时把自己节点上的所有块状态信息报告给namenode;
采用safemode模式:datanode会周期性的报告block信息。Namenode会计算block的损坏率,当阀值<0.999f时系统会进入安全模式,HDFS只读不写。HDFS元数据采用secondaryname备份或者HA备份
在写入的时候不会重新重新分配datanode。如果写入时,一个datanode挂掉,会将已经写入的数据放置到queue的顶部,并将挂掉的datanode移出pipline,将数据写入到剩余的datanode,在写入结束后, namenode会收集datanode的信息,发现此文件的replication没有达到配置的要求(default=3),然后寻找一个datanode保存副本。
(1)影响 NameNode 的寿命,因为文件元数据存储在 NameNode 的内存中
(2)影响计算引擎的任务数量,比如每个小的文件都会生成一个 Map 任务
(1)合并小文件:对小文件进行归档(Har)、自定义 Inputformat 将小文件存储成SequenceFile 文件。
(2)采用 ConbinFileInputFormat 来作为输入,解决输入端大量小文件场景。
(3)对于大量小文件 Job,可以开启 JVM 重用。
(1)增大环形缓冲区大小。由 100m 扩大到 200m
(2)增大环形缓冲区溢写的比例。由 80%扩大到 90%
(3)减少对溢写文件的 merge 次数。(10 个文件,一次 20 个 merge)
(4)不影响实际业务的前提下,采用 Combiner 提前合并,减少 I/O。
(1)合理设置 Map 和 Reduce 数:两个都不能设置太少,也不能设置太多。太少,会导致 Task 等待,延长处理时间;太多,会导致 Map、Reduce 任务间竞争资源,造成处理超时等错误。
(2)设置 Map、Reduce 共存:调整 slowstart.completedmaps 参数,使 Map 运行到一定程度后,Reduce 也开始运行,减少 Reduce 的等待时间。
(3)规避使用 Reduce,因为 Reduce 在用于连接数据集的时候将会产生大量的网络消耗。
(4)增加每个 Reduce 去 Map 中拿数据的并行数
(5)集群性能可以的前提下,增大 Reduce 端存储数据内存的大小。
(1)采用数据压缩的方式,减少网络 IO 的的时间。安装 Snappy 和 LZOP 压缩编码器。
(2)使用 SequenceFile 二进制文件
(1)MapTask 默认内存大小为 1G,可以增加 MapTask 内存大小为 4-5g
(2)ReduceTask 默认内存大小为 1G,可以增加 ReduceTask 内存大小为 4-5g
(3)可以增加 MapTask 的 cpu 核数,增加 ReduceTask 的 CPU 核数
(4)增加每个 Container 的 CPU 核数和内存大小
(5)调整每个 Map Task 和 Reduce Task 最大重试次数
正常工作的Hadoop集群中Hadoop都分别需要启动哪些进程,它们的作用分别是什么?(详细)_走在大数据的小路上-CSDN博客
1)NameNode它是hadoop中的主服务器,管理文件系统名称空间和对集群中存储的文件的访问,保存有metadate。
2)SecondaryNameNode它不是namenode的冗余守护进程,而是提供周期检查点和清理任务。帮助NN合并editslog,减少NN启动时间。
3)DataNode它负责管理连接到节点的存储(一个集群中可以有多个节点)。每个存储数据的节点运行一个datanode守护进程。
4)ResourceManager(JobTracker)JobTracker负责调度DataNode上的工作。每个DataNode有一个TaskTracker,它们执行实际工作。
5)NodeManager(TaskTracker)执行任务
6)DFSZKFailoverController高可用时它负责监控NN的状态,并及时的把状态信息写入ZK。它通过一个独立线程周期性的调用NN上的一个特定接口来获取NN的健康状态。FC也有选择谁作为Active NN的权利,因为最多只有两个节点,目前选择策略还比较简单(先到先得,轮换)。
7)JournalNode 高可用情况下存放namenode的editlog文件.
Job是我们对一个完整的mapreduce程序的抽象封装
Task是job运行时,每一个处理阶段的具体实例,如map task,reduce task,maptask和reduce task都会有多个并发运行的实例
HDFS高可用原理:
Hadoop HA(High Available)通过同时配置两个处于Active/Passive模式的Namenode来解决上述问题,状态分别是Active和Standby. Standby Namenode作为热备份,从而允许在机器发生故障时能够快速进行故障转移,同时在日常维护的时候使用优雅的方式进行Namenode切换。Namenode只能配置一主一备,不能多于两个Namenode。
主Namenode处理所有的操作请求(读写),而Standby只是作为slave,维护尽可能同步的状态,使得故障时能够快速切换到Standby。为了使Standby Namenode与Active Namenode数据保持同步,两个Namenode都与一组Journal Node进行通信。当主Namenode进行任务的namespace操作时,都会确保持久会修改日志到Journal Node节点中。Standby Namenode持续监控这些edit,当监测到变化时,将这些修改同步到自己的namespace。
当进行故障转移时,Standby在成为Active Namenode之前,会确保自己已经读取了Journal Node中的所有edit日志,从而保持数据状态与故障发生前一致。
为了确保故障转移能够快速完成,Standby Namenode需要维护最新的Block位置信息,即每个Block副本存放在集群中的哪些节点上。为了达到这一点,Datanode同时配置主备两个Namenode,并同时发送Block报告和心跳到两台Namenode。
确保任何时刻只有一个Namenode处于Active状态非常重要,否则可能出现数据丢失或者数据损坏。当两台Namenode都认为自己的Active Namenode时,会同时尝试写入数据(不会再去检测和同步数据)。为了防止这种脑裂现象,Journal Nodes只允许一个Namenode写入数据,内部通过维护epoch数来控制,从而安全地进行故障转移。
Hadoop-HA模式(详解)_窃格拉瓦-CSDN博客
简单描述如何安装配置一个apache开源版hadoop,只描述即可,无需列出完整步骤,能列出步骤更好..._weixin_33750452的博客-CSDN博客
部署Hadoop集群的步骤_闪客-CSDN博客_hadoop集群启动验证实验部署流程
YARN三种调度器和配置策略_ThisIsNobody的博客-CSDN博客_yarn调度器配置
你了解yarn的调度策略吗?快来看一看吧_shyming's blog-CSDN博客
Hadoop常用shell命令_媛测-CSDN博客_hadoop shell命令
namenode的fsimage与editlog详解
hive 的 left semi join 讲解_HappyRocking的专栏-CSDN博客
Hive内部表和外部表的区别详解_Liu_Arvin的芝士小栈-CSDN博客_hive内部表和外部表的区别
hive-内部表外部表区别及各自使用场景_DCHAO的博客-CSDN博客_hive内部表和外部表的应用场景
https://blog.csdn.net/qq_36743482/article/details/78383964
hive部分:hive建表的三种方式(直接建表,查询建表,like建表)_wyqwilliam的博客-CSDN博客_hive查询建表
选择lzo,因为该压缩算法可切分,压缩率比较高,解压缩速度很快,非常适合日志
可以重新建表为分区分桶表
hive 默认的字段分隔符为 ascii 码的控制符001(^A),建表的时候用 fields terminated by '001'
遇到过字段里边有t 的情况,自定义 InputFormat,替换为其他分隔符再做后续处理
row_number over( partition by 分组的字段 order by 排序的字段) as rank(rank 可随意定义表示排序的标识);
row_number over( distribute by 分组的字段 sort by 排序的字段) as rank(rank 可随意定义表示排序的标识)
注意:
partition by 只能和order by 组合使用
distribute by 只能和 sort by 使用
大数据面试之hive和传统数据库之间的区别_shyming's blog-CSDN博客
Hive中数据的导入与导出的几种方式_哇哈哈水有点甜的博客-CSDN博客_hive导出数据有几种方式
RDD的几种创建方式_hellozhxy的博客-CSDN博客
RDD的三种创建方式_月正明的博客-CSDN博客
Spark 中 Partition,Task,core,Executor的个数决定因素和关系_mzqadl的博客-CSDN博客
Spark中repartition和coalesce的区别与使用场景解析_墨卿风竹的博客-CSDN博客
Spark groupByKey,reduceByKey,sortByKey算子的区别_helloxiaozhe的博客-CSDN博客_spark的groupbykey
Spark中map与mapPartitions的区别详解-附测试_wuyue的博客-CSDN博客深入理解Spark中的Cache和Checkpoint_undo_try的博客-CSDN博客_spark的cache和checkpoint
spark中的cache() persist() checkpoint()之间的区别_Rocky-CSDN博客
Spark系列(五)共享变量累加器_哆啦咪~fo-CSDN博客
大数据面试-Spark专题-002_BigData2018的博客-CSDN博客
spark中如何广播2GB以上的大数据集? - 知乎
spark中yarn-client和yarn-cluster区别_卡奥斯道的博客-CSDN博客
实战解决 spark executor 被yarn杀掉的问题_边逛边看边学习-CSDN博客
牛客SQL29:某宝店铺连续2天及以上购物的用户及其对应的天数(连续问题)_牧码文的博客-CSDN博客_sql 两天以上
spark中reparation和coalesce的用法和区别 - 灰信网(软件开发博客聚合)
https://blog.csdn.net/yjgithub/article/details/81028361
篇二|什么是ClickHouse的表引擎? - 大数据技术与数仓 - 博客园
spark sql合并小文件_sparksql合并小文件_weixin_39846612的博客-CSDN博客
Spark小文件合并_一直青蛙的博客-CSDN博客_spark合并小文件
数据中台之OneData体系_Lv_Hulk的博客-CSDN博客_onedata体系
维度建模和范式建模对比_六mo神剑的博客-CSDN博客_维度建模和范式建模区别
通俗易懂数仓建模:范式建模与维度建模_1024小神的博客-CSDN博客_范式建模
京东数仓分层相关_Cold丶kl的博客-CSDN博客_京东数据仓库分层
数仓架构实践2:京东四层模型架构 - 爱码网
1)给定一个长度为n的数组,求前k大的元素?
求有N个元素的数组中前k个最大的数?(N>=k)(python实现)_BRO_BMW的博客-CSDN博客
https://blog.csdn.net/zhou15755387780/article/details/81318105
2)有10G的数据,2G内存,取中位数。
文件中有10G个整数,乱序排列,要求找出中位数_黎明_新浪博客
10G个整数,乱序排列,要求找出中位数。内存限制为 2G。只写出思路即可_xc889078的专栏-CSDN博客
https://blog.csdn.net/u014350758/article/details/22858161
程序员编程艺术:第十章、如何给10^7个数据量的磁盘文件排序_结构之法 算法之道-CSDN博客
3)给你一个字符串(可能很长),字符串包含数字和字母,要求将字符串里的字母反转,但数字不动。
【必备算法】字符串(反转问题):LeetCode题 344. 反转字符串,541. 反转字符串 II,917. 仅仅反转字母_A minor-CSDN博客
【必备算法】字符串(反转问题):LeetCode题 151. 翻转字符串里的单词,557. 反转字符串中的单词 III_A minor-CSDN博客
4)一个整型数组a,一个数key,求数组a中所有相加等于key的子数组。(注:注意子集概念。可能有负数。)
c语言练习题:求一个有序数组中,两个值相加为key的数字,返回这两个数字的下标_Wweakness的博客-CSDN博客
5)两个有序队列合成一个有序队列。
力扣
力扣
栈和队列----合并两个有序的单链表 - Demrystv - 博客园
合并两个有序序列_whinah的专栏-CSDN博客
6)将一个二维数组Z字输出。
力扣
用java实现二维数组的“之”字形输出 - doAction - 博客园
7)判断一个整数是否是回文。
力扣
8)平衡二叉树不额外使用空间返回第三大的值。
力扣
平衡二叉树(AVL)图解与实现_小张的专栏-CSDN博客_平衡二叉树
9)所有排序算法
https://blog.csdn.net/m0_37962600/article/details/81475585
https://blog.csdn.net/hiudawn/article/details/80380572
1、spark汇总
Spark零碎知识点_ll谢安生的博客-CSDN博客
2、2020大数据面试题真题总结(附答案)
2020大数据面试题真题总结(附答案)_hive
3、大数据面经
大数据开发工程师精选面经汇总_校招实习社招_牛客网_牛客网
4、海量数据处理
海量数据面试题整理1.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是..._weixin_34392843的博客-CSDN博客