Datalakeの沼 - Azure Datalakeで始めるデータ分析

沼にはまらず、さくさく分析!

第5沼 東日本と米国東部 2のあいだ (下)

f:id:m-tanaka:20171111153025p:plain

「2週間ぶりね。前回の記事をみて準備はできたかしら?」

f:id:m-tanaka:20171103001520p:plain

「はい。バッチリです。」

f:id:m-tanaka:20171111153025p:plain

「では、始めましょう」

f:id:m-tanaka:20171103001520p:plain

「まずは、ダミーファイルをつくって」

f:id:m-tanaka:20171122210604p:plain

Powershellでコマンドを実行

Login-AzureRmAccount

ポップアップが表示されるので、マイクロソフトアカウントでサインイン

Account          : datalake@masayukitanaka.me 

SubscriptionName : 従量課金 

SubscriptionId   : hogehoge 

TenantId         : foobar 

Environment      : AzureCloud

ここで 表示されるSubscriptionIdは後で使うのでメモメモ

 

Set-AzureRmContext -SubscriptionId hogehoge

Register-AzureRmResourceProvider -ProviderNamespace "Microsoft.DataLakeStore" 

 

f:id:m-tanaka:20171103001520p:plain

「準備完了ですっ! では沼子いっきまーす」

Import-AzureRmDataLakeStoreItem -AccountName numaadls -Path "C:\temp\1GBDummy.dat" -Destinati on \1GBDummy.dat

「。。。」

Import-AzureRmDataLakeStoreItem : Upload operation failed due to the following underlying error: 

Microsoft.Azure.Management.DataLake.Store.TransferFailedException: Unable to locate a record boundary within 2MB on 

either side of segment 0 (offset 0). This means the record at that offset is larger than 2MB. 

「なんでしょう?これ?」

f:id:m-tanaka:20171111153025p:plain

「エラーね」

f:id:m-tanaka:20171103001520p:plain

「エラーですか。」

。。。

「どうしましょう?

f:id:m-tanaka:20171111153025p:plain

「こういううときは、まずメッセージの内容をきちんと確認することね」

「どうやら、1レコードのサイズが2MBを超えるとだめみたいね」

f:id:m-tanaka:20171103001520p:plain

「どうしましょう?」

f:id:m-tanaka:20171111153025p:plain

ggrks しょうがないので、excelで適当にデータを作ってcsvにしたものを1GBになるまで連結しましょう」

「で、できたものがこちら」

https://1drv.ms/u/s!AqtemAEf9YLcjnO_qsMWdUsGtByr

f:id:m-tanaka:20171208181740p:plain

f:id:m-tanaka:20171103001520p:plain

「ありがとうございます!じゃあ、これでやってみますね」

 Import-AzureRmDataLakeStoreItem -AccountName numaadls -Path "C:\temp\1gb.csv" -Destination \1gbtest_1.csv

「どきどき。あっ!プログレスバーみたいなのが出てます」

(XX秒後)

「あっ!終わりました」

f:id:m-tanaka:20171208182901p:plain

f:id:m-tanaka:20171111153025p:plain

「これで次に進めるわね。どうかしら、どのくらい時間がかかったかしら?」

f:id:m-tanaka:20171103001520p:plain

「雰囲気的には1分ちょっとでしょうか? でもこのくらいなら問題ないと思います」

f:id:m-tanaka:20171111153025p:plain

「そうね、でもエンジニアとしては雰囲気ではなくてちゃんと計測しておいた方がいいわね」

f:id:m-tanaka:20171103001520p:plain

「ストップウォッチの登場ですね!陸上部だったので、ストップウォッチの計測には自信があります」

f:id:m-tanaka:20171111153025p:plain

「そう」

「残念だけど、ストップウォッチは登場しないわ」

Powershellコマンドの実行時間は、Measure-Command {計測したいコマンド} で計測できるわ

f:id:m-tanaka:20171103001520p:plain

「なるほど。勉強になります」

「つまり、こういうことですね!」

 Measure-Command {Import-AzureRmDataLakeStoreItem -AccountName numaadls -Path "C:\temp\1gb.csv" -Destination \1gbtest_1.csv}

「Enter!」

Days              : 0 

Hours             : 0 

Minutes           : 2 

Seconds           : 25 

Milliseconds      : 202 

Ticks             : 1452024191 

TotalDays         : 0.00168058355439815 

TotalHours        : 0.0403340053055556 

TotalMinutes      : 2.42004031833333 

TotalSeconds      : 145.2024191 

TotalMilliseconds : 145202.4191

「おぉ。1分ちょっとではなくて、2分ちょっとでしたね」

f:id:m-tanaka:20171111153025p:plain

「そうね、念のため5回くらい計測してみましょう」

f:id:m-tanaka:20171208182956p:plain

「10MByte/sec = 80 Mbit/sだから、まぁまぁのスピードね。リアルタイム性は必要ないから、こんなもので十分だと思うわ」

f:id:m-tanaka:20171103001520p:plain

「そうですね、ではいよいよ分析の開始ですね」

 

続く

 

第4沼 東日本と米国東部 2のあいだ (上)

f:id:m-tanaka:20171111153025p:plain

「お待たせしたわね。ちょっと仕事が立て込んでいて、軽く死んでいたわ」


f:id:m-tanaka:20171103001520p:plain

 

「心配しましたよ。1週間以上も連絡がつかなかったんですから」

f:id:m-tanaka:20171111153025p:plain

「ごめんなさい。ではさっそく続きを始めましょう」

「日本と米国の間のネットワークパフォーマンス測定をするのだけれど、Azureの東日本と米国東部では、Microsoftの高速ネットワークでつながれている可能性が高くて、検証にならないから、データの送信元にはAWSをつかいましょう」

「この実験のために久しぶりにAWSにログインしたら、はるか昔の実験用リソースが残っていて、毎月6ドル課金されていたわ。。。」

AWSの実験ではないから、AWSのEC2インスタンスの生成方法は省略するわ」

「作成したインスタンスの情報はこちら」

 

f:id:m-tanaka:20171122131451p:plain

 

 

f:id:m-tanaka:20171103001520p:plain

「なるほど、送信側がAWSの東京で、受け側がAzureの米国東部のAzure Data Lake Storeですね。送信するデータはどうやって準備するんですか?」

 

f:id:m-tanaka:20171111153025p:plain

「そうね、それなりのサイズのデータを用意しないといけないのだけれど、このコマンドを使えば簡単にダミーデータを作れるわ」

fsutil file createnew <ファイル名> <サイズ>

www.atmarkit.co.jp

f:id:m-tanaka:20171103001520p:plain

「なるほど。ではまず1GBで試してみますね」

f:id:m-tanaka:20171122210604p:plain

f:id:m-tanaka:20171122210756p:plain

これで、準備はOK

このファイルを、Data Lake Storeにアップロードして時間を測ればいいのね。

f:id:m-tanaka:20171103001520p:plain

「Azure Portalのここからアップロードでいいんですか?」

f:id:m-tanaka:20171111153025p:plain

「それだと、データが一旦Azure Portal を経由することになるから、今回の目的にはあってないわね」

「ちょっと面倒だけど、Power ShellでAzure Data Lake Storeにアップロードしましょう」

f:id:m-tanaka:20171103001520p:plain

「どうやるんですか?」

 

f:id:m-tanaka:20171111153025p:plain

ggrks.

f:id:m-tanaka:20171103001520p:plain

「えっ?」

f:id:m-tanaka:20171111153025p:plain

「ちょっと疲れたわ、また今度にしましょう予習として、ここをお

読んでおいて」

docs.microsoft.com

docs.microsoft.com

f:id:m-tanaka:20171103001520p:plain

「はーい。頑張って勉強しておきます。」


 

第3沼 日本じゃなくても大丈夫?

f:id:m-tanaka:20171111153025p:plain

「準備ができたみたいね。では、『場所』で『日本』が選択できなかった件を検証していきましょう。日本で分析できないと何が困るのかしら?」

f:id:m-tanaka:20171103001520p:plain

「それはもう、いろいろと」

f:id:m-tanaka:20171111153025p:plain

「いろいろ?説教がお望みかしら?」

f:id:m-tanaka:20171103001520p:plain

「すいません。考えます。私、ドMじゃないんです」

 うーん。何が困るんだろう?

日本にない。あるのは、「アメリカとヨーロッパ」かぁ。遠いなぁ。

っていうことは、データを送るのに時間がかかるっていうことかな?

あとは、近くにないと何となく不安だな。

 

f:id:m-tanaka:20171111153025p:plain

「いいところに気がついたわね。まずはやっぱりネットワークの性能ね。ネットワークの性能は大雑把に言って、レイテンシ(反応速度:ping応答時間など)と、スループット(単位時間あたりのデータ転送量:MB/sなど)があるわね。データ分析の場合は、ユーザの操作はあまりないから、ネックになるのはスループットということになるかしら。というわけで、さっそく計測してみましょう」

f:id:m-tanaka:20171103001520p:plain

「Let's 計測~」

 

f:id:m-tanaka:20171111153025p:plain

「まずは、送信元を用意しないといけないわね。自分のPCで計測してもいいのだけれど、それだと実際のデータセンターとAzure間の通信とはネットワーク環境が違いすぎるからあまり意味がないわね。なので、データセンター(仮)ということで、AWS (Amazon Web Services)にデータ送信元の環境を作ってみましょう」

第2沼 Azure Data Lakeを始めてみよう

f:id:m-tanaka:20171103001520p:plain

では、準備もできたところでData Lakeを始めてみようかな。

まずは、

https://portal.azure.com

にサインインして。

左上のメニューの「新規」でいいのかしら?

f:id:m-tanaka:20171112094400p:plain

え? おおすぎる。

f:id:m-tanaka:20171111153025p:plain

「Data  + Analyticsよ」

f:id:m-tanaka:20171112094635p:plain

「あ、ありがとうございます」

f:id:m-tanaka:20171111153025p:plain

「あとは、このドキュメントを読めばできるはずよ。頑張って」

docs.microsoft.com

「はい!頑張ります」

まずは、基本設定ね。

 名前。まずはnumaでいいかな?

そして、サブスクリプション?リソースグループ?

「先輩。サブスクリプションとリソースグループって何ですか?」

f:id:m-tanaka:20171111153025p:plain

サブスクリプションは、課金の単位。ほぼ請求先というのと同一よ」

「リソースグループは、まだあまり関係ないのだけれど、将来たくさんのAzureのリソースを使うようになったときの整理のために設けられている単位。りーそすグループ単位での課金状況とかが見られるようになるわ。Windowsでいうところのフォルダのようなものと考えてもらえればいいわ」

なるほど。となると次は「場所」これは「日本」でいいのかな?

f:id:m-tanaka:20171112100020p:plain

ない。「日本」がない。(2017/11/12現在)

f:id:m-tanaka:20171111153025p:plain

「あわてないで。用途を考えれば米国東部でも大丈夫なはずよ。あとで検証しましょう」

なるほど、続いてはData Lake Store?

f:id:m-tanaka:20171111153025p:plain

「分析対象のデータの置き場所ね。まだ未作成なのでここで作っておきましょう」

では、

f:id:m-tanaka:20171112100649p:plainを選択して

f:id:m-tanaka:20171112100620p:plainをクリック

f:id:m-tanaka:20171112100745p:plain

名前を決めるだけみたいね。

ではこれで設定は完了。

f:id:m-tanaka:20171112100910p:plain

作成をクリックして、後は数分待てばデプロイ完了!

f:id:m-tanaka:20171112101303p:plain

(続く)

 

第1沼 Azureをはじめてみよう

f:id:m-tanaka:20171103001520p:plain

さて、Data Lakeとかいうのをはじめてみようと思うんだけど、何をすればいいのかさっぱりわからないわ。やっぱりこういう時は先輩に聞いてみよう。

「あおいせんぱ~い。助けてください」

 

f:id:m-tanaka:20171111153025p:plain

「なにかしら?」

「Azure Data Lake Analyticsというのを使ってみたいんですが、何から始めたらいいのかわからなくて」

「問題ないわ。簡単よ」

さすが、わが社が誇るクールビューティー湖あおい先輩。頼りになるなー。

 

「必要なのは3つだけ。まずはやる気」

「十分です!」

「次にメールドレス」

「あります!」

「最後に、」

「最後に?」

「有効なクレジットカード」

「。。。?」

「大事なことなのでもう一度言うわ、クレジットカードよ」

「いえ。その。聞こえてますけど、『無料』じゃないんですね」

「ちょっとあなた!マイクロソフトだってボランティアじゃないんだから、完全無料なわけないでしょ。そこに正座。小一時間問い詰めてあげるわ」

やばい、あおい先輩の押してはいけないスイッチを押しちゃったみたい。でも「押さないで」って書いてあったら押してみたくなるよね、人間だもの。

とか、しょうもないことを考えつつ、あおい先輩のお説教を聞き流すこと55分。きっかり小一時間。こういところまじめな先輩らしいな。

f:id:m-tanaka:20171111153025p:plain

「でも。安心して。あなたは死なないわ。2万円分は無料で使えるもの(2017/11/11現在)」

「それ、先に言ってくださいよー。マイクロソフトなかなか良いやつじゃないですか」

azure.microsoft.com

f:id:m-tanaka:20171103001520p:plain

「じゃあ、お金の心配も解決したことですし、さっそくやってみます。まずは、このページの『無料で始める』をクリックして」

f:id:m-tanaka:20171111155800p:plain

 なんだこれ?

「先輩!なんか変なのでました!」

f:id:m-tanaka:20171111153025p:plain

 「はい、そこに正座。あなた新人とは言えエンジニアなんだから『変なの』はないでしょ。まずは『変』の定義を。。。」

「あのー、お説教は後ほどあらためて聞かせていただきますので、まずはこの先どうしたらいいのかを教えてもらえないでしょうか」

「まずは、その態度を改めることね」

「大変申し訳ございませんでしたっ!」

「冗談よ」

無表情すぎて、本気かと思ってしまった。

 

f:id:m-tanaka:20171111160817p:plain

「このリンクをクリックして、まずはマイクロソフトアカウントをつくるのよ」

なるほど。

f:id:m-tanaka:20171111161035p:plain

ここに、メールアドレスとパスワードを入れてNextをクリックすればいいのね。

f:id:m-tanaka:20171111161215p:plain

これは何かしら?

f:id:m-tanaka:20171111153025p:plain

「別人による登録を防ぐために、さっき入力したメールアドレスに確認用のコードが送られるの。そのコードを入力するのよ」

「これですね」

f:id:m-tanaka:20171111161612p:plain

なるほど、そのあとはよくあるぐにゃっとした文字列を入力して

電話番号の認証もあるのね

f:id:m-tanaka:20171111161855p:plain

Japanを選んで、携帯の番号を入力

SMSで受信したコードを入力したら

「完了!」

f:id:m-tanaka:20171111153025p:plain

「ではないわ。まだマイクロソフトアカウントができただけよ。まだクレジットカードを使ってないじゃない」

「そうでした」

f:id:m-tanaka:20171111162336p:plain

「ここで必要な情報を入力したら準備完了よ」

あと一息、がんばろう

携帯のSMS認証とカード情報を入れたら

f:id:m-tanaka:20171111163221p:plain

f:id:m-tanaka:20171103001520p:plain

「やったー。今度こそ終わった!」

 

f:id:m-tanaka:20171111153025p:plain

「まだよ」

えっ!まだなんかあるの?

「あなたなんのためにアカウントを作ったの? Data Lakeを始めるためでしょ。苦難の道物語はここから始まるのよ」

あれ?今なんか言い直したような気が。

(続く)

第0沼 (だい0しょう) Hello Datalake 

f:id:m-tanaka:20171103001520p:plain

はじめまして、私の名前は「青井 沼子 (あおい しょうこ)」

今はやりの、データ分析というのをはじめてみようと思っているの。とはいっても、何も知らないので一緒に勉強していきましょう。

ちなみに私のアイコンは、ここで作ってもらったの。

make.girls.moe

さっそくGoogle先生に聞いたりしながら、データ分析環境を作ってみようと思ったんだけれど、パソコンにインストールするタイプの環境は、必要なスペックが高すぎて、私のしょぼい環境では動きそうにないの。

いまはやりの、クラウドで動く分析環境を探していたら、Data Lake Analyticsというのを見つけたの。

azure.microsoft.com

これなら、ブラウザだけで始められそうなので問題なさそうね。

でも

「インテリジェントなアクションを実現するオンデマンド ジョブ分析サービス」

。。。

。。。

f:id:m-tanaka:20171109095813j:plain

f:id:m-tanaka:20171109095958j:plain

これはもうやってみるしかないわね。

 

(続く)