1. HDFS机架放置策略(三副本如何放置)
1)第一个副本放在上传文件的DataNode
2)第二个副本放在不同机架上的任意节点
3)第三副本放在与2)相同机架上的不同节点
2. MapReduce的Shuffle过程详解
Map端Shuffle操作:
1) 经过Map操作后,会得到多个key-value对,根据partition操作,由key-value对应的哈希值%reduce数量得到该key-value属于哪个partition,只是会标记每个key-value属于哪个partition(负载均衡,平均reduce的处理能力)
2) 内存缓冲区大小有限,如果内存中的key-value达到阈值,则溢写线程启动,将内存缓冲区中的数据临时写入磁盘,进行sort操作
3) 当磁盘中溢写文件过多时需要将多个溢写文件合并为一个文件,执行combiner过程,合并相同的key(可选操作)
Reduce端Shuffle操作:
1) Copy阶段:从不同Map拷贝相同Partition的key-value,至内存缓冲区中
2) Merge阶段:当内存缓冲区达到阈值时,也会启动溢写线程,溢写文件并执行Sort,最后合并溢写文件,有三种方式内存到内存;内存到磁盘;磁盘到磁盘,从不同的tasktracker拿数据
MapReduce的split大小:
计算split的大小,split的数量=block/split大小
Hadoop1.x与Hadoop2.x的区别:
1) 解决了NameNode单节点故障问题,采用HDFS HA策略即通过主备NameNode解决
2) 解决了内存受限问题,采用HDFS Federation策略,即允许水平扩展多个NameNode,每个NameNode仅保存一部分目录结构,但所有的NameNode共享全部的Data Node资源