9

各种网站(如 Hortonworks)建议不要为 HDFS 设置配置 RAID,主要有两个原因:

  1. 速度受限于较慢的磁盘(JBOD 性能更好)。
  2. 可靠性

建议在 NameNode 上使用 RAID。

但是在每个 DataNode 存储磁盘上实现 RAID 呢?

4

2 回答 2

30

RAID 用于两个目的。根据 RAID 配置,您可以获得:

  1. 更好的性能:读取一个文件可以分布在多个磁盘上,或者不同的磁盘可以透明地用于从同一个文件系统中读取多个文件。
  2. 容错性:使用奇偶校验位在多个磁盘上复制或存储数据。如果磁盘发生故障,它可以从另一个副本中恢复或使用奇偶校验位重新计算。

HDFS 在软件中内置了类似的机制。HDFS 将文件拆分成块(所谓的文件块),这些块在多个数据节点之间复制并存储在它们的本地文件系统中。通常,数据节点有多个单独安装的磁盘(JBOD)。数据节点应该将其文件块分布在其所有磁盘/本地文件系统中。

这可确保:

  1. 容错:如果一个磁盘或节点出现故障,其他副本在不同的数据节点和磁盘上可用。
  2. 高顺序读/写性能:通过将文件拆分成多个块并存储在不同的节点(和不同的磁盘)上,可以通过并发访问多个磁盘(在不同的节点上)来并行读取文件。每个磁盘都可以使用其全部带宽读取数据,并且其读取操作不会干扰其他磁盘。如果集群得到充分利用,所有磁盘都将全速旋转,从而提供最大的顺序读取性能。

由于 HDFS 负责容错和“条带化”读取,因此无需在 HDFS 下使用 RAID。使用 RAID 只会更昂贵,提供更少的存储空间,而且速度也会更慢(取决于具体的 RAID 配置)。

由于 namenode 是 HDFS 中的单点故障,因此它需要更可靠的硬件设置。因此,建议在名称节点上使用 RAID。

于 2015-01-25T16:32:14.483 回答
0

RAID0 和企业服务器是一个巨大的错误。我当然很想见见设计这个的人。这对 IT 运营经理来说没有常识。如果您将任何本地服务器磁盘配置为 RAID0,您将面临漫长而痛苦的 RAID0 恢复风险。如果 RAID0 中的单个磁盘发生故障,则该 RAID 分区将被破坏,并且在更换磁盘时它不会神奇地恢复。有人必须登录到服务器并删除旧的 RAID 分区并创建一个新分区。当工时和工作周期处于历史最高水平时,这会产生大量开销。IT 运营经理要么会因为更优先的工作负载而推迟执行此操作,要么会因为没有足够的周期将人力资源用于更重要的工作而拒绝执行此操作。然后它会被推到另一个团队。然后政治开始了,然后它被推回给服务器所有者/客户。如果您想让 RAID1 或 SAN 驱动器可用,那么您可以避免整个场景。

于 2017-01-28T02:39:40.837 回答