Hadoop:為什么RAID-0不行?
在Hadoop郵件列表中,一個(gè)經(jīng)常出現(xiàn)的問題是“為什么Hadoop更青睞使用一組單獨(dú)的硬盤(JBOD)而不使用通過RAID-0磁盤陣列管理的一組硬盤?”
注:在Hadoop集群中,有一個(gè)建議:在配置時(shí),將每個(gè)磁盤都分開。有人形象地將之稱為“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)始人)的一個(gè)采訪《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ù)分散到多個(gè)磁盤上存取,這樣,系統(tǒng)有數(shù)據(jù)請求就可以被多個(gè)磁盤并行的執(zhí)行,每個(gè)磁盤執(zhí)行屬于它自己的那部分?jǐn)?shù)據(jù)請求。這種數(shù)據(jù)上的并行操作可以充分利用總線的帶寬,顯著提高磁盤整體存取性能。多年應(yīng)用下來,RAID-0優(yōu)勢很明顯。

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