DMM.comラボエンジニアブログ

DMM.comラボのエンジニアブログです。DMM.comを支える技術について書いています。

DMM insideに引っ越しました。 移転先はこちら -> https://inside.dmm.com/

Cloudera Managerのリソース管理機能を使いこなそう

Cloudera Manager Advent Calendar 2015の23日目です。

こんにちは、DMM.comラボ ビッグデータ部所属のしょうちゃんです。
Cloudera Managerのリソース管理機能について書きました。

はじめに

DMM.comラボでは、CDHを利用しHadoopクラスタを運用しています。
Hadoopを運用する上で、課題の1つにリソースの管理が挙げられるでしょう。

リソース管理課題の例としては、

  • アドホックな分析処理のために定常処理を阻害したくない
  • 時間帯に応じてサービスごとに使えるリソースを動的に管理したい
    etc...

などが挙げられるでしょう。

そこで今回は、同じクラスタの中で複数サービスを動かす際の
Cloudera Managerを利用したリソース管理に関してDMMでの事例を紹介させていただきます。

f:id:dmmlabotech:20151222191519p:plain

※ 本記事執筆時点でのCloudera Managerのバージョンですが、5.4系となっております。

静的サービスプール

静的サービスプールとは、

静的サービスプール はクラスタ内のサービスを他のサービスから分離します。 これにより、一つのサービスの負荷が他のサービスに与える影響は一定以内に収めることができます。
【引用】Cloudera Managerドキュメント

とあります。

静的サービスプールを利用することで、 クラスタ内の各種サービスに静的リソースを割り当てることができます。

もちろんリソースを多く割り当てたいサービスに対して重み付けをすることも可能です。
静的サービスプールに関してはクラスタ > 静的サービスプールから利用可能です。

動的リソースプール

YARNに対しては動的リソースプールを設定しています。

動的リソースプールを利用することで、
静的に割り当てられたリソースを動的に分配することが可能となります。

動的リソースプールの作成

動的リソースプールの設定 > リソースプールタブから
リソースプールの作成をすることで利用できます

f:id:dmmlabotech:20151222190415p:plain

必要な項目を入力し、リソースプールの作成をしていきます

f:id:dmmlabotech:20151222190434p:plain

DMMでの事例

動的リソースプール設定に際してのポイントは以下の3点です。

【ポイント】

  • デイタイムと夜間でリソース配分を切り替える
  • 置換ルールを適切に設定する
  • リソースメモリ設定(単位)に注意する

それぞれ、詳しく見ていきましょう。

デイタイムと夜間でリソース配分を切り替える

ユーザー毎にリソースの割り当てをデイタイムと夜間でスケジューリングを行っています。
スケジューリングすることのメリットとして、

昼はアドホックな集計に最適なリソース配分
夜はバッチに最適なリソース配分

が可能となるということが挙げられるでしょう。
スケジューリングはスケジュールルールを作成することで設定できるようになります。

スケジュールルール

それではスケジュールルールの作成方法を見ていきましょう。
スケジューリングは、スケジュールルールタブから作成します。
動的リソースプール内の、スケジュールルールタブより設定します。

f:id:dmmlabotech:20151222190457p:plain

ここで追加した設定セットを、リソースプールの設定に利用することができます

置換ルールを適切に設定する

動的リソースプールの設定が終わったら、 リソースプールが適切に利用されるように置換ルールを設定します。
以下の評価式を元に、詳細設定において置換ルールを作成しています。

f:id:dmmlabotech:20151222190520p:plain

上記の設定をした場合は、

1. バッチの実行ユーザーで実行された場合は、該当のプールが適用
2. バッチの実行ユーザー以外で実行された場合は、デフォルトのプールが適用

となります。

リソースメモリ設定(単位)に注意!

動的リソースプール設定におけるメモリ設定に関してですが、 デフォルトで『MB』なので注意が必要です、大抵は『GB』単位で指定するものだと思います。

f:id:dmmlabotech:20151222190536p:plain

例えば、10『GB』で設定するつもりが、10『MB』で設定してしまうと色々と動かなくなるので注意しましょう(教訓)

以上が動的リソースプールを設定する上でのポイントになります。

最後に

Cloudera Managerを利用したリソース管理に関する事例の紹介でした。
皆様もこの機会にぜひCMを利用したリソース管理の見直しをしてみてはいかがでしょうか?

参考リンク

Cloudera Manager Advent Calendar 2015
Cloudera Managerドキュメント