1、2、 客户端向NameNode发起创建文件的请求,在NameNode上创建一个文件名,并且返回一个输出流
3、客户端向输出流发起写入数据的请求
4、输出流向NameNode请求写数据,NameNode根据请求的数据的大小,给数据分块,并且返回指定数据块对应的DataNode
5、 6、客户端拿到了NameNode分配的数据块需要写到的DataNode信息后,客户端将数据写到对应的DataNode中,并且完成数据块的备份
7、如果每一个接收到了数据块的DataNode上的数据块写完或者备份完后,则向NameNode报告说数据块写完了,使得NameNode最终确定哪些数据块写在哪些DataNode上
8、 9、 客户端关闭输出流,并且告诉NameNode写数据结束
1、客户端构建一个DistributedFileSystem,然后打开HDFS文件的输入流
2、从NameNode中找到需要读取文件对应的数据块在哪些机器上
3、4、5、 从数据块所在的机器上读取相对应的数据块
6、读完数据后,关闭输入流