写在前面

本文隶属于专栏《1000个问题搞定大数据技术体系》,该专栏为笔者原创,引用请注明来源,不足和错误之处请在评论区帮忙指出,谢谢!

本专栏目录结构和文献引用请见1000个问题搞定大数据技术体系

解答

HDFS的设计目标在 Hadoop 官网 有详细说明:

1.Hardware Failure
2.Streaming Data Access
3.Large Data Sets
4.Simple Coherency Model
5.“Moving Computation is Cheaper than Moving Data”
6.Portability Across Heterogeneous Hardware and Software Platforms

补充

Hardware Failure(硬件故障)

硬件故障是常态,而不是例外。

HDFS实例可能由数百台或数千台服务器机组成,每台服务器机存储文件系统的部分数据。

组件数量巨大,且每个组件都有非平凡的故障概率,这意味着HDFS的某些组件总是无法使用。

因此,检测故障并快速自动恢复故障是HDFS的核心架构目标

Streaming Data Access(流数据访问)

在HDFS上运行的应用程序需要对其数据集进行流式访问。

它们不是通常在通用文件系统上运行的通用应用程序。

HDFS更多是为批量处理而设计的,而不是用户交互使用。

重点是高数据访问量,而不是低数据访问的延迟。

POSIX的很多硬件需求对于HDFS分布式文件系统来说都是非必须的,这样能够获得更好的吞吐量。

POSIX表示可移植操作系统接口(Portable Operating System Interface of UNIX, POSIX)。 POSIX标准定义了操作系统为应用程序提供的接口标准。

Large Data Sets(海量数据集)

在HDFS上运行的应用程序具有较大的数据集。

HDFS中的典型文件是千兆字节到百万兆字节的大小。

因此,HDFS被调优以支持大文件。

它应该为单个集群中的数百个节点提供高聚合数据带宽和规模。

它应该支持单个实例中的数千万个文件。

Simple Coherency Model(简单一致性模型)

HDFS应用程序需要一个文件的一次写入多次读取访问模型。

文件一旦创建、写入和关闭,除了附加和截断外,无需更改。支持将内容附加到文件末尾,但不能任意点更新。

这一假设简化了数据一致性问题,并允许高吞吐量数据访问。MapReduce应用程序或网络爬虫应用程序非常适合此模型。

“Moving Computation is Cheaper than Moving Data”(“移动计算比移动数据更划算”)

如果应用程序请求的计算在它操作的数据附近执行,则效率要高得多。

当数据集的大小很大时,尤其如此。这最大限度地减少了网络拥塞,并提高了系统的整体吞吐量。

假设是,通常最好将计算迁移到更靠近数据的位置,而不是将数据转移到应用程序运行的位置。

HDFS为应用程序提供接口,使它们更接近数据的位置。

详情可以参考我的这篇博客——为什么说数据不动代码动?移动计算比移动数据更划算?

Portability Across Heterogeneous Hardware and Software Platforms(跨异构硬件和软件平台的便携性)

HDFS被设计成易于从一个平台移植到另一个平台。这有助于广泛采用HDFS作为大量应用程序的首选平台。

上一篇 下一篇