Cloudera Managerのリソース管理機能を使いこなそう
Cloudera Manager Advent Calendar 2015の23日目です。
こんにちは、DMM.comラボ ビッグデータ部所属のしょうちゃんです。
Cloudera Managerのリソース管理機能について書きました。
はじめに
DMM.comラボでは、CDHを利用しHadoopクラスタを運用しています。
Hadoopを運用する上で、課題の1つにリソースの管理が挙げられるでしょう。
リソース管理課題の例としては、
- アドホックな分析処理のために定常処理を阻害したくない
- 時間帯に応じてサービスごとに使えるリソースを動的に管理したい
etc...
などが挙げられるでしょう。
そこで今回は、同じクラスタの中で複数サービスを動かす際の
Cloudera Managerを利用したリソース管理に関してDMMでの事例を紹介させていただきます。
※ 本記事執筆時点でのCloudera Managerのバージョンですが、5.4系となっております。
静的サービスプール
静的サービスプールとは、
静的サービスプール はクラスタ内のサービスを他のサービスから分離します。 これにより、一つのサービスの負荷が他のサービスに与える影響は一定以内に収めることができます。
【引用】Cloudera Managerドキュメント
とあります。
静的サービスプールを利用することで、 クラスタ内の各種サービスに静的リソースを割り当てることができます。
もちろんリソースを多く割り当てたいサービスに対して重み付けをすることも可能です。
静的サービスプールに関してはクラスタ > 静的サービスプールから利用可能です。
動的リソースプール
YARNに対しては動的リソースプールを設定しています。
動的リソースプールを利用することで、
静的に割り当てられたリソースを動的に分配することが可能となります。
動的リソースプールの作成
動的リソースプールの設定 > リソースプールタブから
リソースプールの作成をすることで利用できます
必要な項目を入力し、リソースプールの作成をしていきます
DMMでの事例
動的リソースプール設定に際してのポイントは以下の3点です。
【ポイント】
- デイタイムと夜間でリソース配分を切り替える
- 置換ルールを適切に設定する
- リソースメモリ設定(単位)に注意する
それぞれ、詳しく見ていきましょう。
デイタイムと夜間でリソース配分を切り替える
ユーザー毎にリソースの割り当てをデイタイムと夜間でスケジューリングを行っています。
スケジューリングすることのメリットとして、
昼はアドホックな集計に最適なリソース配分
夜はバッチに最適なリソース配分
が可能となるということが挙げられるでしょう。
スケジューリングはスケジュールルールを作成することで設定できるようになります。
スケジュールルール
それではスケジュールルールの作成方法を見ていきましょう。
スケジューリングは、スケジュールルールタブから作成します。
動的リソースプール内の、スケジュールルールタブより設定します。
ここで追加した設定セットを、リソースプールの設定に利用することができます
置換ルールを適切に設定する
動的リソースプールの設定が終わったら、
リソースプールが適切に利用されるように置換ルールを設定します。
以下の評価式を元に、詳細設定において置換ルールを作成しています。
上記の設定をした場合は、
1. バッチの実行ユーザーで実行された場合は、該当のプールが適用
2. バッチの実行ユーザー以外で実行された場合は、デフォルトのプールが適用
となります。
リソースメモリ設定(単位)に注意!
動的リソースプール設定におけるメモリ設定に関してですが、 デフォルトで『MB』なので注意が必要です、大抵は『GB』単位で指定するものだと思います。
例えば、10『GB』で設定するつもりが、10『MB』で設定してしまうと色々と動かなくなるので注意しましょう(教訓)
以上が動的リソースプールを設定する上でのポイントになります。
最後に
Cloudera Managerを利用したリソース管理に関する事例の紹介でした。
皆様もこの機会にぜひCMを利用したリソース管理の見直しをしてみてはいかがでしょうか?
参考リンク
Cloudera Manager Advent Calendar 2015
Cloudera Managerドキュメント