Coursera 笔记

Module 02 · Introduction to the Hadoop Ecosystem

HDFSHadoop 分布式文件系统

Coursera ↗

欢迎观看《Hadoop分布式文件系统(HDFS)》视频!通过观看此视频,您将能够:

  • 解释 Hadoop 分布式文件系统及其重要概念
  • 识别 HDFS 的关键特性
  • 描述 HDFS 的架构

什么是 HDFS? 

HDFS(Hadoop Distributed File System)是 Hadoop 的存储层。分布式文件系统允许文件存储在多个文件服务器上,并支持程序员从任何计算机或网络访问和存储文件。HDFS 通过将文件拆分为块,并在不同的机器上创建副本来存储数据。

HDFS 的工作原理

  • HDFS 被设计用来无缝地访问 流数据,即在传输数据时提供恒定的比特率,而非波动性传输。
  • HDFS 使用命令行接口与 Hadoop 进行交互。

HDFS 的关键特性 

HDFS 具有以下关键特性:

  1. 低成本存储
    HDFS 使用的商品硬件成本较低,能够有效减少存储开销。
  2. 大数据存储
    HDFS 可以存储极大的数据量,甚至达到 PB(千兆字节)级别,支持表格和非表格数据格式。大数据被拆分为称为 块 的小部分进行存储。
  3. 容错性
    HDFS 可以复制数据块,确保当硬件发生故障时,数据仍可从其他机器恢复。副本提供了数据丢失的备份。
  4. 高扩展性
    HDFS 可以将一个集群扩展到数百个节点,具有极高的可扩展性。
  5. 可移植性
    HDFS 设计上可以轻松地从一个平台迁移到另一个平台。

HDFS 的概念 

了解 Hadoop 之前,您需要知道一些概念:

块(Block)

  • 块 是 HDFS 中最小的可读写单位,提供了容错能力。根据系统配置,默认块大小可能是 64MB 或 128MB。
  • 例如,如果我们有一个 500MB 的文件,默认块大小为 128MB,那么该文件将被拆分成 3 个 128MB 的块和 1 个 116MB 的块。
  • 文件存储时,并不一定会占用预设的块大小,只要块足够存储即可。

节点(Node)

  • 节点 是负责存储和处理数据的单个计算机系统。每个节点存储一部分数据。
  • HDFS 遵循 主/从 架构,具有两种类型的节点:
    • 主节点(NameNode):负责管理客户端的文件访问,分配和管理任务给从节点。
    • 从节点(DataNode):存储实际的数据,并响应读写请求。

HDFS 架构 

主节点与从节点

  • 在 HDFS 中,有一个 主节点(NameNode) 和多个 从节点(DataNode)。
  • 主节点 负责管理文件的操作,如打开、关闭、重命名文件,并将文件块映射到从节点。
  • 从节点 负责响应客户端的读写请求,并根据主节点的指令执行文件块的创建、复制和删除操作。

机架意识(Rack Awareness)

  • 机架(Rack) 是大约 40 到 50 个数据节点共享同一网络交换机的集合。机架意识的目的是减少网络流量并提高集群性能。
  • 主节点会存储 机架 ID 信息,并确保数据的副本分布在不同的机架中。这样,如果某个机架发生故障,数据仍然可以从其他机架获得。

HDFS 的副本机制 

副本(Replication)

  • 副本 是创建数据块的备份。当出现故障时,副本提供数据块的备份。
  • 副本因子(Replication Factor) 是定义数据块副本数量的参数。您可以根据配置设置副本数。
    • 例如,假设我们有一个 500MB 的文件,副本因子为 2,每个数据块会有两个副本。最终,您将有 8 个副本作为备份。

副本优化

HDFS 使用 机架意识 来优化副本的存储,确保副本分布在不同机架上。这样可以提高数据可靠性,确保在机架故障时,仍然能够从其他机架获取数据。


HDFS 的读写操作 

写一次,读多次

HDFS 支持 “写一次,读多次” 操作。这意味着,一旦文件被写入 HDFS,就无法修改,但可以向文件追加新数据。

读操作

  • 客户端向 主节点(NameNode) 发送请求,获取包含数据块的从节点位置。
  • 主节点验证客户端的访问权限,并提供数据块的位置。
  • 客户端与最近的从节点通信,读取文件。

写操作

  • 在写操作中,主节点验证客户端权限,检查文件是否存在。
  • 如果文件已存在,客户端将收到 IO 异常。
  • 如果文件不存在,客户端将收到写权限,并与从节点建立连接。
  • 一旦客户端完成写入,数据节点开始创建副本,并向客户端发送确认。

总结 

在本视频中,您学到了:

  • HDFS 的关键优势:包括成本效益、可扩展性、数据存储扩展和数据副本能力。
  • 块 是文件的最小单位。
  • 副本 用于备份数据块,确保数据的可靠性。
  • 机架意识 帮助减少网络流量并提高集群性能。
  • HDFS 支持 写一次,读多次 的操作模式。

HDFS 是一个高效、可靠的分布式文件系统,能够在大数据环境中提供出色的存储和数据管理功能。