バックエンドサービスに日の目を当てて愛でましょう...
DESCRIPTION
バックエンドサービス系の紹介TRANSCRIPT
バックエンドサービスに日の目を 当てて愛でましょう
~メディアサービス&HDInsight編~
2013年9月7日
#jazug
@statemachine & @normalian
自己紹介
• 割と普通 ( @normalian )
– 社蓄★戦士(キリッ
– Windows Azure と ASP.NET とか得意です
– JavaEE5 とか JavaEE6 とかも得意です
– Microsoft MVP for Windows Azure 2010~
2
自己紹介
• @statemachine
– 脱社蓄(キリッ
– 今の仕事は、ルンバ監視員?!
3
4
はじめに
メディアサービスとは
HDInsight とは
まとめ
今回注目するサービス
Windows Azure メディアサービス
HDInsight
その他のバックエンドサービス
• TRAFFIC MANAGER
– データセンタ間でトラフィックを割り振る
• サービスバス
– 通知ハブを利用したモバイルデバイスのプッシュ通知
• 復旧サービス
– オフラインも含めたバックアップサービス
• BIZTALK SERVICE
– BtoB 向けエンタープライズサービスの構築
等々、他にも色々と
7
はじめに
メディアサービスとは
HDInsight とは
まとめ
8
メディアサービスの概要
管理ポータルの利用
アプリケーションの開発
メディアサービスの全体像
9
http://www.microsoft.com/en-us/download/details.aspx?id=38195
様々なデバイスに配信可能
3G 等の低速回線
ブロードバンド回線
低画質
高画質
DP 向け
Smooth Streaming
HTTP Live Streaming
ブロードバンド回線
開発者
Windows Azure メディアサービス
… 配信制御
DP … Dynamic Package
元動画
一つの動画ファイルで複数形式で配信可
アップロード
11
管理ポータルの利用
① アップロード
② エンコード
③ 配信制御
④ スケールアウト
①アップロード
12
• ローカル or ストレージ(BLOB) から動画ファイルをアップロード可能
②エンコード(1/2)
• H264 形式の様々な動画ファイルをエンコード可能
13
大容量回線向け動画
Smooth Streaming 向け動画
Dynamic Package 向け
iOS 向け
※注 WebM、Ogg 形式はエンコーディングできない
②エンコード(2/2)
• [ジョブ] タブから、動画ファイルのエンコード進捗を確認
14
ジョブの進捗状況
③配信制御
15
• ストリーミング形式動画
⁃ http://[メディアサービスアカウント名].origin.mediaservices.windows.net/<中略>.ism/Manifest
• 非ストリーミング形式動画
⁃ https://[ストレージサービスアカウント名].blob.core.windows.net/asset-<中略>
[発行] ボタンで動画を公開
④スケールアウト(1/2)
• その 1 :「エンコード」のリソースを制御
16
④スケールアウト(2/2)
• その 2 :「ストリーム配信」のリソースを制御
17
18
アプリケーションの開発
① NuGet での SDK 取得
② コマンドラインの利用
19
① NuGet での SDK 取得
• [NuGet パッケージ管理] から検索
「Media Service」で検索
※注 .NET Framework、Java 向けの SDK のみ提供
• 利用可能な PowerShell コマンド
• PowerShell の構文例
② コマンドラインの利用
20
PS C:¥> New-AzureMediaServicesAccount -Name "mymediademo“ -StorageAccountName "trifonov1“ -Location "West US"
21
ストアアプリでの動画再生demo ...
この辺を demo
22
はじめに
メディアサービスとは
HDInsight とは
まとめ
23
HDInsight の概要
管理ポータルの利用
アプリケーションの開発
HDInsight の概要
• Windows Azure 上でビックデータを扱う機能を提供
• Hive, Pig 等のコンポーネントを構築する手間を軽減
• クラスタ構築の管理の手間を軽減
※注 現在は Preview 中のため、アメリカ合衆国西部 or 北ヨーロッパでのみ利用可能
Hadoop コア部分
Hive, Pig 等の大規模データを取り扱うためのコンポーネント群
25
管理ポータルの利用
① サービスの作成
② リモートデスクトップの接続が可能
③ 管理サイト
ご利用のその前に、 プレビュー申し込みが必要 Try it now!!
サービスの作成(1/2)
• 4 ノード~ 32 ノードを設定可能
• アメリカ合衆国西部 、北ヨーロッパでのみ利用可能
VMサイズ固定 ヘッドノード XL × 1 データノード L × n
サービスの作成(2/2)
• HDInsight アカウントと同一のデータセンタのストレージサービスをアタッチする
リモートデスクトップの接続が可能
Hadoop コマンドの実行が可能
ノードの状態を閲覧可能
pig, hive, sqoop がインストール済
管理サイト
サンプル実行、リモートデスクトップ、モニタリング等の細かな処理が可能
30
アプリケーションの開発
① HDInsight Server (Azureと同じ環境が試せる)
② NuGet での SDK 取得
③ C# でかける M/R
HDInsight Server
• Web PI でインストール可能 ただし 64bitのみ。Windows上で簡単に Hadoop環境を構築できる
33
NuGet での SDK 取得 • install-package Microsoft.Hadoop.MapReduce
• install-package Microsoft.Hadoop.Hive
• install-package Microsoft.Hadoop.WebClient
• install-package Microsoft.WindowsAzure.Management.HDInsight
• install-package Microsoft.Hadoop.Avro
34
C# でかける M/R • Map / Reduce public class Mapper : MapperBase { private char[] delimiterChars = {' ', ',', '.', ':', ';', '¥'','¥t'}; public override void Map(string inputLine, MapperContext context) { var words = inputLine.Split(delimiterChars); foreach (var word in words) { if (!string.IsNullOrEmpty(word)) { context.EmitKeyValue(word, "1"); } } } }
public class Reducer : ReducerCombinerBase { public override void Reduce(string key, IEnumerable<string> values, ReducerCombinerContext context) { context.EmitKeyValue(key, values.Count().ToString()); } }
実行方法 • StreamingUnit Hadoopサービス外で実行
• HDInsight Server (localhost)上で実行
var outputData = StreamingUnit.Execute<Mapper, Reducer>(File.ReadAllLines(name));
static void Run() { var hadoop = Hadoop.Connect(); hadoop.MapReduceJob.ExecuteJob<MyJob>(); } public class MyJob : HadoopJob<Mapper, Reducer> { public override HadoopJobConfiguration Configure(ExecutorContext context) { var config = new HadoopJobConfiguration { InputPath = "input/wc/aristotle-history-78.txt", OutputFolder = "output/wc" }; return config; } }
• Windows Azure HDInsight
Uri azureCluster = new Uri("https://pnopcluster.azurehdinsight.net:563"); var clusterUserName = "admin"; var clusterPassword = "Hello123!!"; var hadoopUserName = "Hadoop"; var azureStorageAccount = "pnopclusterstorage.blob.core.windows.net"; var azureStorageKey = "ストレージキー";
var azureStorageContainer = "pnopcluster"; bool createContinerIfNotExist = true; var hadoop = Hadoop.Connect(azureCluster, clusterUserName, hadoopUserName, clusterPassword, azureStorageAccount, azureStorageKey, azureStorageContainer, createContinerIfNotExist); hadoop.MapReduceJob.ExecuteJob<MyJob>();
実行方法
ターゲットプラットフォーム は、x64で
37
サンプル実行の demo ...
実行例
実行結果
40
サンプル実行の demo ...
実行例
実行結果
43
はじめに
メディアサービスとは
管理ポータルからの利用
ソースコードからの利用
まとめ
44
まとめ
• メディアサービス
– 管理ポータルで操作概要をつかみましょう
– .NET SDK、Java SDK を利用した開発が可能
– 動的エンコーディングが便利
• HDInsight
– Windows 版 Hadoop + α、Windows Azure 上でのビックデータを解析する機能提供している
– 素の Hadoop を利用するより大分便利
– もちろん C# での開発も可能
45
参考 – メディアサービス
• Demo – how to create HLS and Smooth Streaming assets using dynamic packaging http://mingfeiy.com/demo-how-to-create-hls-and-smooth-streaming-assets-using-dynamic-packaging/
• How to use Windows Azure PowerShell for Media Services http://www.gtrifonov.com/2013/08/24/how-to-use-windows-azure-powershell-for-media-services/
46
参考 – HDInsight
• patterns & practices - Windows Azure Guidance Part 4, Developing Big Data Solutions on Windows Azure http://wag.codeplex.com/releases/view/103405
• Windows Azure HDInsight サービス入門 http://www.windowsazure.com/ja-jp/manage/services/hdinsight/introduction-hdinsight/