Java接口:
1.URL接口读取数据
2.FIleSystem API读取数据:
public static FileSystem get(configuration conf) throws IOException;
public static FileSystem get(URI uri, Configuration conf) throws IOException;
3.FSDateInputStream:FileSystem的open方法返回的对象
文件读取:
1.客户端通过FileSystem的Open方法打开希望读取的文件
2.DistributedFileSystem通过RPC调用namenode返回存有该块复本的最近的datanode地址
3.DistributedFileSystem返回一个FSDataInputStream对象
4.客户端对这个输入流调用read()方法将数据从datanode传输到客户端
文件写入:
1.客户端通过DistributedFileSystem对象调用create()函数来创建文件
2.DistributedFileSystem通过RPC创建一个新文件
3.namenode通过检查确定该文件不存在,然后创建新文件记录一条记录
4.DistributedFileSystem返回一个FSDataOutputStream对象
5.FSDataOutputStream封装了一个DFSOutputStream,后者将数据分成一个个数据包,并写入内部队列data queue
6.DataStreamer处理数据队列,它的责任是根据datanode列表要求namenode分配合适的新块来存储数据备份