Cloudera Altusを使ってみた

hadoop-logo

こんにちは、小澤です。

Clouderaが提供するクラウド上でHadoopを扱うためのサービスであるCloudera Altusを使ってみました。

Cloudera Altusとは

AltusがどういったものなのかについてはClouderaの公式ブログに記載があります。

Altusの構成としてはWebUIやCLIからクラスタの作成・ジョブの投入を行うためのAltus Data Engineeringと、 実際にHadoopクラスタが動くAWS環境の2つから構成されます(画像は上記のページから引用)。

1-7Z-_C8XPRjOaFA87fiyqMA

AWS環境は利用者が個別にアカウントを作成して使える状態にしておく必要があります。 Altus Data Engineeringに関しては、Clouderaが提供するサービスにログインして利用することになります。

実際にHadoopクラスタが作成され、ジョブが実行されるのはAWS環境となりますが、 利用者はAltus Data Engineeringからそれらの操作を行うことで、作成された個々のクラスタやジョブ管理を個別に行う必要はありません。

そのため、クラウド環境のように頻繁にクラスタの作成や削除を行う環境においてそれらを一元管理して横断的に状況を確認することが可能になっています。

Altusを使ってみる

では、Altusを利用してみたいと思います。

Altusを使うにはClouderaのアカウントが必要となりますので、お持ちでない方は先にそちらを作成しておいてください。 Access Request for Cloudera Altus on AWSから申請を行うことで利用可能になります。

Altusにアクセスすると以下のような画面が表示されます。

スクリーンショット 2017-10-03 19.03.27

環境を作る

Altusを利用するに際してまず最初に行うのがEnvironmentの作成となります。 Environmentの作成とは何をするのかというと、実際にHadoopクラスタが作成されるAWS環境とAltusの接続に関する設定を行うものになります。

Altusからクラスタの作成やジョブの投入する際に実際にそれらが実行されるのはAWS環境になります。 そのため、Hadoopクラスタを動かすAWS環境についての設定を行う必要があるというわけです。

Environmentの作成手順については、詳しく解説されたものがあるのでそちらをご覧ください。

Environmentの作成に際して、「Workload Analytics」にチェックを入れておくことでAltus上でジョブの実行に関する情報を取得して確認することが可能になります。 この機能を利用することで、ジョブの実行状況確認やデバッグ、パフォーマンスチューニングなどを行う際に非常に便利な様々な情報が表示されます。 ただし、それらに必要なログなどの情報をAltus側から取得することを許可する設定となりますので、機密性の高い情報を扱う際などはご注意ください。

スクリーンショット 2017-10-04 9.44.38

Environmentの作成は通常、初回のみ行う操作となります。 動作させるVPCの変更やIAMの見直し、AWSアカウントの変更などAltusで利用するAWS環境に変更を加える場合はそちらに合わせた変更も必要になります。

クラスタの作成

続いて、Hadoopクラスタの作成を行います。 クラスタの作成は左のメニューから「Clusters」を選択して、「Create Cluter」で行います。

スクリーンショット 2017-10-04 9.55.04

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

スクリーンショット 2017-10-04 10.02.26

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を押すとクラスタの一覧画面に戻ります。 今作成したクラスタが表示されているのが確認できるかと思います。

スクリーンショット 2017-10-04 10.22.58

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

スクリーンショット 2017-10-04 10.23.20

また、Environmentで設定したAWSのアカウントからEC2インスタンスが立ち上がっているのが確認できます。

StatusがCreatedになれば利用可能な状態になっています。

ジョブの投入

さて、クラスタが作成されたのでジョブの投入を行ってみます。

ジョブはメニューのJobsからSubmit Jobsを選択することで投入できます(画像ではやたらとジョブが失敗していますが、気にしないであげてください。突っ込まれると泣きます)。

スクリーンショット 2017-10-04 10.40.05

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

例えば、Sparkを選んだ場合は以下のようになります。

スクリーンショット 2017-10-04 10.44.07

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

から選択する形式になっています。 すでに作成済みのクラスタを選択する他、ジョブ実行時にクラスタを作成して終了したらクラスタも削除するといったことも可能になっています。

投入したジョブはクラスタと同様、一覧から選択することで詳細を確認できるようになっています。

スクリーンショット 2017-10-04 11.03.04

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

スクリーンショット 2017-10-04 11.03.39

また、ジョブの一覧はすでに削除したクラスタのものも含めて一覧に表示されます。 そのため、過去のものも含めて状況の確認などが行えるようになっています。

おわりに

今回は、Cloudera Altusを使って環境の作成からジョブの投入までを行ってみました。

今回は最も基本的な部分のみの内容となりますが、Altusにはこの他にもcliを利用したアクセスやWorkload Analyticsを利用したジョブの詳細確認などが行えます。 それらについても今後記載させていただければと思います。

AWS Cloud Roadshow 2017 福岡