背景知识:
1、HDFS采用多副本方式对数据进行冗余存储,即一个数块的多个副本分布到不同的数据节点上。
2、集群内部发起写操作请求,把第一个副本放置在发起写操作请求的数据节点上,实现就近写入数据。
如果来自集群外部写操作请求,命名空间从集群中挑选一台磁盘不太满、CPU不太忙的数据节点,作为第一个副本存放地
3、第二个副本放置在与第一个副本不同机架上的数据节点上
4、第三个副本放置在与第一个副本相同机架上的其他节点
5、如果还有多个副本,继续从集群中随机选择数据节点进行存放 。
数据复制技术:
1、当客户端要往HDFS中写入一个文件时,该文件首先写入本地,并切分成若干文件块,每个文件块的大小由HDFS的设定值来决定。
2、每个数据块向名称节点发起写请求,名称节点会根据集群中数据节点的使用情况,选择一个数据节点列表返回给客户端。
3、第一个数据节点接受到4KB数据的时候,写入本地,并且向列表中的第二个数据节点发起连接请求,把自己已经接收到的数据和列表传送给第二个数据节点;
4、第二个数据节点接受到数据,写入本地,并且向列表中的第三个数据节点发起连接请求,以此类推,列表中的多个数据节点形成一条数据复制的流水线。
5、列表中最后一个数据节点写完,会沿着列表逆序发送数据写完毕信号。