zoukankan      html  css  js  c++  java
  • Hadoop之为何不使用RAID?

    一、引言:

      在一次和同事的讨论中遇到一个这样的问题:有一个hadoop集群,在hbase的put数据出现瓶颈,他们想要把datanode上的磁盘做成RAID 0(比如10块磁盘做成一个RAID 0),我当时就说这样的做法不太好,但是没有给出充足的理由不好反驳,只是说官方建议每块磁盘做成单独的RAID 0.今天有机会看到《Hadoop 指南》上正好有一块写到hadoop使用RAID的问题。

    二、为何不使用RAID?

      尽管建议采用RAID(Redundant Array of Independent Disk,即磁盘阵列)作为namenode的存储器以保护元数据,但是若将RAID作为datanode的存储设备则不会给HDFS带来益处。HDFS所提供的节点间数据复制技术已可满足数据备份需求,无需使用RAID的冗余机制。

      此外,尽管RAID条带化技术(RAID 0)被广泛用户提升性能,但是其速度仍然比用在HDFS里的JBOD(Just a Bunch Of Disks)配置慢。JBOD在所有磁盘之间循环调度HDFS块。RAID 0的读写操作受限于磁盘阵列中最慢盘片的速度,而JBOD的磁盘操作均独立,因而平均读写速度高于最慢盘片的读写速度。需要强调的是,各个磁盘的性能在实际使用中总存在相当大的差异,即使对于相同型号的磁盘。针对某一雅虎集群的评测报告(http://markmail.org/message/xmzc45zi25htr7ry)表明,在一个测试(Gridmix)中,JBOD比RAID 0 快10%;在另一测试(HDFS写吞吐量)中,JBOD比RAID 0 快30%。

      最后,若JBOD配置的某一磁盘出现故障,HDFS可以忽略该磁盘,继续工作。而RAID的某一盘片故障会导致整个磁盘阵列不可用,进而使相应节点失效。

      更多技术细节可以查看:Why not RAID-0? It’s about Time and Snowflakes

  • 相关阅读:
    dubbo和spring的@service注解区别
    mybatisplus乐观锁
    mybatis中llike模糊查询中#和$的使用,以及bind标签的使用
    mybatis的两个内置参数
    mybatis返回主键
    mybatis使用foreach进行批量保存
    jsp自定义标签
    java.lang.ClassNotFoundException:oracle.jdbc.OracleDriver
    junit测试框架
    junit断言和junit注释assert
  • 原文地址:https://www.cnblogs.com/Richardzhu/p/5315064.html
Copyright © 2011-2022 走看看