当前位置: 首页 / 技术干货 / 正文
大数据面试题整理

2020-09-28

大数据培训

  今天好程序员大数据培训老师给大家分享一篇关于大数据面试题整理的详细介绍,下面我们一起来看一下吧。

QQ截图20190505135426

  一、.hdfs写文件的步骤

  答案:

  (1)clientNameNode申请上传…/xxx.txt文件

  (2)NNclient响应可以上传文件

  (3)ClientNameNode申请DataNode

  (4)NNClient返回DN1,DN2,DN3

  (5)ClientDN1,DN2,DN3申请建立文件传输通道

  (6)DN3,DN2,DN1依次响应连接

  (7)ClientDN1上传一个blockDN1DN2,DN3冗余文件

  大数据面试题整理

  二、hdfs读取文件步骤

  答案:

  (1)clientNN请求下载…/xxx.txt文件

  (2)NNclient返回文件的元数据

  (3)ClientDN1请求访问读数据blk_1

  (4)DN1Client传输数据

  (5)ClientDN2请求访问读数据blk_2

  (6)DN2Client传输数据

  大数据面试题整理

  大数据面试题整理

  三、hadoopshuffle过程

  1.Map端的shuffle

  Map端会处理输入数据并产生中间结果,这个中间结果会写到本地磁盘,而不是HDFS。每个Map的输出会先写到内存缓冲区中,当写入的数据达到设定的阈值时,系统将会启动一个线程将缓冲区的数据写到磁盘,这个过程叫做spill

  在spill写入之前,会行二次排序,首先根据数据所属的partition进行排序,然后每个partition中的数据再按key来排序。partition的目是将记录划分到不同的Reducer上去,以期望能够达到负载均衡,以后的Reducer就会根据partition来读取自己对应的数据。接着运行combiner(如果设置了的话)combiner的本质也是一个Reducer,其目的是对将要写入到磁盘上的文件行一次处理,这样,写入到磁盘的数据量就会减少。zui后将数据写到本地磁盘产生spill文件(spill文件保存在{mapred.local.dir}指定的目录中,Map任务结束后就会被删除)

  zui后,每个Map任务可能产生多个spill文件,在每个Map任务完成前,会通过多路归并算法将这些spill文件归并成一个文件。至此,Mapshuffle过程就结束了。

  2.Reduce端的shuffle

  Reduce端的shuffle主要包括三个阶段,copysort(merge)reduce

  首先要将Map端产生的输出文件拷贝到Reduce端,但每个Reducer如何知道自己应该处理哪些数据呢?因为Map端进行partition的时候,实际上就相当于指定了每个Reducer要处理的数据(partition就对应了Reducer),所以Reducer在拷贝数据的时候只需拷贝与自己对应的partition中的数据即可。每个Reducer会处理一个或者多个partition,但需要先将自己对应的partition中的数据从每个Map的输出结果中拷贝过来。

  接下来就是sort阶段,也成为merge阶段,因为这个阶段的主要工作是执行了归并排序。从Map端拷贝到Reduce端的数据都是有序的,所以很适合归并排序。zui终在Reduce端生成一个较大的文件作为Reduce的输入。

  zui后就是Reduce过程了,在这个过程中产生了zui终的输出结果,并将其写到HDFS上。

  四、fsimageedit的区别?

  当NN,SN要进行数据同步时叫做checkpoint时就用到了fsimageeditfsimage是保存zui新的元数据的信息,当fsimage数据到一定的大小事会去生成一个新的文件来保存元数据的信息,这个新的文件就是editedit会回滚zui新的数据。

  五、简单说一下hadoopmap-reduce模型

  首先maptask会从本地文件系统读取数据,转换成key-value形式的键值对集合,使用的是hadoop内置的数据类型,如TextLongwritable等。

  将键值对集合输入mapper进行业务处理过程,将其转化成需要的key-value再输出。

  之后会进行一个partition分区操作,默认使用的是hashpartitioner,可以通过重写hashpartitionergetPartition方法来自定义分区规则。

  之后会对key进行sort排序,grouping分组操作将相同keyvalue合并分组输出,在这里可以使用自定义的数据类型,重写WritableComparatorComparator方法来自定义排序规则,重写RawComparatorcompara方法来自定义分组规则。

  之后进行一个combiner归约操作,就是一个本地的reduce预处理,以减小shufflereducer的工作量。

  Reducetask会用过网络将各个数据收集进行reduce处理,zui后将数据保存或者显示,结束整个job

  六、运行hadoop集群需要哪些守护进程?

  DataNode,NameNode,TaskTrackerJobTracker都是运行Hadoop集群需要的守护进程。

  七、hadoopTextInputFormat作用是什么,如何自定义实现?

  InputFormat会在map操作之前对数据进行两方面的预处理。

  1.getSplits,返回的是InputSplit数组,对数据进行Split分片,每片交给map操作一次。

  2.getRecordReader,返回的是RecordReader对象,对每个Split分片进行转换为key-value键值对格式传递给map常用的InputFormatTextInputFormat,使用的是LineRecordReader对每个分片进行键值对的转换,以行偏移量作为键,行内容作为值。

  自定义类继承InputFormat接口,重写createRecordReaderisSplitable方法在createRecordReader中可以自定义分隔符。

  八、hadoopspark都是并行计算,那么