VS2010でSQL AzureからEntity Data Modelを生成する
若干、感じが悪いかなと思いつつ投稿。
VS2008では、.edmxファイルをSQL Azureから生成することはできませんが、VS2010であれば生成することができます。
以下は、VS2008への注意事項をMSDNライブラリから転載。
Visual Studio 2008 で実行している場合、Entity Framework は、.edmx ファイルおよび関連するクライアント クラスを SQL Azure データベースから作成できません。モデルおよびマッピング ファイルを生成するには、SQL Server のローカル インスタンスに接続する必要があります。ただし、モデル ファイルとマッピング ファイルが作成されれば、Entity Framework は SQL Azure データベースに接続するようになります。
VS2010で、作成時のスクリーンショット
参照情報
Apache Hadoop on Windows Azureの操作例 その1
Apache Hadoop on Windows Azure CTPのアカウントを申込すれば、この情報を使用して新しいクラスタを作成することができます。もしHdoop on Azure CTPについて詳細を知りたい場合は、このBlog記事を参照してください。
コンテンツ
- 新しいHadoop ジョブ用のWindows Azureクラスタの作成
- サンプルの展開(Pi Estimator Hadoopジョブの作成)
- Word Count Hdoopジョブ作成と注意点
- MapReduceジョブとHDFS管理のためHadoopノードへリモートログイン
新しいHadoop ジョブ用のWindows Azureクラスタの作成
Hadoop on Azure CTPに接続し、Windows Liveアカウントでhttp://www.hadooponazure.comにログインします。
次の情報を入力する必要があります。
- Step1 DNS名
- Step2 クラスタサイズの選択
- Step3 クラスタにログインするためのユーザ名とパスワードの入力
- Step4 クラスタの要求
上記情報を入力し送信すると、クラスタとノードの作成が次の図のように始まります。
4つのクラスタを持つスモールサイズのクラスタを選択したので、(4ワーカーノードと1つのヘッドノードで)合計5ノードになります。ノードの作成状況は、次のように表示されます。
さらに・・・
クラスタは新しいHadoopジョブを作成する準備が整うと、次のような表示になります。
サンプルの展開(Pi Estimator Hadoopジョブの作成)
Windows Azure上にクラスタを作成すると、いくつかのサンプルがあらかじめ用意されています。サンプルを使用するために、「Sample」を選択します。
Hadoopサンプルで、「Pi Estimator」を選択します。
「Pi Estimator」のサンプル詳細が表示されます。詳細と説明を読んだ後、ボタンをクリックして、クラスタにジョブをデプロイすることができます。
新しいジョブウィンドウが開き、Hdoopジョブで使用するパラメータの追加と確認をします。パラメータを確認したら、「Execute Job」をクリックします。
Hadoopジョブが開始され、次のような通知が表示されます。
ジョブが完了すると、次のように結果が表示されます。
Pi Example
•••••
Job Info
Status: Completed Sucessfully
Type: jar
Start time: 12/29/2011 6:21:49 AM
End time: 12/29/2011 6:22:56 AM
Exit code: 0Command
call hadoop.cmd jar hadoop-examples-0.20.203.1-SNAPSHOT.jar pi 16 10000000Output (stdout)
Number of Maps = 16
Samples per Map = 10000000
Wrote input for Map #0
Wrote input for Map #1
Wrote input for Map #2
Wrote input for Map #3
Wrote input for Map #4
Wrote input for Map #5
Wrote input for Map #6
Wrote input for Map #7
Wrote input for Map #8
Wrote input for Map #9
Wrote input for Map #10
Wrote input for Map #11
Wrote input for Map #12
Wrote input for Map #13
Wrote input for Map #14
Wrote input for Map #15
Starting Job
Job Finished in 63.639 seconds
Estimated value of Pi is 3.14159155000000000000
Errors (stderr)11/12/29 06:21:53 INFO mapred.JobClient: Running job: job_201112290558_0001
11/12/29 06:21:54 INFO mapred.JobClient: map 0% reduce 0%
11/12/29 06:22:20 INFO mapred.JobClient: map 12% reduce 0%
11/12/29 06:22:23 INFO mapred.JobClient: map 50% reduce 0%
11/12/29 06:22:32 INFO mapred.JobClient: map 62% reduce 0%
11/12/29 06:22:35 INFO mapred.JobClient: map 100% reduce 0%
11/12/29 06:22:38 INFO mapred.JobClient: map 100% reduce 16%
11/12/29 06:22:44 INFO mapred.JobClient: map 100% reduce 100%
11/12/29 06:22:55 INFO mapred.JobClient: Job complete: job_201112290558_0001
11/12/29 06:22:55 INFO mapred.JobClient: Counters: 27
11/12/29 06:22:55 INFO mapred.JobClient: Job Counters
11/12/29 06:22:55 INFO mapred.JobClient: Launched reduce tasks=1
11/12/29 06:22:55 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=189402
11/12/29 06:22:55 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
11/12/29 06:22:55 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
11/12/29 06:22:55 INFO mapred.JobClient: Rack-local map tasks=1
11/12/29 06:22:55 INFO mapred.JobClient: Launched map tasks=16
11/12/29 06:22:55 INFO mapred.JobClient: Data-local map tasks=15
11/12/29 06:22:55 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=22906
11/12/29 06:22:55 INFO mapred.JobClient: File Input Format Counters
11/12/29 06:22:55 INFO mapred.JobClient: Bytes Read=1888
11/12/29 06:22:55 INFO mapred.JobClient: File Output Format Counters
11/12/29 06:22:55 INFO mapred.JobClient: Bytes Written=97
11/12/29 06:22:55 INFO mapred.JobClient: FileSystemCounters
11/12/29 06:22:55 INFO mapred.JobClient: FILE_BYTES_READ=2958
11/12/29 06:22:55 INFO mapred.JobClient: HDFS_BYTES_READ=3910
11/12/29 06:22:55 INFO mapred.JobClient: FILE_BYTES_WRITTEN=371261
11/12/29 06:22:55 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=215
11/12/29 06:22:55 INFO mapred.JobClient: Map-Reduce Framework
11/12/29 06:22:55 INFO mapred.JobClient: Map output materialized bytes=448
11/12/29 06:22:55 INFO mapred.JobClient: Map input records=16
11/12/29 06:22:55 INFO mapred.JobClient: Reduce shuffle bytes=448
11/12/29 06:22:55 INFO mapred.JobClient: Spilled Records=64
11/12/29 06:22:55 INFO mapred.JobClient: Map output bytes=288
11/12/29 06:22:55 INFO mapred.JobClient: Map input bytes=384
11/12/29 06:22:55 INFO mapred.JobClient: Combine input records=0
11/12/29 06:22:55 INFO mapred.JobClient: SPLIT_RAW_BYTES=2022
11/12/29 06:22:55 INFO mapred.JobClient: Reduce input records=32
11/12/29 06:22:55 INFO mapred.JobClient: Reduce input groups=32
11/12/29 06:22:55 INFO mapred.JobClient: Combine output records=0
11/12/29 06:22:55 INFO mapred.JobClient: Reduce output records=0
11/12/29 06:22:55 INFO mapred.JobClient: Map output records=32
戻るために矢印ボタンをクリックし、次のようにジョブ数と履歴が表示されます。
Word Count Hdoopジョブ作成と注意点
この例では、理解しやすさを優先するため、いくつかの意図的なエラーを残しつつ新しいHadoopジョブを開始します。Sampleにアクセスし、Wordcountサンプルジョブをクラスタにデプロイします。全てのパラメーターを確認し、次のようにジョブを開始します。
補足:次の二つの理由でエラーになります
- まだクラスタにdavinci.txtをアップロードしていない
- 誤ったパラメーターを設定している
ジョブが開始すると、すぐにこのエラーが発生します。
次のようなクラス名を見ることができ、このクラス名が誤っているためエラーになります。正しいパラメーター「wordcount」に修正して、ジョブを再起動します。
すると、次のような別のエラーが発生します。
この問題を解決するために、クラスタにファイル名「davinci.txt」のテキストファイルをアップロードします(この手順についての詳細な情報は、Wordcountサンプルページを参照してください)。
ファイルをアップロードするため、対話形式のJavaScriptコンソールを使用します。
対話形式のJavaScriptコンソールが開いたら、ローカルマシーンからテキストファイルを選択するために、fs.put()コマンドを使用し、クラスタのHDFSファイルシステムのフォルダーにアップロードできます。
ファイルアップロードが完了したら、次のような結果メッセージが返ってきます。
再度、ジョブを実行すると、おそらく次のような結果が表示されます。この問題を解決するために、2つ目のパラメータで、新しいアウトプットディレクトリ名を通す必要があります。
WordCount Example
Job Info
Status: Completed Successfully
Type: jar
Start time: 12/29/2011 5:33:00 PM
End time: 12/29/2011 5:33:58 PM
Exit code: 0Command
call hadoop.cmd jar hadoop-examples-0.20.203.1-SNAPSHOT.jar wordcount /example/data/davinci.txt DaVinciAllTopWords
Output (stdout)
Errors (stderr)
11/12/29 17:33:02 INFO input.FileInputFormat: Total input paths to process : 1
11/12/29 17:33:03 INFO mapred.JobClient: Running job: job_201112290558_0003
11/12/29 17:33:04 INFO mapred.JobClient: map 0% reduce 0%
11/12/29 17:33:29 INFO mapred.JobClient: map 100% reduce 0%
11/12/29 17:33:47 INFO mapred.JobClient: map 100% reduce 100%
11/12/29 17:33:58 INFO mapred.JobClient: Job complete: job_201112290558_0003
11/12/29 17:33:58 INFO mapred.JobClient: Counters: 25
11/12/29 17:33:58 INFO mapred.JobClient: Job Counters
11/12/29 17:33:58 INFO mapred.JobClient: Launched reduce tasks=1
11/12/29 17:33:58 INFO mapred.JobClient: SLOTS_MILLIS_MAPS=29185
11/12/29 17:33:58 INFO mapred.JobClient: Total time spent by all reduces waiting after reserving slots (ms)=0
11/12/29 17:33:58 INFO mapred.JobClient: Total time spent by all maps waiting after reserving slots (ms)=0
11/12/29 17:33:58 INFO mapred.JobClient: Rack-local map tasks=1
11/12/29 17:33:58 INFO mapred.JobClient: Launched map tasks=1
11/12/29 17:33:58 INFO mapred.JobClient: SLOTS_MILLIS_REDUCES=15671
11/12/29 17:33:58 INFO mapred.JobClient: File Output Format Counters
11/12/29 17:33:58 INFO mapred.JobClient: Bytes Written=337623
11/12/29 17:33:58 INFO mapred.JobClient: FileSystemCounters
11/12/29 17:33:58 INFO mapred.JobClient: FILE_BYTES_READ=467151
11/12/29 17:33:58 INFO mapred.JobClient: HDFS_BYTES_READ=1427899
11/12/29 17:33:58 INFO mapred.JobClient: FILE_BYTES_WRITTEN=977063
11/12/29 17:33:58 INFO mapred.JobClient: HDFS_BYTES_WRITTEN=337623
11/12/29 17:33:58 INFO mapred.JobClient: File Input Format Counters
11/12/29 17:33:58 INFO mapred.JobClient: Bytes Read=1427785
11/12/29 17:33:58 INFO mapred.JobClient: Map-Reduce Framework
11/12/29 17:33:58 INFO mapred.JobClient: Reduce input groups=32956
11/12/29 17:33:58 INFO mapred.JobClient: Map output materialized bytes=466761
11/12/29 17:33:58 INFO mapred.JobClient: Combine output records=32956
11/12/29 17:33:58 INFO mapred.JobClient: Map input records=32118
11/12/29 17:33:58 INFO mapred.JobClient: Reduce shuffle bytes=466761
11/12/29 17:33:58 INFO mapred.JobClient: Reduce output records=32956
11/12/29 17:33:58 INFO mapred.JobClient: Spilled Records=65912
11/12/29 17:33:58 INFO mapred.JobClient: Map output bytes=2387798
11/12/29 17:33:58 INFO mapred.JobClient: Combine input records=251357
11/12/29 17:33:58 INFO mapred.JobClient: Map output records=251357
11/12/29 17:33:58 INFO mapred.JobClient: SPLIT_RAW_BYTES=114
11/12/29 17:33:58 INFO mapred.JobClient: Reduce input records=32956
再度、同じジョブを実行すると次のような結果が表示されます。
WordCount Example
•••••
Job InfoStatus: Failed
Type: jar
Start time: 12/29/2011 5:46:11 PM
End time: 12/29/2011 5:46:13 PM
Exit code: –1Command
call hadoop.cmd jar hadoop-examples-0.20.203.1-SNAPSHOT.jar wordcount /example/data/davinci.txt DaVinciAllTopWords
Output (stdout)
Errors (stderr)
org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory DaVinciAllTopWords already exists
at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:134)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:830)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:791)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:791)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:465)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:494)
at org.apache.hadoop.examples.WordCount.main(WordCount.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.hadoop.util.RunJar.main(RunJar.java:156)
MapReduceジョブとHDFS管理のためHadoopノードへリモートログイン
Windows AzureでApache Hdoopを起動させれば、メインノード(仮想マシーン)にリモート接続でき、次のような通常タスクを実行することができます。
- Hadoop Map/Reduce ジョブ管理
- HDFS管理
- 普通のネームノード管理タスク
クラスタ管理画面で、ログインするために「Remote Desktop」ボタンを選択します。
クラスタ作成時に選択したのと同じユーザ名とパスワードを使用します。クラスタメインノードVMにログインしたら、最初にすることは、マシンのIPアドレスを確認することです。そして、タスクを実行するためにwebブラウザを開き、IPアドレスと管理ポートを指定して接続します。
- Map/Reduceジョブ用の管理ポートは50030です。
- HDFS管理用ポートは50070です。
Hadoop Map/Reduceジョブ管理を使用するために、http://<ローカルマシーンのIPアドレス>:50030/を使用します。
Hadoopネームノードの詳細は、http://<ローカルマシーンのIPアドレス>:50070/を使用します。
HDFSでファイルを開くために、「Browse File System Link」を選択します。
元情報
- Apache Hadoop on Windows Azure Part 1- Creating a new Windows Azure Cluster for Hadoop Job
- Apache Hadoop on Windows Azure Part 2 – Creating a Pi Estimator Hadoop Job
- Apache Hadoop on Windows Azure Part 3 – Creating a Word Count Hadoop Job with a few twists
- Apache Hadoop on Windows Azure Part 4- Remote Login to Hadoop node for MapReduce Job and HDFS administration
- Apache Hadoop on Windows Azure Part 5 – Running 10GB Sort Hadoop Job with Teragen, TeraSort and TeraValidate Options
SQL Azure Labsサービス「SQL Azure互換性確認サービス」がリリース
SQL Azure Labsの新しいサービスとして、既存のSQL ServerデータベースをSQL Azureに移行する際に、互換性問題が無いかをチェックしてくれる「SQL Azure互換性確認サービス」の提供が始まりました。
- SQL Server Data Tools (SSDT) CTP4を使用して、データベースから.dacpacファイルを出力します。SqlPackage.exeを使用するか、データべーうをSSDTプロジェクトにインポートしビルドすることで、.dacpacファイルを作成できます。SQL Server 2005、2008、2008 R2、2012(CTPまたはRC0)をサポートしています。
- SQL Azure互換性確認サービスに.dacpacをアップロードすると、互換性レポートを受け取ることができます。互換性レポートには、SQL Azureでサポートしていないオブジェクトや移行する前に修正する必要のあるスキーマオブジェクト一覧が掲載されます。
参考
Microsoft MVP 2012–SQL Azure を受賞させていただきました
おかげさまで2012年もMicrosoft MVP(Most Valuable Professional)を受賞することができました。
昨年に続き2回目の受賞となります。
受賞カテゴリは引き続きSQL Azureです。
これもひとえに皆様方の温かいご支援、ご協力のおかげと深く感謝しております。
引き続き、SQL Azure、SQL Serverを中心に情報展開していきたいと思います。
まだまだ至らない点ばかりですが、今後ともご指導・ご鞭撻のほど、よろしくお願いいたします。
2011年度(2010/10~2011/9)活動内容
- MSDN/TechNetフォーラム、MS Answersでの回答
- Twitter(@SQLAzureJP)での情報発信
- TechNet wikiのSQL Azure関連情報の和訳
- オンラインメディア 執筆3回
「IT ProのためのWindows Azure Platform運用管理ガイド 1.0」情報提供
Think IT 第2回 Windows Azureコンピューティングサービス
gihyo.jp 第1回 SQL Azureとは何か[その1] - インタビュー
DB online 日本初!SQL Azure MVPは覆面エバンジェリスト?! - 蒼の王座/ここのサイトですね
- SQL Azure Migration Wizard(SQLAzureMW)の日本語化
作者に和訳提供したら、国際化対応してくれる?と打診したら快諾していただき日本語対応が実現 - コミュニティでの登壇7回
わんくま同盟、SQLTO、Community Open Day、インストールマニアックス、極東ITエンジニアグループ、techparty(SQLTO)、Jazug1周年 - Microsoft Conference Digital 登壇
- G-CLOUD Magazine 2011 執筆
Windows Azure platform特集においてSQL Azureネタ - コミュニティのスタッフ
SQLTO、まっちゃ445、Japan Azure User Group、極東ITエンジニアグループ
震災対応なんかもしたりしましたねー。 - NDAなMVP活動
幾つかの内部対応をごにょごにょ。某MLへのSQL Azureフィードバック。