Hadoop:為什么RAID-0不行?
在Hadoop郵件列表中,一個經(jīng)常出現(xiàn)的問題是“為什么Hadoop更青睞使用一組單獨的硬盤(JBOD)而不使用通過RAID-0磁盤陣列管理的一組硬盤?”
注:在Hadoop集群中,有一個建議:在配置時,將每個磁盤都分開。有人形象地將之稱為“JBOD(Just a Box of Disks)。”
于是,有了以下這篇文章。摘自Hortonworks的兩篇文章,第一篇是Steve Loughran所撰寫的《Why not RAID-0? It’s about Time and Snowflakes》,第二篇是對Greg Bruno博士(工程副總裁及StackIQ聯(lián)合創(chuàng)始人)的一個采訪《Proper Care and Feeding of Drives in a Hadoop Cluster: A Conversation with StackIQ’s Dr. Bruno》。兩篇文章從不同角度論證為什么Hadoop更青睞JBOD而不是RAID-0。
RAID-0又稱為Stripe或Striping,其原理是把連續(xù)的數(shù)據(jù)分散到多個磁盤上存取,這樣,系統(tǒng)有數(shù)據(jù)請求就可以被多個磁盤并行的執(zhí)行,每個磁盤執(zhí)行屬于它自己的那部分數(shù)據(jù)請求。這種數(shù)據(jù)上的并行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。多年應用下來,RAID-0優(yōu)勢很明顯。

但Steve Loughran認為,其并不適合Hadoop。
與RAID-0陣列的同組管理相比,Hadoop更喜歡一組單獨磁盤。在Hadoop集群中,讀取速度是最能體現(xiàn)性能的重要指標。在Steve Loughran文章中,尤其強調(diào)了這一點,他還指出,由于驅動器速度顯著不同,RAID-0讀取速度往往取決于陣列中最慢的一塊磁盤。很多時候,RAID-0配置讀取速度甚至會比non-RAID更慢。更大的問題是可靠性。如果一組磁盤被配置為RAID-0陣列,一旦一個磁盤出現(xiàn)故障,將使得整組都宕機。如果所有磁盤都在一個節(jié)點中,那么勢必會影響整個節(jié)點的數(shù)據(jù)都出現(xiàn)問題。所以,如果配置多個RAID-0陣列,那么單故障發(fā)生時,整體系統(tǒng)出問題的概率得到了無限放大。