Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Azure Storage Data Movement Library Pageblob Optimize

3,580 views

Published on

Azure Storage Data Movement Library における、Pageblob のダウンロード 最適化
AzCopyや、DMLが速い理由と実装の概要

Published in: Technology
  • Be the first to comment

Azure Storage Data Movement Library Pageblob Optimize

  1. 1. Azure Storage Data Movement Library PageBlob Download kyrt / Takekazu Omi takekazu.omi@kyrt.in 2015/9/5 R.1.1
  2. 2. 2015/9/5 kyrt inc. 2
  3. 3. 自己紹介 近江 武一 JAZUG Azure Storage 担当(自称) Microsoft MVP for Azure http://www.slideshare.net/takekazuomi kyrt.in github.com/takekazuomi white paper 監訳 2015/9/5 kyrt inc. 3
  4. 4. Data Movement Library Azure Storage のデータ転送ツール ⇨Azure Storage用のETLライブラリ的な位置付け kyrt inc. 42015/9/5 DML Matrix 元/先 Local Blob File Url Local なし DownloadAsync DownloadAsyn c なし Blob UploadAsync CopyAsync CopyAsync CopyAsync File UploadAsync CopyAsync CopyAsync CopyAsync
  5. 5. なんのためにあるのか? 大量のデータ転送用に AzCopy というツー ルがある Azure Storage Client Library で、AzCopyと 同じパフォーマンスを出すのは結構大変 ⇨普通に書くとかなり違う一桁違うことも kyrt inc. 52015/9/5
  6. 6. 結構大変ってどういうこと? Azure Storage の性能を限界まで引き出す ためには特性に合わせたチューニング が・・・・ 基本戦略 1. 並列化 2. 転送量の最小化 kyrt inc. 62015/9/5
  7. 7. Page Blob Download 最適化 例としてPage Blob の話をします Page Blobは、Azure の仮想マシンのDISKを 提供する仕組み。 ⇨vhd を page blob に配置 NTFSでは、File はsparse file になる kyrt inc. 72015/9/5
  8. 8. Page Blob での sparse file の実装 Azure Page Blob も、sparse file つまり、データの入ってないところは、 ダウンロードのときにスキップできる これが、最適化の例 Storage SDKだと、GetPageRangesAsync()で 使っている部分を拾える kyrt inc. 82015/9/5
  9. 9. Data Movement Library を使うと、 この辺りを勝手にやってくれる kyrt inc. 92015/9/5
  10. 10. kyrt inc. 102015/9/5 foreach (var pageRange in await this.pageBlob.GetPageRangesAsync( rangesSpan.StartOffset, rangesSpan.EndOffset - rangesSpan.StartOffset + 1, accessCondition, Utils.GenerateBlobRequestOptions(this.Location.BlobRequestOptions), Utils.GenerateOperationContext(this.Controller.TransferContext), this.CancellationToken)) { rangeList.Add(new Range() { StartOffset = pageRange.StartOffset, EndOffset = pageRange.EndOffset, HasData = true }); } https://github.com/Azure/azure-storage-net-data-movement/blob/master/lib/TransferControllers/TransferReaders/PageBlobReader.cs#L70
  11. 11. 並列化実装の話は http://kyrt.in/2015/09/25/intro_azure_storage_d ata_movement_library.html kyrt inc. 112015/9/5
  12. 12. 参照 2015/9/5 kyrt inc. 12
  13. 13.  Introducing Azure Storage Data Movement Library Preview ⇨ http://blogs.msdn.com/b/windowsazurestorage/archive/2015/09/23/ introducing-azure-storage-data-movement-library-preview.aspx  Getting the Page Ranges of a Large Page Blob in Segments ⇨ http://blogs.msdn.com/b/windowsazurestorage/archive/2012/03/26/ getting-the-page-ranges-of-a-large-page-blob-in-segments.aspx  AzCopy コマンド ライン ユーティリティの概要 ⇨ https://azure.microsoft.com/ja-jp/documentation/articles/storage- use-azcopy/ kyrt inc. 132015/9/5

×