大数据知识的学习是比较难的,那在CGFT考试中也是要学习这样的知识的,那你对读数据的过程知道多少了?今天小编给你说说哦!让你有个简单的了解!
(1)客户端通过FileSystem.open(打开文件,相应地,在HDFS文件系统中,DistributedFileSystem具体实现了 FileSystem,因此,调用open()方法后,DistributedFileSystem会创建输入流FSDatalnputStream,对于HDFS而言,具体的输入流就是DFSInputStream。
(2)在DFSInputStream的构造函数中,输入流通过ClientProtocal.getBlockLocations()远程调用名称节点,获得文件开始部分数据块的保存位置。对于该数据块,名称节点返回保存该数据块的所有数据节点的地址,同时,根据距离客户端的远近对数据节点进行排序;然后,DistributedFileSystem会利用DFSInputStream来实例化FSDataInputStream,返回给客户端,同时返回了数据块的数据节点地址。
(3)获得输入流FSDatalnputStream后,客户端调用read()函数开始读取数据。输入流根据前面的排序结果,选择距离客户端*近的数据节点建立连接并读取数据。
(4)数据从该数据节点读到客户端;当该数据块读取完毕时,FSDataInputStream关闭和该数据节点的连接。
(5)输入流通过getBlockLocations()方法查找下一个数据块(如果客户端缓存中已经包含了该数据块的位置信息,就不需要调用该方法)。
大数据技术原理与应用——概念、存储、处理、分析与应用
(6)找到该数据块的*数据节点,读取数据。
(7)当客户端读取完毕数据的时候,调用FSDatalnputStream的close()函数,关闭输入流。
需要注意的是,在读取数据的过程中,如果客户端与数据节点通信时出现错误,就会尝试接包含此数据块的下一个数据节点。
