wiki:HadoopFailureAnswer

Version 3 (modified by kosuke, 10 years ago) (diff)

--

障害対策

作者:kosuke

参考文献:著者 西田 圭介 Googleを支える技術 ~巨大システムの内側の世界 出版社: 技術評論社 (2008/3/28)

1. マスタの障害対策

結論から言えば、マスタの障害対策はない。マスタは常に起動しているわけではなく、処理が行われているときだけスレーブと通信している。Google では、マスタが起動している時間はせいぜい数時間から数十時間程度なので故障する可能性はきわめて低いと考えられる。しかし、もし万が一マスタが壊れると、もう一度初めから全ての処理をやり直さなければならない。

2. スレーブの障害対策

分散すればするほど、たくさんのスレーブを使うわけだから、当然一台もしくは複数台のスレーブが故障する可能性は高くなる。しかし、一台故障したからと言ってもう一度処理をすべてやり直すのはナンセンスである。もし、一台のスレーブが故障して、マスタとの通信が途絶えた場合、マスタはそのスレーブを管理下から外す。 例えば、Mapのスレーブが故障した場合は、ほかのスレーブによってすべてのMap処理がやり直される。 例えば、Reduceのスレーブが故障した場合は、ほかのスレーブによって、シャッフルからReduce処理がやり直される。 障害から早く復旧するためには、逆に入力ファイルの分割数(=FileSplitsの数)を多くし、中間ファイルの分割数を増やすことだ。 入力ファイルの分割数を多くすれば、故障が起きたスレーブで処理している分割ファイルの数が多くなるので、その分割ファイルを他のスレーブで手分けして処理することができる。

中間ファイルの分割数を大きくすると、中間ファイルが小さくなるのでシャッフルの処理やReduceの時間が短縮される。