一些个人面试大数据方面面试官比较常问的基础问题,持续更新中。。。
1.MapReduce的运行流程
切片,Map,shuffle,reduce
2.HBASE中遇见空的字段如何处理
无影响就无所谓(空不占存储空间),有影响数字设为零,
3.Kafka效率高的原因
顺序写入
4.Spark和MapReduce的区别
2. MapReduce底层是java写的,spark是scala写的
5.Spark运行在yarn的两种模式
Client(Driver运行在客户端,频繁与集群上多个executor通信,回答之本地通信负载过高,但是所有的日志都存在于本地机器,适合做测试使用)
Cluster(Driver运行在任务节点上,和ApplicationMaster运行在一起)
Standlone模式下,application的注册(executor的申请)以及任务调度都是由driver来的。
spark on yarn模式下,application的注册(executor的申请)由AM进行,任务调度由Driver,是分离开来的
6.Kafka安全机制,如何保证数据读写的完整性(保证高可用)
Ack机制
0:不等待broker返回确认信息
1:等待topic中某个partition leader保存成功的状态反馈
-1:等待topic中某个partition所有副本(leader+follower)都保存成功的状态反馈
7.Flume能否同时往sparkSQL、HDFS、storm等中写入数据
可以,只要定义不同的sink就行了,还可以自定义
8.Spark shuffle的过程
9.各个节点中各个组件的进程名称(重点)
Hadoop
NameNode记录着每个文件中各个块所在的数据节点的位置信息(元数据),但是他并不持久化存储这些信息,因为这些信息会在系统启动时从数据节点重建,每个集群只有一个NameNode
2.DataNode(工作节点)
DataNode是文件系统的工作节点,他们根据客户端或者是NameNode的调度存储和检索数据,并且定期向NameNode发送他们所存储的块(block)的列表。每个节点都有一个DataNode
3.SecondaryNameNode(备用节点)
SecondaryNameNode是一个用来监控HDFS状态的辅助后台程序,定期保存HDFS元数据的快照。
4.ResourcesManager(资源管理)
ResourcesManager即资源管理,在YARN中,ResourcesManager负责及群众所有资源的统一管理和分配,他接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各个应用程序(实际是ApplicationManager)。
RM包括Scheduler(定时调度器)和ApplicationManager(应用管理器)。Schedular负责向应用程序分配资源,它不做监控以及应用程序的状态跟踪,并且不保证会重启应用程序本身或者硬件出错而执行失败的应用程序。ApplicationManager负责接受新的任务,协调并提供在ApplicationMaster容器失败时的重启功能.每个应用程序的AM负责项Scheduler申请资源,以及跟踪这些资源的使用情况和资源调度的监控
5.NodeManager
NodeManager是ResourcesManager在slave机器上的代理,负责容器管理,并监控他们的资源使用情况,一级箱ResourcesManager/Scheduler提供资源使用报告
Spark
1.Master
Master进程用来管理整个集群的资源,相当于Yarn中的ResourcesManager
2.Worker
Worker进程负责管理本节点的资源,定期向Master汇报,接收Master的命令,启动Executor,相当于yarn中的NodeManager
3.Client
客户端进程,负责提交作业到Master
4.Application
基于spark的用户程序,包含了driver程序和集群上的executor,整个集群的老大
5.Driver
Spark作业的主线程,负责作业代码的解析、生成Stage并调度Task到Executor上。在yarn-cluster模式中,ResourcesManager会选取一个NodeManager上运行ApplicationManager,该AM会同时运行Driver
6.ClusterManager
在集群上获取资源的外部服务(如standalone、yarn等)
7.Executor:在worker上为某个应用启动的一个进程,负责接收taskSet,运行任务,以及将数据存储到内存或者磁盘上,每个应用都有自己独立的executor
8.Task:被送到某个executor上的工作节点
9.Job:和spark的action相对应,包含很多任务的并行计算
10.Stage:一个job被拆分为多组任务,每组任务被称为stage
11.DAGScheduler:基于stage构建DAG,决定每个人物的最佳位置;记录那个RDD或stage需要物化;将taskset(一组task)传给底层调度其TaskScheduler;重新提交shuffle输出丢失的stage
12.TaskScheduler:提交taskset到集群运行并汇报结果;出现shuffle输出lost要报告fetch
13.sparkContext:整个应用的上下文,控制应用的生命周期
14.sparkConf:负责存储配置信息
Flume
在整个过程中,流动的是event,事务保证是在event级别
Hbase
Kafka
10.各个组件运行的作用
11.HDFS读写流程
写:
客户端会向NameNode发送请求上传文件,NameNode先检查此文件是否已经存在,如果存在就报错,不存在就会允许上传
读:
1.客户端与NameNode通信查询元数据,获取文件所在的DataNode服务器
2.连接目标DataNode,并发读取文件块,合并读取到的文件
3.DataNode向客户端发送,客户端接收后现存在本地缓存,在写入到文件