大数据开发(牛客)面试被问频率最高的几道面试题_数据开发(牛客)面试被问频率最高的几道面试题

本文详细分析了大数据面试中经常被问到的问题,涵盖Flume的架构,Kafka的高吞吐原理,HBase的rowkey设计原则,以及Spark数据倾斜的解决方案。还提到了其他如Scala实现的WordCount例子,旨在帮助程序员理解和提升大数据技术。
摘要由CSDN通过智能技术生成

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新大数据全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip204888 (备注大数据)
img

正文

问过的一些公司:

阿里x2,腾讯,字节,快手x2,流利说,创略科技,宇信科技,猿辅导,转转,bigo,多益,富途x2

Flume组成架构如下图

图片
Agent

Agent是一个JVM进程,它以事件的形式将数据从源头送至目的。

Agent主要由Source、Channel、Sink3个部分组成。

Source

Source是负责接收数据到Flume Agent的组件。

图片
Channel

Channel是位于Source和Sink之间的缓冲区。因此,Channel允许Source和Sink运作在不同的速率上。Channel是线程安全的,可以同时处理几个Source的写入操作和几个Sink的读取操作。

图片
Sink

Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。

图片
Kafka

Kafka是如何实现高吞吐的

可灵活回答:

1)Kafka为什么低延迟高吞吐?

2)Kafka高吞吐的原因

3)Kafka为什么高可用、高吞吐?

4)Kafka如何保证高吞吐量?

问过的一些公司:

蘑菇街x2,腾讯,美团x2,猿辅导,转转,小鹏汽车,京东,字节,网易

Kafka是分布式消息系统,需要处理海量的消息,Kafka的设计是把所有的消息都写入速度低容量大的硬盘,以此来换取更强的存储能力,但实际上,使用硬盘并没有带来过多的性能损失。

kafka主要使用了以下几个方式实现了超高的吞吐率。

1)顺序读写

kafka的消息是不断追加到文件中的,这个特性使kafka可以充分利用磁盘的顺序读写性能,顺序读写不需要硬盘磁头的寻道时间,只需很少的扇区旋转时间,所以速度远快于随机读写。

Kafka官方给出了测试数据(Raid-5,7200rpm):

顺序 I/O: 600MB/s

随机 I/O: 100KB/s

2)零拷贝

先简单了解下文件系统的操作流程,例如一个程序要把文件内容发送到网络。

这个程序是工作在用户空间,文件和网络socket属于硬件资源,两者之间有一个内核空间。

在操作系统内部,整个过程为:

图片
在 Linux kernel2.2 之后出现了一种叫做"零拷贝(zero-copy)"系统调用机制,就是跳过“用 户缓冲区”的拷贝,建立一个磁盘空间和内存的直接映射,数据不再复制到“用户态缓冲区” 。

系统上下文切换减少为 2 次,可以提升一倍的性能。

图片
3)文件分段

kafka的队列topic被分为了多个区partition,每个partition又分为多个段segment,所以一个队列中的消息实际上是保存在N多个片段文件中

图片
通过分段的方式,每次文件操作都是对一个小文件的操作,非常轻便,同时也增加了并 行处理能力

4)批量发送

Kafka允许进行批量发送消息,先将消息缓存在内存中,然后一次请求批量发送出去,比如可以指定缓存的消息达到某个量的时候就发出去,或者缓存了固定的时间后就发送出去 ,如100 条消息就发送,或者每5秒发送一次,这种策略将大大减少服务端的I/O次数

5)数据压缩

Kafka 还支持对消息集合进行压缩,Producer可以通过GZIP或Snappy格式对消息集合进行压缩,压缩的好处就是减少传输的数据量,减轻对网络传输的压力,Producer压缩之后,在 Consumer需进行解压,虽然增加了CPU的工作,但在对大数据处理上,瓶颈在网络上而不是 CPU,所以这个成本很值得。

HBase

HBase的rowkey设计原则

可灵活回答:

1)HBase如何设计rowkey?

2)你HBase的rowkey为什么这么设计?有什么优缺点?

3&

  • 10
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值