
Cloudera Altusを使ってみた
この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
こんにちは、小澤です。
Clouderaが提供するクラウド上でHadoopを扱うためのサービスであるCloudera Altusを使ってみました。
Cloudera Altusとは
AltusがどういったものなのかについてはClouderaの公式ブログに記載があります。
Altusの構成としてはWebUIやCLIからクラスタの作成・ジョブの投入を行うためのAltus Data Engineeringと、 実際にHadoopクラスタが動くAWS環境の2つから構成されます(画像は上記のページから引用)。

AWS環境は利用者が個別にアカウントを作成して使える状態にしておく必要があります。 Altus Data Engineeringに関しては、Clouderaが提供するサービスにログインして利用することになります。
実際にHadoopクラスタが作成され、ジョブが実行されるのはAWS環境となりますが、 利用者はAltus Data Engineeringからそれらの操作を行うことで、作成された個々のクラスタやジョブ管理を個別に行う必要はありません。
そのため、クラウド環境のように頻繁にクラスタの作成や削除を行う環境においてそれらを一元管理して横断的に状況を確認することが可能になっています。
Altusを使ってみる
では、Altusを利用してみたいと思います。
Altusを使うにはClouderaのアカウントが必要となりますので、お持ちでない方は先にそちらを作成しておいてください。 Access Request for Cloudera Altus on AWSから申請を行うことで利用可能になります。
Altusにアクセスすると以下のような画面が表示されます。

環境を作る
Altusを利用するに際してまず最初に行うのがEnvironmentの作成となります。 Environmentの作成とは何をするのかというと、実際にHadoopクラスタが作成されるAWS環境とAltusの接続に関する設定を行うものになります。
Altusからクラスタの作成やジョブの投入する際に実際にそれらが実行されるのはAWS環境になります。 そのため、Hadoopクラスタを動かすAWS環境についての設定を行う必要があるというわけです。
Environmentの作成手順については、詳しく解説されたものがあるのでそちらをご覧ください。
Environmentの作成に際して、「Workload Analytics」にチェックを入れておくことでAltus上でジョブの実行に関する情報を取得して確認することが可能になります。 この機能を利用することで、ジョブの実行状況確認やデバッグ、パフォーマンスチューニングなどを行う際に非常に便利な様々な情報が表示されます。 ただし、それらに必要なログなどの情報をAltus側から取得することを許可する設定となりますので、機密性の高い情報を扱う際などはご注意ください。

Environmentの作成は通常、初回のみ行う操作となります。 動作させるVPCの変更やIAMの見直し、AWSアカウントの変更などAltusで利用するAWS環境に変更を加える場合はそちらに合わせた変更も必要になります。
クラスタの作成
続いて、Hadoopクラスタの作成を行います。 クラスタの作成は左のメニューから「Clusters」を選択して、「Create Cluter」で行います。

クラスタの作成に際しての設定項目は以下のようになります。

General Information
| 項目 | 内容 | 
|---|---|
| Cluster Name | クラスタの名前 | 
| Service Type | SparkやHiveなど、どのサービスを利用するかを選択 | 
| CDH Version | 利用するCDH(Clouderaが提供するHadoopのディストリビューション)の選択 | 
| Environment | 先ほど作成したEnvironmentを選択 | 
Node Configuration
| 項目 | 内容 | 備考 | 
|---|---|---|
| Worker | NodeManagerやDataNodeが動くインスタンス | EMRのコアグループに相当 | 
| Compute Worker | NodeManagerのみが動くためHDFSの機能を持たないノード | EMRのタスクグループに相当 | 
| Master | ResourceManagerやNameNodeなどのマスタ系が動くインスタンス | EMRのマスタグループに相当 | 
| Cloudera Manager | Cloudera Managerが動くインスタンス | 
Credentials
| 項目 | 内容 | 
|---|---|
| SSH Private Key | クラスタ作成時や利用時に必要なssh通信を行うために利用するsshの秘密鍵 | 
| Cloudera Manager Username | Cloudera Managerにログインするためのユーザ名 | 
| Cloudera Manager Password | Cloudera Managerにログインするためのパスワード | 
Advanced Settings
| 項目 | 内容 | 
|---|---|
| Instance bootstrap script | 必要なソフトウェアのインストールなどクラスタ起動時に実行するスクリプトを指定 | 
各項目の内容は、HadoopやEMRの利用経験がある方であれば特に不明な点はないかと思われます。
Altusの特徴として、特定の用途に特化した設定を行ったクラスタの作成が行われることです。 そのため、Service Typeでは必要なエコシステムを複数選択するのではなく用途に応じたものを1つ選択する形式になっています。
必要な設定を入力して、Create Clusterを押すとクラスタの一覧画面に戻ります。 今作成したクラスタが表示されているのが確認できるかと思います。

クラスタ名をクリックすることで、詳細画面に飛ぶことができます。

また、Environmentで設定したAWSのアカウントからEC2インスタンスが立ち上がっているのが確認できます。
StatusがCreatedになれば利用可能な状態になっています。
ジョブの投入
さて、クラスタが作成されたのでジョブの投入を行ってみます。
ジョブはメニューのJobsからSubmit Jobsを選択することで投入できます(画像ではやたらとジョブが失敗していますが、気にしないであげてください。突っ込まれると泣きます)。

Submit Jobsの画面では非常にシンプルな2項目だけのフォームが登場します。 Job Typeを選択することでそれに応じた設定項目が出現します。
例えば、Sparkを選んだ場合は以下のようになります。

Sparkの場合の設定項目は以下のようになっています。
| 項目 | 内容 | 
|---|---|
| Submission | 単一のジョブを実行するか、複数のジョブを実行するか | 
| Job Name | ジョブの名前 | 
| Main Class | 実行するジョブのクラス | 
| Jars | 依存するJarファイル | 
| Application Arguments | 実行するジョブで受け取る引数 | 
| Spark Arguments | Sparkに与える引数(--num-executersなど) | 
| Action on Failure | ジョブが失敗した時の動作 | 
これらの項目については通常のSpark利用時とそれほど大きな違いはないので問題ないかと思います。
続いてジョブを実行するクラスタの設定があります。これは、
- Using existing
- Create new
- Clone existing
から選択する形式になっています。 すでに作成済みのクラスタを選択する他、ジョブ実行時にクラスタを作成して終了したらクラスタも削除するといったことも可能になっています。
投入したジョブはクラスタと同様、一覧から選択することで詳細を確認できるようになっています。

クラスタからも投入されたジョブの確認が行えます。

また、ジョブの一覧はすでに削除したクラスタのものも含めて一覧に表示されます。 そのため、過去のものも含めて状況の確認などが行えるようになっています。
おわりに
今回は、Cloudera Altusを使って環境の作成からジョブの投入までを行ってみました。
今回は最も基本的な部分のみの内容となりますが、Altusにはこの他にもcliを利用したアクセスやWorkload Analyticsを利用したジョブの詳細確認などが行えます。 それらについても今後記載させていただければと思います。














