大数据笔记 1--hadoop中的hdfs写数据流程详解

大数据笔记 1--hadoop中的hdfs写数据流程详解_第1张图片
上图是一个简版的流程图,图画的不标准,但能说明问题就OK,下面是根据上图描述的写数据流程,如有不对的地方请指教。
注:以下简化名称所对应的全称:
NN == NameNode;
IO == hdfsFileoutputStream;
DN == DataNode;
DN1 == DataNode1;
DN2 == DataNode2;
DN3 == DataNode3;

详细流程
1、当需要向HDFS中写数据时,客户端向NN发起写数据请求并附带文件的信息及相应的写入地址如:hdfs://input/XX.txt ;

2、NN需要判断传过来的地址的合法性,如果集群正常且地址合法,NN会向客户端发送应答指令,允许客户端向HDFS中写入数据;

3、当客户端收到指令后,会将要传输的文件按照严格的大小分成block块,并申请第一个block块的存储位置(hadoop1.x版本默认block块大小为64M,hadoop2.x版本默认block块大小为128M,且大小可调);

4、NN经过计算后将相应的DN节点返回给客户端。假设返回的是DN1、DN2、DN3;

5、客户端启动相应的IO开始分别向3个DN请求建立传输通道。

6、如果无意外,三个DN节点依次返回连接成功的应答。(注:只要节点没全挂,hdfs的数据写流程还是可以正常进行的,集群会在其他几个挂掉的节点恢复后将数据拷贝进去);

7、客户端开始传输数据,各个节点会先将传来的数据放入内存中,供后面的节点拷贝后再将数据写入磁盘中,因为内存间的拷贝是超级快的。

8、直到所有的数据都落入磁盘后,客户端会向NN返回一个写入成功的消息,NN将所有的相关数据保存到元数据中后HDFS的写数据流程就算结束了。

计划: 我会在最近这段时间中将大数据大部分框架及工作流程介绍一遍,有兴趣的可以关注一下,虽然说的可能不够严谨,但是我会努力的说的通俗一些。

你可能感兴趣的:(hdfs,hadoop)