当我们对文件进行处理的时候,那么是如何进行分布式访问的呢?
如下图所示,当我们一个客户端想访问HDFS中的文件时候,HDFS会有一个写入的路径,这个在我们安装Hbase的时候,在配置文件中有配置。客户只会直接访问这个虚拟的路径,具体的数据读过程已被hadoop封装起来,所以,在代码实现的过程中,我们只需要告知这个虚拟路径即可。
封装里面的过程包含这些动作,首先,假如有一个512M的文件,它会被切分成(若干块)4块,分不到不同的主机上,这些主机就是我们安装时候的进程Datanode(datanode1,datanode2,datanode3…),并且会把数据放在hadoop默认的data目录下。
其次,当另外一个客户端想读这个文件时候,由于文件被切块了,是不会知道放在哪些机器上以及被分成了多少块,这个时候就有另外一个进程namenode来统管这些信息。因此,客户访问时候,先访问namenode,将信息返回给客户,然后获取到信息后去相应的datanode读取数据。此外,为了提高数据的可靠性和访问的吞吐量或者并发访问,每一个块都会在不同的datanode上存放副本。HDFS