写:
- client向nameNode发送写请求,nameNode记录下block信息,返回可用的DataNode(文件管理员记录下将要存放的文件编号,并告知把什么文件放到哪个书架上。)
- DataNode的分配原则,默认存3份,2份需要不同机架,1份需要同机架不同节点。(文件需要做备份,默认3份,2份放到不同的书架上,1份放到同一个书架,但是不同层。)
- client把block打包成package,每个package大小为64K,开始传输到3个dataNode中。
- host2接收完client发来的第一个package,由host2发给host1,host1完了再发给host3。
- 等待全部的block发完,host2向client汇报收完了,host1,2,3向NameNode汇报收完了。
- client收到host2汇报收完后的信息,想nameNode发送写完了的信息。
说明了什么:
- 1M的文件,需要3M的存储空间,3M的网络流量
- NameNode和DataNode随时保持心跳HeartBeat
- 能接受的灾难为,挂掉一个节点,挂掉一个机架