详细见hadoop面试整理一
1.HDFS写文件
- 客户端将文件写入本地磁盘的文件中
- 当临时文件大小达到一个Block大小时,HDFS Client 通知 NameNode,申请写入文件
- NameNode 在HDFS的文件系统中创建一个文件,并把该 Block ID 和要写入的 DataNode 的列表返回给客户端
- 客户端收到这些消息后,将临时文件写入 DataNodes
1.客户端将文件内容写入第一个 DataNode(一般以 4kb 单位进行传输)。
2.第一个 DataNode 接收后,将数据写入本地磁盘,同时也传输给第二个 DataNode。
3.以此类推到最后一个 DataNode,数据在 DataNode 之间是通过 pipeline 的方式进行复制的。
4.后面的 DataNode 接受完数据后,都会发送一个确认给前一个 DataNode,最终第一个 DataNode 返回确认给客户端。
5.当客户端接收到整个 Block 的确认后,会向 NameNode 发送一个最终的确认信息。
6.如果写入某个 DataNode 失败,数据会继续写入其他的 DataNode。然后 NameNode 会找另一个好的 DataNode 继续复制,以保证冗余性。
7.每个Block 都会有一个校验码,并存放到独立的文件中,以便读的时候验证其完整性。