HDFS的核心思想和组件架构
1、HDFS核心思想
HDFS(Hadoop Distribute FIleSystem) 用来处理海量数据的存储,是hadoop的分布式文件系统。
(1)数据存储在集群中的某台机器上,为保证数据安全,需要将这个数据进行物理切块存储,每一块的大小是128M(可根据机器的性能进行修改),将每一块分别存储到三台不同的机器上(三个副本)。
(为什么是128M:根据统计,处理完一个文件的效率最优策略是1s,而普通计算机的io是100M左右,计算机的底层又是以二进制的形式存在的,所以默认128M符合大部分机器的处理情况)。
(复制过程中可能发生复制失败的情况,产生这种情况的原因:网络中断问题;文件过大需要进行切块处理)。
(3)扩容方便:增加一个节点(加一台机器)整个系统的存储容量就会增加。
(4)一台机器负责记录数据存储的位置信息,方便用户读取;namenode中存储元数据信息:数据切块和副本存储在那个机器的哪个位置。
(5)主节点为客户端提供虚拟访问目录,访问目录映射到对应的信息。
(6)客户端上传、下载数据的时候,向主节点发出请求,由主节点分配存储位置。
(7)数据存储和下载,请求主节点namenode。
(8)从节点启动向主节点注册,汇报自己的存储容量和数据情况,3s汇报一次,这种机制称为心跳机制。
2、HDFS组件架构
hdfs采用主从结构(也会有secondary namenode管理元数据信息以防主节点宕机)。
主节点负责维护管理集群中的所有从节点,对所有从节点进行容量监控、存储任务分配使负载均衡,对集群副本进行维护;从节点启动后向主节点注册,负责存储数据切块,处理主节点发来的客户端的请求。
(1)namenode:
①接收datanode的注册,接收datanode的心跳汇报,分配集群id;
②管理监控datanode的存储数据,副本复制,接收datanode的数据汇报,更新节点映射(元数据);
③维护集群中的节点数量,维护一个统一的集群版本;维护集群中的数据负载均衡和副本数量;
④记录管理数据存储信息(元数据),记录用户操作行为日志,记录用户存储的文件大小、切块、块数、每一块的副本数和存储在datanode上的位置;
⑤接收客户端的请求:put(上传)、get(下载)、ls(查询);给客户端提供一个虚拟的客户端访问目录;给datanode分配任务,或者向客户端请求数据元信息。
(2)datanode
①向datanode注册,汇报数据存储情况,定期向namenode汇报自己的存储数据(1h);
②接收namenode分配的任务,接收namenode的指令完成纠错任务,完成副本的复制和移动;
③真正存储数据的节点,将数据以物理切块的形式存储在本地指定磁盘目录中;
④真正处理客户端的读写请求;
⑤定期向namenode心跳请求一次(3s)。
(3)Secondary namenode
管理元数据