当前位置: 首页 > 后端技术 > Java

hdfs学习(一)

时间:2023-04-01 22:19:13 Java

HDFS1、HDFS概述1.1简介HDFS(HadoopDistributedFileSystem),Hadoop分布式文件系统,用于解决海量数据的存储问题。核心组件:HDFS(分布式文件系统)YARN(计算资源调度系统)MAPREDUCE(分布式计算编程框架)1.2特点1)优点高容错:HDFS多副本分布式存储,当一个副本丢失时,可以自动恢复,所以HDFS的容错性很高,默认是3份。大数据处理:HDFS处理数据的规模甚至可以达到PB级,文件数甚至可以超过百万级。HDFS是为了适应一次写多次读的场景而设计的,不支持文件修改。2)缺点HDFS不擅长存储大量的小文件,因为NameNode的内存是有限的,但是存储大量的小文件会消耗大量的NameNode内存来存储文件目录和块信息。HDFS延迟高,不适合低延迟访问。HDFS不支持并发写入和文件修改1.3HDFS架构图1)NameNode(nn)是主管、管理器、Master节点,负责维护整个hdfs文件系统的目录树,以及对应的路径(文件)块块信息。(1)管理HDFS命名空间;(2)配置复制策略;(3)管理数据块(Block)映射信息;(4)处理客户端读写请求。2)DataNode是Slave。NameNode下发命令,DataNode执行实际操作,负责存储客户端发送过来的数据块,并执行数据块的读写操作。Datanode是HDFS集群的从节点。每个块可以在多个数据节点上存储多个副本。副本数也可以通过参数dfs.replication设置。HDFS存储文件是块存储(block),hadoop2.x版本默认大小为128M,旧版本为64M。这可以通过配置参数dfs.blocksize来调整。HDFS的块大小设置主要取决于磁盘传输速率3)SecondaryNameNode充当弟弟。(1)协助NameNode分担工作量,如定时合并Fsimage和Edits,推送给NameNode;(2)当NameNode挂了,可以辅助恢复NameNode,但是现在有HA,所以很少用到SecondaryNameNode。4)Client,顾名思义,就是客户端。(1)文件分割。客户端将文件一个一个的分块,然后上传到HDFS。(2)与NameNode交互,获取读写文件的位置信息;(3)与DataNode交互,读写数据;(4)Client提供一些管理HDFS的命令,比如NameNode格式化操作;(5)Client提供一些访问HDFS的命令,如HDFS的增删改查;5)Rack每个DataNode都是一个server,这些server放在一个rack中,组成一个Rack。一个Rack中的所有DataNode共享电源、网线和交换机。因此,每次发生故障时,整个Rack的DataNode都会很容易丢失数据。因此,一个块的所有备份不能放在同一个Rack中,需要分布到Rack上的不同存储中。