记得看过一本书,里面是这么写的,软件开发中的二八原则,80%的时间运行的是正常流程,20%的时间是异常流程。而实际代码中,80%的代码是在处理异常逻辑,而正常流程只占20%。
由此可见,异常处理是很重要的一块内容。
本文就以原生的JAVA客户端为例,聊聊HDFS里写文件过程中的异常处理。
先来简单回顾下HDFS的写文件流程,如下图所示:
客户端向NN申请block,NN处理请求后需要将操作写入JN中。随后,客户端向DN建立连接发送数据,最后向NN同步block的信息。详细流程戳这里。
整个流程中,JN、NN、不同的DN出现异常,均可能导致写异常或失败。
【JN异常】
假如在客户端addBlock之前,JN就出现了异常,那么addBlock会失败,因此block会写失败。