fbpx

HadoopをMicrosoft Azure上で動かしてみる! (4/4)

この記事は1年以上前に投稿されました。情報が古い可能性がありますので、ご注意ください。

cli-azure

クリエーションライン渡辺です。今回は連載最終回で、Azure CLI (コマンドラインインターフェース)を操作してみます。今まではポータルのダッシュボードから操作していましたが、CLIコマンドで手軽に操作をすることも楽しいものです。Azure CLIを使うとコマンドラインシェルからリソースを作成したり管理したりすることができます。

第4回: Azure CLIを使ってクラスターリソース管理を行う

 

1. CLIのインストール

Azure CLIのインストール方法はいくつかあります。

  1. インストーラ―
  2. node.jsとnpmの使用
  3. Dockerコンテナ

今回はnode.jsとnpmを使用します。

npmとnode.jsのインストール(Ubuntu 12.04以前)
sudo apt-get install curl
curl -sL https://deb.nodesource.com/setup | sudo bash -
sudo apt-get install -y nodejs
sudo apt-get install npm
sudo npm install azure-cli -g

*Ubuntuのバージョンによってnpmのダウンロードの仕方が変わります。

正常にインストールが成功したら、ヘルプコマンド、バージョンコマンドで以下の様な出力がでます。

watanabe@hn0-ryuou:~$ azure --version
0.9.15 (node: 0.10.42)

watanabe@hn0-ryuou:~$ azure help

auzre-help

Azureコマンドラインインターフェースがインストールされると以下のようにログインすることができます。

azure login
https://aka.ms/devicelogin

login-cli

出力された暗証コードを使い、ブラウザー経由でデバイス認証します

browser-login

認証が完了するとコマンドライン上でAzureアカウントログインがOKになります。
まずはストレージリストを確認します。

watanabe@hn0-ryuou:~$ azure storage account list
info: Executing command storage account list
+ Getting storage accounts
data: Name Type Label Location Resource Group
data: ----------------------- ------------ ----- ---------- -------------------------
data: portalvhds1455598133066 Standard_LRS Japan East Default-Storage-JapanEast
info: storage account list command OK

上記の出力では連載第一回でクラスター作成した際に登録したakibalineストレージアカウントが見当たりません。これはドキュメントの問題かもしれませんが、少し不思議です。

この問題はひとまず置いておいて、提示されたportalvhds1455598133066のアカウントのアカウントキーを取得します。

watanabe@hn0-ryuou:~$ azure storage account keys list portalvhds1455598133066
info: Executing command storage account keys list
+ Getting storage account keys
data: Primary: HVAEzq1pL2y8z2Zxpraf+Js9hiPxu7qkSAUbUA3JODlxt6GtdRVcnbtjp5mqcUq+PST3rbWvqzVYzZsoKlFrFg==
data: Secondary: dYe4s24npf+Y0yyFYNMpu7RWLn8iXNVdZIZitGAKS/3R2NHG7ZzwFmJkUaY72VCe8kiksN5/2kdURvsY4ONeAg==
info: storage account keys list command OK

念のためダッシュボード画面で確認すると、確かに一致しています。確認の仕方は「すべてのリソース」、「該当のストレージアカウント」、「全ての設定」、「キー」を選択します。

key-match

ここでakibalineストレージアカウントの調査を行います。akibalineのキーの取得を試みます。

watanabe@hn0-ryuou:~$ azure storage account keys list akibaline
info: Executing command storage account keys list
+ Getting storage account keys
error: The storage account 'akibaline' was not found.
info: Error information has been recorded to /home/watanabe/.azure/azure.err
error: storage account keys list command failed

やはりCLI上では存在しないと出力されます。

しかし、akibalineのコンテナリストを取得しようとすると出力してくれます。

watanabe@hn0-ryuou:~$ azure storage container list -a akibaline -k tIUutms1I3iXNBr2c1goDmr0RGLR5Yw8i4A9hgfSxFAZaqQ2TBgX6zG6erXqVL68+Chmm2XabrVGHe9bbYp5wQ==
info: Executing command storage container list
+ Getting storage containers
data: Name Public-Access Last-Modified
data: ----- ------------- -----------------------------
data: ryuo Off Mon, 15 Feb 2016 04:48:13 GMT
data: ryuou Off Mon, 15 Feb 2016 08:00:50 GMT
info: storage container list command OK

ダッシュボード上ではakibalineは存在していると表示されます。

akibaline-ley

上図はダッシュボードの「すべてのリソース」画面から確認できます。

存在していることは確認できましたが、なぜアカウントリストコマンドで表示されないかは今後調査を行ったほうがいいでしょう。

続いて先ほど確認したakibalineストレージアカウント内のBLOBコンテナからBLOBファイルをダウンロードしてみます。ダウンロード、及びアップロードの際には先ほど取得したストレージキーアカウントが必要です。akibalineの場合はダッシュボード画面から引用します。

azure storage blob download -a -k

watanabe@hn0-ryuou:~$ azure storage blob download -a akibaline -k tIUutms1I3iXNBr2c1goDmr0RGLR5Yw8i4A9hgfSxFAZaqQ2TBgX6zG6erXqVL68+Chmm2XabrVGHe9bbYp5wQ== ryuou user/watanabe/sample.txt
---------------------------------------------
info: Executing command storage blob download
+ Download blob user/watanabe/sample.txt in container ryuou to user/watanabe/sample.txt
Percentage: 0% (0B/0B) Average Speed: 0B/S Elapsed Time: 00:00:00
+ Getting Storage blob information
info: File saved as user/watanabe/sample.txt
info: storage blob download command OK

ダウンロードしたファイルはそのままの形式(user/watanabe/sample.txt)でローカルに格納されています。

sample

上記のファイルはローカルにダウンロードされると、以下のような形式になります。

watanabe@hn0-ryuou:~$ ls
‘~ home npm-debug.log sample_OG.txt tmp user watanabe
---------------------------------------
watanabe@hn0-ryuou:~$ ls user/watanabe/
sample.txt

次はBLOBコンテナにファイルをアップロードしてみます。

watanabe@hn0-ryuou:~$ azure storage blob upload -a akibaline -k tIUutms1I3iXNBr2c1goDmr0RGLR5Yw8i4A9hgfSxFAZaqQ2TBgX6zG6erXqVL68+Chmm2XabrVGHe9bbYp5wQ== user/watanabe/sample.txt

取得したキーはダウンロード、アップロード以外に新たなコンテナを作成するのにも必要です。ついでに新しいアカウントも作ってみます。まずアカウントのキーを取得します。
watanabe@hn0-ryuou:~$ azure storage account keys list moemoeline
info: Executing command storage account keys list
+ Getting storage account keys
data: Primary: zr9ibe9sgtwZc2Soav4yZQ1d/VKK7EjABFoYcWsjUo3FhVCJYQlzbly96tGSBmE+uOHJcJK59/v9/SfFNJfwFA==
data: Secondary: JSrI+9RI4aERyCCdMciuQN9oUK6rxTbnpjSTaj5h7h9CgA6S7jeuHqNsEUuNpIz4R1aXeir8h0D2GKTHQOW5fg==
info: storage account keys list command OK

ストレージアカウントはHDInsightクラスターの作成を計画したリージョンと同じ物を選択した方がよいでしょう。

watanabe@hn0-ryuou:~$ azure storage container create paku --account-name moemoeline --account-key zr9ibe9sgtwZc2Soav4yZQ1d/VKK7EjABFoYcWsjUo3FhVCJYQlzbly96tGSBmE+uOHJcJK59/v9/SfFNJfwFA==
info: Executing command storage container create
+ Creating storage container paku
+ Getting Storage container information
data: {
data: name: 'paku',
data: metadata: {},
data: etag: '"0x8D336A121AEAD73"',
data: lastModified: 'Tue, 16 Feb 2016 07:16:47 GMT',
data: leaseStatus: 'unlocked',
data: leaseState: 'available',
data: requestId: '3ae7ba58-0001-0036-2a89-68b4c9000000',
data: publicAccessLevel: 'Off'
data: }
info: storage container create command OK

new-container

ここまでの操作でBLOBストレージ、ストレージアカウントHDFS、コンテナ、ファイルシステムの関係性が浮かび上がってきました。

azure-diagram

hadoop-azure

簡単に説明するとAzure BLOBストレージ上にHadoop分散ファイルシステムが動いています。これはクラスター上に計算結果を格納するのは勿体ないので、処理後削除してもデータが失われないようにするため廉価なBLOBストレージにデータを保存するためです。現に先日アクションスクリプトを入れ忘れ、ryuouクラスターを再構築した際に、以前削除したryouクラスターのデータはストレージに残っており、無事に復元することができました。

akibaline-new

最後に仮想マシンもコマンドラインで簡単に作成できます。

設定モードにします。

watanabe@hn0-ryuou:~$ azure config mode asm
info: Executing command config mode
info: New mode is asm
info: config mode command OK

VMイメージリストを取得します。

watanabe@hn0-ryuou:~$ azure vm image list
info: Executing command vm image list
+ Fetching VM images

image-list

これらはubuntuなどのVMのイメージリストです。

次にロケーションリストを取得します。

watanabe@hn0-ryuou:~$ azure vm location list
info: Executing command vm location list
+ Getting locations
data: Name
data: --------------
data: East US
data: Central US
data: North Europe
data: West Europe
data: Southeast Asia
data: Japan West
data: Japan East
info: vm location list command OK

取得したロケーション、イメージをパラメータとして扱い、仮想マシンを作成します。
vm create [options] [password]

watanabe@hn0-ryuou:~$ azure vm create BanzaiVM b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-15_10-amd64-server-20160204-en-us-30GB watanabe --location "Japan East" -r
info: Executing command vm create
warn: --vm-size has not been specified. Defaulting to "Small".
+ Looking up image b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-15_10-amd64-server-20160204-en-us-30GB
Enter VM 'watanabe' password:************
Confirm password: ************
+ Looking up cloud service
info: cloud service BanzaiVM not found.
+ Creating cloud service
+ Retrieving storage accounts
+ Creating a new storage account 'portalvhds1455598133066'
+ Creating VM
info: vm create command OK

仮想マシン作成の確認
watanabe@hn0-ryuou:~$ azure vm list
info: Executing command vm list
+ Getting virtual machines
data: Name Status Location DNS Name IP Address
data: -------- --------- ---------- --------------------- -------------
data: BanzaiVM ReadyRole Japan East banzaivm.cloudapp.net 100.75.134.77
info: vm list command OK

ここまでの感想

Azureコマンドラインインターフェースを使用してみて、仮想マシン、ストレージアカウントなどの管理を直感的に行えます。もちろんダッシュボードからもこれまで行ったこと(アカウント作成、データ削除など)を簡単に行えます。各ブレードに削除、追加ボタンなどを押せば容易にできます。両方のツールを併用すると、各プロセスの確認、システムの構造などを簡単に追跡できます。気になる所はなぜakibalineというストレージがリストコマンドで取得できなかったのかぐらいです。あとはBLOBストレージとHDFSのスタック性ももう少しダッシュボードで識別されていると助かります。

総括

これまでにAzureを使ってクラスター作成からアプリケーションの操作まで行いましたが、以下のような感想が得られました。

- ポータルのダッシュボードは見やすいので必要な操作方法、データを簡単に見つけられる
- Ambariは本当にきれいで見やすいが、リスタート操作が気になった
- CLIはダッシュボードと合わせると強力
- GiraphはGraphXよりデータが軽量化されていそうである
- BLOBストレージとHDFSのスタック性をダッシュボードで可視化、区別化できるか?
- 新たにスケールアップしたノードには既存のアクションスクリプトが含まれているか?
- Hadoop+HBASEなど異なる種類のシステムをまとめてクラスタ作成をするのはどうやるのか?
- Rの設定ファイルはAmbariで変えられないのか?

最後にMicrosoft Azure公式のチュートリアルはこれら以外にも様々な種類がありますので、是非試してみてください!
どれも実施しやすいです。

ありがとうございました。

新規CTA