为什么不建议将RAID用于Hadoop HDFS设置?

时间:2015-01-16 16:57:56

标签: hadoop hdfs distributed-system raid

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

  1. 速度限制为较慢的磁盘(JBOD表现更好)。
  2. 可靠性
  3. 建议在NameNode上使用RAID。

    但是如何在每个DataNode存储磁盘上实施RAID呢?

2 个答案:

答案 0 :(得分:28)

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

  1. 更好的性能:读取文件可以分布在多个磁盘上,也可以透明地使用不同的磁盘从同一文件系统中读取多个文件。
  2. 容错:使用多个磁盘上的奇偶校验位复制或存储数据。如果磁盘发生故障,可以从另一个副本恢复,或使用奇偶校验位重新计算。
  3. HDFS具有类似的软件内置机制。 HDFS将文件拆分为块(所谓的文件块),这些块在多个数据节点之间复制并存储在其本地文件系统中。通常,datanode有多个单独安装的磁盘(JBOD)。 datanode应该在其所有磁盘/本地文件系统上分发其文件块。

    这可以确保:

    1. 容错:如果磁盘或节点出现故障,则其他数据节点和磁盘上可以使用其他副本。
    2. 高顺序读/写性能:通过将文件拆分为多个块并将它们存储在不同的节点(和不同的磁盘)上,可以通过同时访问多个磁盘(在不同的节点上)并行读取文件。每个磁盘都可以使用其全带宽读取数据,并且其读取操作不会干扰其他磁盘。如果群集得到充分利用,所有磁盘将全速旋转,从而提供最大的顺序读取性能。
    3. 由于HDFS正在处理容错和"条纹"读取时,无需在HDFS下使用RAID。使用RAID只会更昂贵,提供更少的存储空间,而且速度也更慢(取决于具体的RAID配置)。

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

答案 1 :(得分:0)

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