1.1 Hadoop小文件弊端
Hadoop在处理大文件时效率非常高,但是处理大量小文件时,由于NameNode需要管理每个文件的元数据,会造成巨大的负担,导致系统性能下降。因此,在使用Hadoop时,应该尽量避免处理大量小文件。
1.2 DataNode挂掉如何处理?
如果DataNode挂掉,HDFS会自动将该节点上的数据块复制到其他节点上,保证数据的可靠性。同时,HDFS还会将该节点从可用节点列表中删除,并通知NameNode节点已失效。
1.3 NameNode挂掉如何处理?
如果NameNode挂掉,HDFS将无法访问存储在集群中的数据。为了防止数据的丢失,可以通过备份NameNode的方式保障系统的高可用性。当主NameNode挂掉时,备份节点会接管其工作,从而保证系统的正常运行。
1.4 HBase读写流程
HBase是一个基于Hadoop的分布式列存储系统,其读写流程如下:
写入数据:客户端先将数据发送给HMaster,HMaster将数据分发到各个RegionServer,RegionServer再将数据写入HDFS中。
读取数据:客户端向HMaster发起读请求,HMaster查询数据所在的RegionServer并将请求转发给该节点,RegionServer从HDFS中读取数据并返回给客户端。
1.5 MapReduce为什么一定要有Shuffle过程
Shuffle是MapReduce中非常重要的过程,其作用是将Map端输出的数据按照Key进行排序,然后将同一个Key的数据分发给Reduce节点进行聚合。Shuffle的作用是为了保证Reduce节点的输入数据有序且聚合后的数据尽可能均衡,从而提高MapReduce的性能。
1.6 MapReduce中的三次排序
在MapReduce中,Shuffle过程中会进行三次排序,分别是Map端的局部排序、Map端的合并排序以及Reduce端的全局排序。这三次排序都是为了保证Reduce节点的输入数据有序,从而提高MapReduce的性能。
1.7 MapReduce为什么不能产生过多小文件
由于Hadoop在处理小文件时性能较差,MapReduce在运行过程中会产生大量的临时文件,如果这些临时文件过多,会给Hadoop集群带来很大的负担。