架构主要是有四部分组成,分别为:HDFS Client、NameNode、DataNode和SecondaryNameNode
(1)Client:就是客户端
a)文件切分。文件上传hdfs的时候,并不是把一个大文件原封不动的上传上去,而是由Client先将文件切分成一个一个的block,然后按照block进行存储
b)与NameNode交互,获取文件的位置信息,客户端想要传输数据,必须先与namenode通信,获取相应的datanode的地址
c)与DataNode交互,进行读取数据或者写入数据,datanode是实际负责存储文件的
d)Cient提供一些命令来管理HDFS,比如启动或者关闭HDFS
e)Client可以通过一些命令来访问HDFS
(2)NameNode:就是Master,就是一个管理者
a)管理HDFS的名称空间:namespace
b)管理数据块(Block)的映射信息
c)配置副本策略(默认)3
d) 处理客户端的读写请求
(3)DataNode:实际存储数据的
a)存储实际的数据块
b)执行数据块的读/写操作
(4)SecondaryNameNode:并非NameNode的热备。所谓热备是指,当namenode挂掉之后,secondarynamenode马上就承担namenode的任务。而实际上,当namenode挂掉之后,它并不能马上替换namenode并且提供服务
a)辅助NameNode,分担其工作量
b)定期合并fsimage和Edits,并推送给NmaeNode
c)在紧急的情况下,可以辅助恢复NmaeNode
HDFS的块大小:hdfs中文件在物理上是分块存储的(block),块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.xx的版本中是128M,在老版本中是64M