1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

(翻訳)HDFSのディスクとデータノードのサイズについて(Cloudera blog記事の超意訳)

Last updated at Posted at 2020-02-07

たまたまCloudera blogの内容が目に留まったので超ざっくり意訳してみました。
Hadoopクラスターのデータノードサイズの検討に役立つ記事でした。
https://blog.cloudera.com/disk-and-datanode-size-in-hdfs/

Hadoop運用してればわかることかと思いますが、bit-rotのところや、ブロックレポートがあるってところは勉強になりました。
ところどころ勝手な意訳が入ってます。


適切なディスクサイズと容量はどれくらいかって話です。

アクセスが少ないデータに対して容量の大きいストレージを割り当てるのはいいですが、
アクセスが多いデータに対して容量の大きいストレージを割り当てるのは要注意です。

というのも以下の二つが要注意

  1. 容量の大きいディスク - 総容量と同じことですが、より多くのディスクを使った方が高IO帯域になります。
  2. 高容量ノード - (1台あたりの)容量が大きくなると、障害復旧に時間がかかるようになります。

これらはHDFSに特異ってわけじゃなくて、耐障害性を高めるためにレプリケーションしてる分散ストレージサービスであればどれも当てはまるでしょう。

なので1データノードあたり100TBで8ディスク以上が推奨です。
1ディスク8~12TBで100TBが上限です。

HDFSで大容量ボリュームの時のインパクト

IO帯域が減る

データノードが96TBだとして、8TBx12本と16TBx6本を考えてみよう。
100MB/secのread/writeスループットと7200RPMのスピードと仮定する。

8TBx12本 16TBx6本 補足
Read/Writeスループット 1200MB/sec 600MB/sec 100MB x ディスク数
Random IOPS 2880 1440 ちょっとわからないんですが、(7200 / 60) x 2 x ディスク数かと思います。

bit-rot 検知に時間がかかる

bit-rotを検出するためにデータノードはブロックをスキャンしてます。
そのスキャンは通常3週間ごとに行われます。
アプリケーションが動いてたらそのスキャン作業とリソースの奪い合いになります。
設定は変えられるけど5MB/secとしましょう。

12TBのディスクだったら、12TB/5MBps≒28日くらい

ディスクサイズ増えたらもっと時間かかります。

※bit-rot:経年劣化により磁気ディスクが読み取れなくなってしまう障害

ブロックレポートが重くなる

容量が大きくなればブロックレポートのブロック数も増えます。
データノードごとにブロックレポート生成時間が増え、RPCペイロードも増え、ネームノードでのブロックレポート処理も重くなり
クラスターの性能が落ちることになります。

高容量ノードのインパクト

障害復旧に時間かかる

ストレージのノードが落ちたら、冗長性のためにデータブロックをレプリケートしなければなりません。
リカバリー時間はデータノードサイズに比例するし、データノード数に反比例します。

リカバリー時間= (c * s)/n とすると

cは定数、sは各ノードの使用容量、nはストレージノード数。

クラスターの容量が与えられてるとすると、ノード毎の容量が2倍になるとリカバリー時間は4倍になります。
各ノードの容量が2倍になってノード数が半分になると仮定すると、

リカバリー時間=(c * 2s)/(n/2) = (4 * c * s)/n

変数sとnは他のストレージソリューションでも同様に重要です。
高容量データノードはどんなクラスターでもリカバリー時間に同じようなインパクトがあるでしょう。

データノードのデコミッション時のインパクト

計画的なノードのデコミッション中でも、すべてのブロックは他ノードに再レプリケートされます。
高容量データノードのデコミッション時間の影響はデータノード障害のリカバリー時間とほぼ同じです。
クラスターの容量が与えられてるとすると、ノード毎の容量が2倍になるとリカバリー時間は4倍になります。

HDFS-14854でデコミッション時のパフォーマンス改善が実装されてます。
今後のCDPで有効になるでしょう。


1データノードあたりの容量が増えると障害が起きたり、デコミッション時のデータ復旧に時間がかかるのはほんんんと同意。
かといって容量減らしてサーバー増やすとか、サーバーラックもおいそれと倍にできるわけじゃないから悩ましいです。
あらためて小さい容量のサーバーがたくさんあるほうがいいことがわかります。
またブロックレポートというのも今回で初めて知りました。Hadoopクラスターは裏でいろいろと動いてるのも調べないとわからないですね。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?