文件模式
使用通配符匹配多个文件;无需列举每个文件和目录来指定输入,而是通过通配符来确定;此操作为通配(globbing)
hadoop为执行此方法提供了连个FileSystem方法;
public FileStatus[] golbStatus(Path pathPattern) throws IOException;
public FileStatus[] golbStatus(Path pathPattern ,PathFileter filter) throws IOException;
不使用通配符通配出来的文件,则用PathFilter对象;
删除文件则用delete方法;
数据流
文件读取
客户端通过调用FIleSystem对象的open()方法来打开希望读取的文件,对于hdfs来说,这个对象是分布式文件系统的一个实例,DistributedFileSystem通过使用RPC来调用namenode,以确定文件的起始位置;
对于每一个块,namenode返回存有该块副本的datanode地址,此外这些datanode根据他们和客户端的距离来排序,并保存相应数据块的一个副本时,该节点将会从本地datanode读取数据;
DistributedFIleSystem类返回一个FSDataInputStream对象给客户端并读取数据,该对象封装着一个DFSInputStream对象,来管理着datanode和namenode的I/O
然后调用read()方法,从六种调用读取datanode;
读取完之后关闭流
文件写入
客户端通过对DIstributedFIleSystem对象调用create()函数来新建文件;namenode执行各种检查确保这个文件是否可以建立;
检查通过则DIstributedFileSystem对象返回i一个FSDataOutputStream对象,由此客户端可以进行写操作,FSDataOutputStream对象中封装了一个DFoutPutstream对象负责处理datanode和namenode之间的通信;
写完关闭流
读取时考虑的是就近原则,读取离操作最近的节点;
写入时考虑负载均衡;