HDFS集群分为两大角色:
NameNode DataNode (Secondary NameNode)
NameNode负责管理集群的元数据
DataNode负责管理用户的文件数据块
文件会按照固定的大小(blocksize)切成若干块后分布式存储在若干台datanode上
每一个文件块可以有多个副本,并存放在不同的datanode上
HDFS写数据流程
客户端向NameNode通信 发送上传文件申请,NameNode查看文件是否已经存在
文件不存在,返回给客户端响应,可以上传文件
客户端向NameNode请求第一个block上传在哪个DataNode上
NameNode响应可以上传在哪些DataNode上(就近,最远,本机架) -配置机架感知
副本数量由客户端配置
客户端向一个DataNode建立连接,并告诉还要传到哪个DataNode中,第一个DataNode收到后负责向第二个DataNode建立连接,全部建立后 响应建立完成消息
客户端将第一个block传给第一个DataNode,以packet为单位传给下一个DataNode
当第一个block传送完成,客户端请求NameNode第二个block位置
只要一个DataNode上传成功即可