京东大数据开发高频面试题及答案【互联网回暖了!!!】
推荐阅读文章列表:大数据开发面试笔记V4.0 || 面试聊数仓第一季 || 小白大数据学习路线
一、前言
京东2024届校园招聘面向应届生开放8000+岗位!!!
冲起来,兄弟们,我帮大家整理好了大数据开发的高频面试题,希望对你有用!!!
二、高频面试题总结
1. clickhouse的写入和读取为什么快
写入:ClickHouse采用类LSM Tree的结构,数据写入后定期在后台Compaction,而且, ClickHouse在数据导入时全部是顺序写入,写入后数据段不可更改,在后台 compaction 时也是多个段 合并排序后写回磁盘。
读取:本质就是利用优秀的存储引擎来减少磁盘IO对性能的影响,比如mergeTree、ReplacingMergeTree等,同时ClickHouse在将数据写入磁盘前,会进行预排序,以保证数据在磁盘上是有序的,在实现范围查找时可以将随机读变成顺序读,从而有效提高IO效率。另外,压缩可以减少写入和读取的数据量,从而减少IO的时间
2. hbase中rowkey的设计原则是什么,如何解决热点现象
设计原则:
- 长度原则
- 散列原则
- 唯一原则
热点现象:预分区+rowkey设计
3. kafka的副本机制
Kafka有主题的概念,每个主题又分为若干个分区。副本的概念是在分区层级下定义的,每个分区配置有若干个副本
4. hdfs为什么是128M一块
首先解释为什么不能设置太大,也不能设置太小?
- 如果块设置过大,一方面,从磁盘传输数据的时间会明显大于寻址时间,导致程序在处理这块数据时,变得非常慢;另一方面,mapreduce中的map任务通常一次只处理一个块中的数据,如果块过大运行速度也会很慢。
- 如果块设置过小,一方面存放大量小文件会占用NameNode中大量内存来存储元数据,而NameNode的内存是有限的,不可取;另一方面文件块过小,寻址时间增大,导致程序一直在找block的开始位置。
再解释为什么设置为128m?
- HDFS中平均寻址时间大概为10ms;
- 经过前人的大量测试发现,寻址时间为传输时间的1%时,为最佳状态;所以最佳传输时间为10ms/0.01=1000ms=1s
- 目前磁盘的传输速率普遍为100MB/s;计算出最佳block大小:100MB/s x 1s = 100MB所以我们设定block大小为128MB
5. Hive的数据存储格式有哪些,优缺点
- TextFile行存储,优点:数据操作方便,直接使用put上传数据文件,并且可以直接使用cat 查看HDFS上的文件内容;缺点:直接存储文件,数据量级大,磁盘开销大。
- SequenceFile行存储,优点:可压缩、可分割,优化磁盘利用率和I/O;缺点:含有键值对的二进制文件,数据量级大,对于Hadoop生态系统之外的工具不适用,需要通过text文件转化加载。
- rcfile行列式存储,优点:可压缩、高效的列存取、查询效率较高;缺点:读取全量数据性能低(扫描的数据块多效率低 )。
- orcfile列式存储,优点:压缩快、快速列存取、效率比rcfile高,上层presto查询引擎和orc格式兼容性较好;缺点:查询引擎不支持 impala 只能用hive查询数据。
- parquet列存储,优点:支持多种查询引擎。
6. udf函数的分类
udf、udaf、udtf
7. MapReduce的执行过程
请阅读之前的文章
8. flink和spark的区别是什么
请阅读之前的文章
9. hbase的特点和底层,和mysql有什么区别
HBase主要包括region server和master,region server主要用于region的管理,而master主要用于管理region server,另外还有zookeeper和hdfs,zookeeper主要是用来保证master的高可用,hdfs提供存储服务。
- hbase是一个数据库,而hive一般用于构建数据仓库
- hbase可以看做是一个存储框架,而hive是一款分析框架
- hbase的查询延迟比较低,常用于在线实时的业务,而hive常用于离线的业务
10. flink有哪些算子
map、flatMap、filter、keyBy、reduce、union、split、connect等
11. flink的窗口函数
滚动窗口Tumbling Windows
滑动窗口Sliding Windows
会话窗口Session Windows
12. flink的精准一次性如何保证的
checkpoint算法
13. kafka是如何保证数据不丢失和不重复的,从生产者和消费者考虑
保证数据不丢失:
生产者端:producer发送数据到kafka的时候,当kafka接收到数据之后,需要向producer发送ack确认收到,如果producer接收到ack,才会进行下一轮的发送,否则重新发送数据....【大数据开发面试笔记V4.0含所有答案】
消费者端:消费者消费数据的时候会不断提交offset,就是消费数据的偏移量,以免挂了,下次可以从上次消费结束的位置继续消费....【大数据开发面试笔记V4.0含所有答案】
保证数据不重复:
问题:当我们把ack级别设置为-1之后,假设leader收到数据并且同步ISR队列之后,在返回ack之前leader挂掉了,那么producer端就会认为数据发送失败,再次重新发送,那么此时集群就会收到重复的数据,这样在生产环境中显然是有问题的【大数据开发面试笔记V4.0含所有答案】
14. 数据倾斜
请阅读之前的文章
15. zookeper的leader选举机制,常见的一些应用场景,举例说明
zookeeper刚启动的时候:投票过半数时,服务器id大的胜出
我举个例子吧,假设有3台服务器,服务器1先启动,此时只有它一台服务器启动了,没有任何服务器可以进行通信,因此处于Looking状态,紧接着服务器2启动,它就会和1进行通信,交换选举结果,此时id较大的2胜出,并且满足半数以上的服务器同意选举2,所以2就成为了leader,最后服务器3启动,虽然自己的id大一些,但是前面已经选出了leader,因此自己就成为了follower
#数据人的面试交流地##秋招的第一个offer,大家都拿到了吗##京东信息集散地#