HDSF的读写流程
HDFS写数据的流程
如图:
1.客户端通过Distributed模块向Namenode请求上传文件,Namenode呢?他回去检查这个文件是否存在,还有他的父目录是否存在。如果文件存在,那就到了第二步
2.Namenode返回响应说:可已上传文件。
3.客户端的Distributed模块收到信号后将要传的文件发给NameNode让Namenode来分配他到底存在哪个节点上
4.如图NameNode返回给客户端3个节点,等客户端收到这三个节点的位置之后呢就开始联系这三个哥们
5.客户端的FSDataOutputStream模块建立一个叫block的连接通道去请求第一个节点datanode1,这个节点再去叫他的好朋友datanode2,datanode2再去叫datanode3…将这个管道建立完成
6.三个datanode逐级应答客户端
7.这个时候客户端就可以开始向datanode1以packet为单位传第一个block,datanode1再将数据传给datanode2,2再给3以此类推
8.当这个block传输完成后,客户端会给namenode一个回应说传完了,这时就可以传第二个block了重复执行3-7步
(这是一个文件,一个block的大小是128M。如果文件别这个数字大的话,会传输两次或N次直到传完,如果小于128M的话就是一次)
HDSF读数据的流程
1.他还是通过客户端的这个哥们(Distributed FileSystem)向namenode发送请求,说他要下载文件,Namenode
会通过查找元数据,找到文件所在的Datanode地址
2.Namenode会就近原则的去寻找一个Datanode服务器,将Datanode服务器的地址给客户端
3.客户端就会根据Namenode传来的服务器地址去寻找这个Datanode服务器,请求读取数据
4.DataNode开始传输数据给客户端(从磁盘里面读取数据输入流,以packet为单位来做校验)。
5.客户端以packet为单位接收,先在本地缓存,然后写入目标文件