千锋教育大数据Hadoop全新升级版入门教程,零基础从安装搭建到集群调优

读:
客户端发出请求hdfs dfs-put/etc/profile/af/data
namenode查看维护的目录结构,检查/af/data是否存在,如不存在直接报错"no such
file or directory",如存在返回给客户端同意上传文件请求,将操作写入日志文件
客户端请求上传第一个块,询问namenode块的存储位置
namenode查看自己的datanode池,返回给客户端一个datanode列表
客户端发出请求建立pipeline
客户端先把文件写入缓存,达到一个块的大小时,会在客户端和第一个datanode建立连
接开始流式的传输数据,这个datanode会一小部分一小部分(4K)的接收数据然后写入本
地仓库,同时会把这些数据传输到第二个datanode,第二个datanode也同样一小部分一小
部分的接收数据并写入本地仓库,同时传输给第三个datanode.(在流式复制时,逐级传输
和响应采用响应队列来等待传输结果。队列响应完成后返回给客户端)
第一个数据块传输完成后会使用同样的方式传输下面的数据块直到整个文件上传完成。
整个文件完成,namenode更新内存元数据
写:
客户端向namenode发起RPC调用,请求读取文件数据。
namenode检查文件是否存在,如果存在则获取文件的元信息(blockid以及对应的
datanode列表)。
客户端收到元信息后选取一个网络距离最近的datanode,依次请求读取每个数据块。
客户端首先要校检文件是否损坏,如果损坏,客户端会选取另外的datanode请求。
datanode与客户端建立socket连接,传输对应的数据块,客户端收到数据缓存到本地
之后写入文件。
依次传输剩下的数据块,直到整个文件合并完成。