当前位置: 首页 > 科技观察

HDFS的优缺点以及如何存储数据

时间:2023-03-12 04:24:15 科技观察

HDFS是Hadoop的分布式文件系统。它是一个高度容错的系统,适合运行在通用硬件上,也适合部署在便宜的机器上。HDFS可以提供??高吞吐量的数据访问,非常适合大规模数据集上的应用。HDFS有以下优点1.高容错数据自动保存多份。它通过添加副本来提高容错能力。一个副本丢失后可以自动恢复,这是HDFS内部机制实现的。2.适合批处理,是通过移动计算而不是移动数据。它将数据位置公开给计算框架。3、适用于大数据处理,处理数据达到GB、TB甚至PB级数据。它可以处理百万级以上的文件数量,这是相当大的。能够处理10K节点的规模。4、流式文件访问:一次写入,多次读取。文件一旦写入,就不能修改,只能追加。它确保数据的一致性。5.它可以建立在便宜的机器上。它通过多副本机制提高可靠性。它提供容错和恢复机制。例如,如果一个副本丢失,可以通过其他副本恢复。当然HDFS也有它的缺点,并不是适用于所有场合。1、低延迟的数据访问,比如毫秒级别的数据存储,是不行的,做不到。适用于高吞吐场景,即在一定时间内写入大量数据。但是在低延迟的情况下就不行了,比如毫秒级读取数据,所以做起来非常困难。2.小文件存储如果存储大量的小文件(这里的小文件是指小于HDFS系统块大小(默认64M)的文件),会占用大量的NameNode内存来存储文件,目录和块信息。这是不可取的,因为NameNode的内存总是有限的。小文件存储的寻道时间会超过读取时间,违背了HDFS的设计目标。3、文件的并发写入和随机修改一个文件只能进行一次写入,不允许多个线程同时写入。只支持数据追加(append),不支持随意修改文件。HDFS如何存储数据HDFS使用Master/Slave架构来存储数据。该架构主要由四部分组成,分别是HDFSClient、NameNode、DataNode、SecondaryNameNode。下面我们分别介绍这四个组件。1.Client:就是客户端。文件分割。当一个文件上传到HDFS时,Client将文件一个一个地分成块,然后存储。与NameNode交互获取文件的位置信息。与DataNode交互以读取或写入数据。Client提供了一些管理HDFS的命令,比如启动或者关闭HDFS。客户端可以通过一些命令访问HDFS。2.NameNode:是master,是supervisor和manager。管理HDFS命名空间管理数据块(Block)映射信息配置副本策略处理客户端读写请求。3.DataNode:从机。NameNode给出命令,DataNode执行实际操作。存储实际的数据块。对数据块执行读/写操作。4、SecondaryNameNode:不是NameNode的热备。当NameNode挂掉后,不能立即更换NameNode提供服务。辅助NameNode,分担它的工作量。定期合并fsimage和fsedits并推送到NameNode。在紧急情况下,它可以协助恢复NameNode。