个人面试总结(大数据相关)

一些个人面试大数据方面面试官比较常问的基础问题,持续更新中。。。

 

1.MapReduce的运行流程

   切片,Map,shuffle,reduce

2.HBASE中遇见空的字段如何处理

   无影响就无所谓(空不占存储空间),有影响数字设为零,

3.Kafka效率高的原因

    顺序写入

4.Spark和MapReduce的区别

  1. 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的过程

  1. Hash Shuffle 优点:速度较快,因为无排序 缺点:会产生大量小文件
  2. Sort Shuffle 优点:排序,不会产生大量文件 缺点:速度会慢些
  3. TungstenSort Shuffle 优点: 无需反序列化,排序,文件数量不大                                                                                       

9.各个节点中各个组件的进程名称(重点)

Hadoop

  1. NameNode(管理节点)

        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

  1. Agent:是一个java进程,运行在日志收集节点,包括source、channel、sink组件
  2. Source:用于收集日志,可以处理各种格式的日志数据,包括:avro/thrigt/exec/jms/spooling/directory/netcat/sequence/generator/syslog/http/legacy/kafka/自定义,手机之后存放在channel中
  3. Channel:用于临时存储数据,可以放在memory、jdc、file、pseudo、kafka、自定义中,channel中的数据只有sink发送成功后才会被删除
  4. Sink:用于将数据发送到目的地,目的地包括HDFS、logger、avro、thrigt、ipc、file、null、hbase、solr、hive、http、自定义

 

在整个过程中,流动的是event,事务保证是在event级别

 

Hbase

  1. Client:包含访问hbase的接口并维护擦车来加快对hbase的访问
  2. Zookeeper:保证Master的唯一性,存储Region的寻址入口,实时监控RegionServer的上线和下线信息,并实时通知Master、存储Hbase的schema和table的元数据
  3. HMaster:为RegionServer分配region、负责RegionServer的负载均衡、发现失效的RegionServer并重新分配其上的的region
  4. HRegionServer:维护region并处理这些region的IO请求,负责切分在运行过程中变大的region

 

Kafka

  1. Producer:生产者
  2. Consumer:消费者
  3. Broker:kafka集群的server,负责处理消息读写请求,存储消息
  4. Topic:消息队列、分类
  5. Queue:里面有生产者消费者模型

10.各个组件运行的作用

 

11.HDFS读写流程

写:

客户端会向NameNode发送请求上传文件,NameNode先检查此文件是否已经存在,如果存在就报错,不存在就会允许上传

 

读:

1.客户端与NameNode通信查询元数据,获取文件所在的DataNode服务器

2.连接目标DataNode,并发读取文件块,合并读取到的文件

3.DataNode向客户端发送,客户端接收后现存在本地缓存,在写入到文件

 

你可能感兴趣的:(大数据)