大数据常见面试题(一)

本文详细解析了大数据领域中的核心面试题,涵盖Hadoop的Hdfs、MapReduce、Yarn工作原理,Hbase的架构与RowKey设计,Hive的原理及数据倾斜处理,Kafka的高性能设计与消息幂等性,以及Spark的工作流程和RDD特性。内容深入浅出,是大数据面试的绝佳参考资料。
摘要由CSDN通过智能技术生成

一、当前集群环境

CDH 6.3.3
hadoop 3.0.0
hbase 2.1.0
hive 2.1.1
impala 3.2.0
spark 2.4.0
kafka 2.2.1
scala 2.11.12

二、hadoop

1.Hdfs的工作原理(读和写)★★★★★

在这里插入图片描述

读:client请求namenode ,获取目标文件的元数据信息,namenode校检无误后,返回给client,client根据元数据与就近的datanode建立连接,获取block 块,并将block 块合并后,返回给client。

写:client 向 namenode发出写 的请求,namenode 检查是否路径存在,权限等,通过后,将操作写入editLog,并返回一个节点列表,给client,client根据元数据与列表中就近的DataNode进行连接,并将data与返回的节点列表一并发送给它,此后,client就与所有的DataNode节点建立 piepline管道,一个DataNode写完后会传给下一个DataNode,每个DataNode写完一个 block 后,会返回确认信息给namenode。同时进行下一个 block的写入,直到全部写入完成。

2.MapReduce的原理 ★★★★★

在这里插入图片描述

MR把拿到的 split 分配给相应的 task,每个task处理对应的split,split 以line的方式读取每一行数据,将这些数据加载到一个环形缓冲区中,当环形缓冲区达到 80%的时候,会将这些数据溢写到磁盘中,同时按照 k-v的方式进行分区,(默认采用hashpartition),同时在每个分区内进行排序,如果这时设置了setcombinerclass,则会对每个分区的数据进行combiner操作,还可以设置 output-compress,对数据进行压缩,最后merge,根据分区规则,将数据归并到同一个文件中,等待reduce端拉取,等到所有的maptask 任务结束后,会根据分区数量启动相应的数量的reduceTask,每个reducetask 从mapTask机器上拷贝相应分区的数据到本地的缓冲区,缓冲区不够就溢写到磁盘,待所有数据拷贝完毕后,进行归并排序,之后按照相同的key分组,最后调用 reduce() 方法进行聚合处理,生成的结果将以文件形式在hdfs中体现。

3.Yarn的工作流程 ★★★★★

在这里插入图片描述

1.client 提交一个任务到Yarn,包括用户程序、 相关文件、applicationMasrer程序、启动AM(applicationMaster)命令。

2.RM(Resource Manager)分配第一个 container,并与所在的 NM(nodeManager)进行 通信,要求NM在container中启动 AM。

3.AM向RM注册自己,这样用户可以通过 RM查看程序的运行状态等,然后它准备为程序的各个任务申请资源,并监控他们的 运行状态直到任务结束。

4.AM以轮询的方式通过RPC协议与RM通信,申请和领取资源。

5.AM领取到资源后,会向申请到的Container所在的NM进行通信,要求NM在container中启动任务。

6.任务启动。NM为要启动的任务配置好环境变量、jar包、二进制文件等,并将启动命令写在一个脚步中,通过改脚步运行任务。

7.NM与相应的AM保持RPC通信,汇报自身任务的运行进度与状态,以让AM在任务失败时,可以重启任务。

8.任务结束,AM向RM通信,要求注销和关闭自己。

4.各个组件的作用 ★★★

Spark Core是Spark的核心组件,主要负责任务调度、内存管理、错误恢复、与存储系统的交互等。以下是大数据常见面试题之Spark Core: 1. 什么是Spark Core? Spark Core是Spark的核心组件,它提供了分布式任务调度、内存管理、错误恢复、与存储系统的交互等功能。 2. Spark Core的作用是什么? Spark Core的作用是管理Spark应用程序的整个生命周期,包括任务调度、内存管理、错误恢复、与存储系统的交互等。 3. Spark Core的优点是什么? Spark Core的优点包括高效的内存管理、快速的任务调度、灵活的错误恢复、与多种存储系统的兼容性等。 4. Spark Core如何实现任务调度? Spark Core通过DAG(有向无环图)来实现任务调度,将任务分解成多个阶段,每个阶段包含多个任务,然后按照依赖关系依次执行。 5. Spark Core如何实现内存管理? Spark Core通过RDD(弹性分布式数据集)来实现内存管理,将数据分成多个分区,每个分区可以在不同的节点上进行计算,从而实现高效的内存管理。 6. Spark Core如何实现错误恢复? Spark Core通过RDD的容错机制来实现错误恢复,当某个节点出现故障时,Spark会自动将该节点上的任务重新分配到其他节点上执行。 7. Spark Core如何与存储系统交互? Spark Core通过支持多种存储系统的API来与存储系统交互,包括HDFS、S3、Cassandra等。同时,Spark还提供了自己的内存存储系统——Tachyon。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值