【摘要】:NameNode 返回一个文件的部分或者全部文件块列表,列表中包含了每一个所需的文件块的具体位置,这些位置会按照与客户端的网络距离进行排序。
1.客户端向NameNode 发起RPC 请求读取文件。
2. NameNode 检查目标文件是否已存在,创建者是否有权限进行操作,成功则会为文件创建一个记录,否则会让客户端抛出异常。
NameNode 返回一个文件的部分或者全部文件块列表,列表中包含了每一个所需的文件块的具体位置,这些位置会按照与客户端的网络距离进行排序。
3.客户端总是尝试首先从最近的位置获取数据。如果尝试失败,客户端会根据排序的顺序,从下一个位置获取数据。
4.读取完当前文件块的数据后,关闭与当前DataNode 的连接,并为读取下一个文件块寻找最佳的DataNode。每读取完一个文件块都会进行数据校验,如果校验失败,客户端会通知NameNode 文件块有错,NameNode 对该文件块做标记,并在适当的时候创建一个新的副本。同时客户端会根据排序的顺序,从下一个拥有该文件块副本的DataNode 继续读。(www.daowen.com)
5.当读完列表的文件块后,且文件读取还没有结束,客户端会继续向NameNode获取下一批的文件块列表。
6.重复3~5 步骤,直至文件读取结束。
HDFS 文件读逻辑如图3-4 所示:
图3-4 HDFS 文件读过程
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。
有关大数据技术及应用探究的文章