私はこのトピックを続けて、私にとって過去数年が常にITで最も興味深い分野である、 ビッグデータ 、 機械学習 、 クラウドテクノロジーとの共生という分野に焦点を移します 。
以下では、Microsoft Azureサービスの10月の発表を中心に説明します。これは、大規模データアレイのバッチ処理とリアルタイム処理、オンデマンドの高性能クラスター、機械学習アルゴリズムの幅広いサポートの可能性を提供します。
リアルタイム
HDInsightのApache Storm
今年10月(2014)に開催されたStrata + Hadoop Worldカンファレンスは、Apache Stormのサポートを発表しました。
HDInsight (オンデマンドでHadoopを提供するPaaSサービス)。
Apache Stormは、ほぼリアルタイムモードとバッチモードの両方で、高性能でスケーラブルなフォールトトレラントな分散アプリケーション実行フレームワークです。
HDInsight Stormのデータソースとして、ServiceBus QueuesまたはEvent Hubsクラウドサービスを使用できます。
10月末、 TechEd Europe 2014は、 Azure Cloudera EnterpriseとHortonworks Data Platformが事前構成済みのAzure VM(IaaSサービス)として利用可能になったことを発表しました。
Azure Event Hubs
Event Hubsは、ほぼリアルタイムモードで1秒あたり数百万のリクエストを処理できる非常にスケーラブルなサービスであり、商用運用を開始しました。
サービスの主な機能(定義に既にリストされているものを除く):
- 着信リクエストのボリューム:> 1 GB /秒。
- イベントプロデューサーの数:> 100万。
- HTTP(S)、AMQPのサポート。
- ダウンタイムなしの伸縮性スケーリング
- 順序付けをサポートする時間ベースのイベントバッファリング。
- 計画による制限。
Azure Stream Analytics
Stream Analyticsは、大量のイベントをリアルタイムで処理できるイベント処理エンジンです。 適切なクラウドサービスにふさわしいので、Stream Analyticsは1秒あたり100万を超えるリクエストの負荷を処理し、柔軟にスケーリングし、複数のデータソース(Azure Blob StorageおよびEvent Hubs)をサポートできます。 Stream Analyticsのトランスフォーメーションルールは、SQLに似た言語(できる限り!-別のSQLに似たクエリ言語)で記述されています。
サービスを使用するには、Azure Data Factoryで行われた操作と同様のアクションを実行する必要があります(少し後)-サービス自体を作成し、Webインターフェイスを介して入力データソースと出力ストリームを決定し、データ変換のクエリリクエストを作成します。
これは、抽象取引所からの株式の購入/売却の注文で2番目のろうそくを形成する要求のように見えます。
SELECT DateAdd(second,-1,System.TimeStamp) as OpenTime, system.TimeStamp as CloseTime, Security, Max(Price) as High, Min(Price) as Low, Count(Volume) as TotalVolume FROM trades GROUP BY TumblingWindow(second, 1), Security
Stream Analyticsの概念と要求により、製品Stream Insightを思い出します。 このサービスに関するドキュメントはあまりありませんが、「 はじめに... 」はすでに書かれています。
HPC
Azureバッチ
Azure Batchはオンデマンドクラスターサービスです。 このサービスにより、高性能ノードを使用して非常にスケーラブルなアプリケーションを記述し、同じタスクの多くを実行できます。
Azure Batchのサービスアプリケーションのケースは、ビッグデータの世界では伝統的なものです。タスクは、大量のデータ(単一ノードのRAMに収まらないデータ)を扱うことができます。 アプリケーション:遺伝子工学、銀行、金融取引、小売、通信、医療、政府機関、および業務に大量のデータを蓄積する商用Webサービス。
さらに、Azure Batchは、より多くのプロセッサパワーを必要とするタスクに適しています(単一ノードのCPUでは、計算に時間がかかります)。 このようなタスクには、レンダリングおよび画像処理、(エンコード)ビデオエンコードのタスクが含まれます。
以下は、Azure Batchでアプリケーションを実行するために実装する必要があるフレームワークの例です(クラスの起源が明確になるように名前空間でクラスを指定します)。
サーバー側のコードは次のようになります。
public class ApplicationDefinition { /// <summary> /// /// </summary> public static readonly Microsoft.Azure.Batch.Apps.Cloud.CloudApplication Application = new Microsoft.Azure.Batch.Apps.Cloud.ParallelCloudApplication { ApplicationName = "StockTradingAnalyzer", JobType = "StockTradingAnalyzer", JobSplitterType = typeof(MyApp.TradesJobSplitter), TaskProcessorType = typeof(MyApp.TradesTaskProcessor) }; } public class TradesJobSplitter : Microsoft.Azure.Batch.Apps.Cloud.JobSplitter { /// <summary> /// Job /// </summary> /// <returns> , </returns> protected override IEnumerable<TaskSpecifier> Split(IJob job, JobSplitSettings settings) { /* split job here */ } } public class TradesTaskProcessor: Microsoft.Azure.Batch.Apps.Cloud.ParallelTaskProcessor { /// <summary> /// /// </summary> /// <param name="task"> </param> /// <param name="settings"> </param> /// <returns> </returns> protected override TaskProcessResult RunExternalTaskProcess(ITask task, TaskExecutionSettings settings) { /* some magic */ } /// <summary> /// (tasks) Job /// </summary> /// <param name="mergeTask"> </param> /// <param name="settings"> </param> /// <returns> Job</returns> protected override JobResult RunExternalMergeProcess(ITask mergeTask, TaskExecutionSettings settings) { /* yet another magic */ } }
クライアントを呼び出します:
Microsoft.WindowsAzure.TokenCloudCredentials token = GetAuthenticationToken(); string endpoint = ConfigurationManager.AppSettings["BatchAppsServiceUrl"]; // using (var client = new Microsoft.Azure.Batch.Apps.BatchAppsClient(endpoint, token)) { // Job var jobSubmission = new Microsoft.Azure.Batch.Apps.JobSubmission() { Name = "StockTradingAnalyzer", Type = "StockTradingAnalyzer", Parameters = parameters, RequiredFiles = userInputFilePaths, InstanceCount = userInputFilePaths.Count }; Microsoft.Azure.Batch.Apps.IJob job = await client.Jobs.SubmitAsync(jobSubmission); // Job await MonitorJob(job, outputDirectory); // Job, , }
主観的に、もちろん、非周期的な実行グラフや分散LINQなどのような、より高いレベルの抽象化とエキゾチックを望みます。 Microsoft ResearchのNaiadおよびDryadプロジェクト( ロシア語 )で行われたとおりです。
サービスの簡単な概要は、 azure.microsoft.comで既に利用可能です。 単語を数えたい人のために、次のチュートリアルをご覧ください 。
動作するコードの例(上で書いた「抽象化」ではない)は、 code.msdn.com (C#)とGitHub (Python)で既に利用可能です。
Azure VM Dシリーズ
HPCに関しては、 DシリーズのAzure VMの最近の発表に注目します 。 いつものように、それはそのような発表で起こります、そして、nn%はすでにそこにあったものに加えられました。 しかし、鉄の事実に戻ると、16x CPU、112 Gb RAM、800 Gb SSDを1時間あたり2.5ドルで計算するノードが利用可能になりました(価格は2014年10月末現在です)。
その他...(カテゴリを思い付かなかった)
Azure Data Factory
Azure Data Factoryは、データストリームのオーケストレーションと変換、MS SQL Server、Azure SQL Database、Azure Blobs、Tablesなどのデータソースの監視のためのツールを提供するサービスです。
アイデアは直感的にシンプルです(プラスとしてカウントされます):サービスを作成します。 入力および出力データソースをバインドします。 パイプライン(入力データを受け入れ、それらを操作し、出力ストリームに書き込む1つ以上のアクティビティ)を作成し、表示します。 結果は次のようになります。 パイプラインの作成を除くすべてのステップをWebインターフェースを介して実行できるサービスの作業を簡素化します。
サービスの使用例はすでにGitHubにあり、「 Step by step walkthrough 」が書かれています。
機械学習
このセクションで説明するのは、もはや「ホットな」ニュースではありませんが、とにかく繰り返すのは良いことです。
最も重要なこと:最初のステップが実行されました-Azure MLパブリックプレビューはAzureで利用可能です。 Rのサポートの宣言およびRの400以上(おそらく400ではないが、確かに多く)のプリインストールパッケージ。現時点では、Vowpal Wabbitモジュールのサポートもあります。
さらに、研究プロジェクト向けにAzure for Research Awardプログラムが開始されました。その主な目標は、世界をより良い場所にすることであり、副次的な目標は、Azureプラットフォーム全般と、特にアカデミックコミュニティの間でAzure MLサービスを普及させることです。 私は両方の目標を非常に気に入っています(特に、Microsoftの「クラウド」競合他社が同じことをすることを誰も禁止していないため)。
マイクロソフトは、機械学習をテーマにした多くの刺激的なイベントも開催しました。
イベント
列車は出発しました(イベントは通過しましたが、おそらく記録は残っていました)
9月、 Microsoft Machine Learning Hackathon 2014が開催されました。
10月中旬に、 TechEd Europe 2014カンファレンスが開催され、 XaocCPSがすでにハブについて書いています
10月下旬、 Microsoft Azure Machine Learningジャンプスタートが行われました 。
電車はオンです(そして、あなたはまだそこに飛び込むことができます!)
11月15〜16日にモスクワでビッグデータハッカソンが開催されますが 、これについてはアーリマンがすでに参加しています。