当前位置: > 财经>正文

HDFS的优缺点和缺陷 债券基金的优点和缺点有哪些呢

2023-09-05 09:49:31 互联网 未知 财经

HDFS的优缺点和缺陷

1、选择 HDFS 存储数据,是因为 HDFS 具有以下优点:

(1) 高容错性

数据自动保存多个副本。它通过增加副本的形式,提高容错性。

某一个副本丢失以后,它可以自动恢复,这是由 HDFS 内部机制实现的,我们不必关心。

(2) 适合批处理

它是通过移动计算而不是移动数据。

它会把数据位置暴露给计算框架。

(3) 适合大数据处理

数据规模:能够处理数据规模达到 GB、TB、甚至PB级别的数据。

文件规模:能够处理百万规模以上的文件数量,数量相当之大。

节点规模:能够处理10K节点的规模。

(4) 流式数据访问

一次写入,多次读取,不能修改,只能追加。

它能保证数据的一致性。

(5) 可构建在廉价机器上

它通过多副本机制,提高可靠性。

它提供了容错和恢复机制。比如某一个副本丢失,可以通过其它副本来恢复。

2、HDFS 缺点:

(1) 不适合低延时数据访问;

比如毫秒级的来存储数据,这是不行的,它做不到。

它适合高吞吐率的场景,就是在某一时间内写入大量的数据。但是它在低延时的情况 下是不行的,比如毫秒级以内读取数据,这样它是很难做到的。

3、改进策略

(2) 无法高效的对大量小文件进行存储

存储大量小文件的话,它会占用 NameNode大量的内存来存储文件、目录和块信息。这样是不可取的,因为NameNode的内存总是有限的。

小文件存储的寻道时间会超过读取时间,它违反了HDFS的设计目标。 改进策略

(3) 并发写入、文件随机修改

一个文件只能有一个写,不允许多个线程同时写。

仅支持数据 append(追加),不支持文件的随机修改。

HDFS缺陷

Apache Hadoop HDFS从出现到现在经过10多年的发展,已经到了非常成熟的状态,广泛应用于业界,解决海量文件的存储需求。但随着数据量的增长,以及对于数据使用方式的多样化 ,HDFS的架构局限性就逐渐被放大,NameNode在大规模场景很容易成为瓶颈:

•元数据的扩展性:NameNode是一个中央元数据服务节点,也是集群管理节点,文件系统的元数据以及块位置关系全部在内存中。NameNode对内存的要求非常高,需要定制大内存的机器,内存大小也限制了集群扩展性。京东的NameNode采用内存512GB的机器,字节跳动的NameNode采用内存1TB的机器。此外,NameNode的堆分配巨大,京东的NameNode需要360GB的堆大小,对GC的要求比较高,京东定制化的JDK11+G1GC在GC时性能良好,但是一般规模的公司不具备维护JDK能力,该方案不具备普遍性。字节跳动把NameNode修改成C++版本,这样分配、释放内存都由程序控制,也达到了不错的性能,该方案仍然不具普遍性,因为开发和维护C++版本的NameNode也需要不小规模的团队。

•块汇报风暴:HDFS块大小默认128M,启动几百PB数据量的集群时,NameNode需要接受所有块汇报才可以退出安全模式,因此启动时间会达数小时。当集群全量块汇报、下线节点、balance集群存储,也会对集群元数据服务的性能造成影响,这些根本原因都是DataNode需要把所有块汇报给NameNode。

•全局锁:NameNode 有一把FSNamesystem全局锁,每个元数据请求时都会加这把锁。虽然是读写分开的,且有部分流程对该锁的持有范围进行了优化,但依然大问题。同时FSNamesystem内部的FSDirectory(Inode树)还存在一把单独的锁,用来保护整棵树以及BlockMap的访问和修改。

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。