Windows Azure HDInsight サービスの紹介

33
Windows Azure HDInsight サービス 佐々木邦暢 (@ksasakims) 日本マイクロソフト株式会社

description

2013年8月27,28日のイベント "Microsoft Partner Technical Days" で使用したスライドを自前のテンプレートで再構築したものです。

Transcript of Windows Azure HDInsight サービスの紹介

Page 1: Windows Azure HDInsight サービスの紹介

Windows Azure

HDInsight サービス

佐々木邦暢 (@ksasakims)

日本マイクロソフト株式会社

Page 2: Windows Azure HDInsight サービスの紹介

2

Apache Hadoop

HDInsight 登場

クラスターの作成

クラスターの操作

MapReduce プログラムの開発

外部との接続

本日の内容

Page 3: Windows Azure HDInsight サービスの紹介
Page 4: Windows Azure HDInsight サービスの紹介

4

突然ですが

いま、1 TB の Web アクセスログファイルが目の前にあります。URI 毎にアクセス数を集計しなければなりません。

どうしますか?

grep sort uniq| | > output

Page 5: Windows Azure HDInsight サービスの紹介

5

分散処理の必要性

いずれにせよ、数多くのコンピューターで生成されるデータを、たった一台で分析するのは無理があります。

一人じゃムリ…

複数のコンピューターによる分散処理が必要です

手分けしよう!

Page 6: Windows Azure HDInsight サービスの紹介

6

そこで Apache Hadoop です

Apache の分散コンピューティングフレームワーク

Google の論文が契機となって誕生!

多数のサーバーで分散処理

Yahoo や Facebookで使われている高スケーラビリティ

Page 7: Windows Azure HDInsight サービスの紹介

7

HDFS

Hadoop の提供するもの

その 1. 分散ファイルシステム “HDFS” (Hadoop Distributed File System)

複数のコンピューターを束ねて、

一つの仮想的なファイルシステムを提供。

Hadoop クラスタに属する全ての

ノードが同じ名前空間を共有。

各ファイルは 64 MB ~ 256 MB 程度の

ブロックに分割されて、複数ノードに分散。

ブロックサイズが大きいのは、シーケン

シャルアクセスに特化しているため

各断片は最低 3 ノードに複製され、

ノード障害への耐性を持つ。

一つのファイルの複数の部分を、複数の

コンピューターで同時に処理することで、

処理を高速化することができる。

断片 1 断片 2 断片 3 断片 4

断片 1 断片 2 断片 3 断片 4

ファイル 1 断片 1 断片 2 断片 3 断片 4

ファイル 4 断片 1 断片 2 断片 3 断片 4

Page 8: Windows Azure HDInsight サービスの紹介

8

Hadoop の提供するもの

その 2. 分散プログラミングモデル “MapReduce”

2013-08-26 23:59:03 W3SVC1 192.168.0.1 GET /…2013-08-26 23:59:05 W3SVC1 192.168.0.1 GET /…2013-08-26 23:59:25 W3SVC1 192.168.0.1 GET /…2013-08-27 00:01:02 W3SVC1 192.168.0.1 GET /…2013-08-27 00:02:04 W3SVC1 192.168.0.1 GET /…

名前は一見難しげですが、実際には単純です。

(だからこそスケーラビリティがあります)

例えば右のような Web のアクセスログがあるとして、

伝統的なテキスト処理ツールによる集計はこのようなものですが、

$ cat access_log | grep /Login.aspx | sort | uniq –c > output.txt

対象ファイルの全行を頭から舐めて何らかの処理をする(この場合は検索)

中間結果を集計のためにソートする

ソートされたデータを数え上げて結果を得る

MapReduce はこういった処理をクラスター上で分散並列実行する仕組みです

Map Reduce

Page 9: Windows Azure HDInsight サービスの紹介

9

Hadoop クラスターの構成要素

Hadoop クラスター

MapReduce 層

HDFS 層ファイルの登録情報を一元管理

ジョブトラッカー

タスクトラッカー

タスクトラッカー

タスクトラッカー

タスクトラッカー

Map タスク Map タスクジョブとタスクの

状態を管理

Map タスク Map タスク Reduceタスク

タスクトラッカー

Page 10: Windows Azure HDInsight サービスの紹介
Page 11: Windows Azure HDInsight サービスの紹介

11

Windows (Azure|Server) HDInsight

Hortonworks と協業し、Windows 環境で Hadoop を提供します

元々 Java で書かれたオープンソースプロジェクトである

Hadoop ですが、 Windows 環境でスムーズに動かすた

めにはいくつか工夫が必要でした。

マイクロソフトは Hortonworks 社と協業し、 Hadoop

の Windows 環境への移植と最適化を行っています。

Hortonworks は Yahoo! で Apache Hadoop の

開発に携わっていたチームが独立して設立された企業。

“Hortonworks Data Platform” (HDP) という

Hadoop ディストリビューションを開発しており、

その Windows 版が HDInsight のコア部分です。

http://hortonworks.com/products/hdp-windows/

Page 12: Windows Azure HDInsight サービスの紹介

12

Windows Azure HDInsight Service

すぐに使えるクラウド上の Hadoop です。

現在プレビュー中

40 ノードまでのクラスタが作成可能

料金は半額

利用可能なリージョンは以下の 3 箇所

北ヨーロッパ (North Europe)

米国東部 (East US)

米国西部 (West US)

インスタンスサイズ

ヘッドノード(ネームノード)は XL

データノードは L サイズ

OS

Windows Server 2008 R2

Page 13: Windows Azure HDInsight サービスの紹介

13

HDInsight に含まれる Hadoop のバージョン

Hcatalog0.4.1

主要な関連プロジェクト

Page 14: Windows Azure HDInsight サービスの紹介

14

HDInsight Service システム構成

データ ノードネーム ノード BLOB ストレージ

Windows Azure の PaaS 機能と BLOB ストレージを活用します。

ネームノード、データノードは

どちらも Worker ロールの

インスタンスです。

多数のノードを素早く

デプロイできます。

また、Windows Azure の

「BLOB ストレージ」を、

デフォルトのファイルシステム

として利用します。

もちろん HDFS も

利用可能です。

Page 15: Windows Azure HDInsight サービスの紹介

15

なぜ BLOB ストレージ?

HDFS の代わりに BLOB ストレージを使うメリット

BLOB ストレージは、大容量・低価格・高信頼性と

三拍子そろった Windows Azure の主要サービスです。

Azure 上で稼働する多くのアプリケーションが、

BLOB ストレージにデータを保存しています。

また、“Windows Azure Diagnostics” 機能で Azure

上のサーバーから IIS ログ等のログファイルを BLOB

ストレージへ自動転送することも一般的です。

BLOB をデフォルトのファイルシステムとすることで、

これら BLOB 上のデータを HDFS へ一旦コピーするこ

となく、直接分析することができます。

データはそこにある! クラスターを消してもデータは残る

Hadoop クラスターの稼働中は、ジョブを実行していな

い時間も CPU コア数に応じた課金が発生します。

クラスターを削除してしまえば、課金は止まりますが、

HDFS は各ノードのローカルディスクであるため、

内容が失われてしまいます。

BLOB ストレージは、クラスターとは切り離されていま

すから、クラスターを削除してもデータは残ります。

様々なツールが利用可能

BLOB ストレージにアクセスする既存のツールで、

Hadoop クラスターとデータのやり取りができます。

CloudBerry Explorer for Windows Azure や

CloudXplorer, AzCopy 等。

Page 16: Windows Azure HDInsight サービスの紹介

16

Azure Storage Vault (ASV)

どういう仕組みで BLOB を Hadoop のファイルシステムにしているのか

そもそも Hadoop のファイルシステムは可換

様々なファイルシステムを扱えるように、 Hadoop はファイルシステムの抽象化層を持っています。

マイクロソフトは NativeAzureFileSystem クラスを作成し、 Azure BLOB をサポートできるようにしました。

種類 URIスキーム

Javaの実装クラス(org.apache.Hadoop)

説明

Local file fs.LocalFileSystemローカルファイルシステム

HDFS hdfs hdfs.DistributedFileSystem これがデフォルト

FTP ftp fs.ftp.FTPFileSystem FTP サイト用

S3 s3n fs.s3native.NativeS3FileSystem Amazon S3 用

AzureBLOB

asv fs.azurenative.NativeAzureFileSystem Azure BLOB 用

主なファイルシステム

Page 17: Windows Azure HDInsight サービスの紹介

17

ASV の登録と利用

asv://コンテナ名@アカウント名.blob.core.windows.net/パス名

core-site.xml で、 BLOB ストレージがデフォルトファイルシステムに設定されています。

Page 18: Windows Azure HDInsight サービスの紹介
Page 19: Windows Azure HDInsight サービスの紹介

19

管理ポータルからクラスター作成

「簡易作成」であっという間に 32 ノードまでのクラスタが作れます

「簡易作成」画面にはリージョンの指定欄が

ありませんが、ここで選択したストレージ

アカウントと同じリージョンに、

HDInsight クラスターが作成されます。

Page 20: Windows Azure HDInsight サービスの紹介

20

PowerShell を使ってクラスター作成

New-AzureHDInsightCluster -Name 名前

-SubscriptionId SUBID

-Certificate CERT -Location “West US“

-DefaultStorageAccountName ACCOUNT

–DefaultStorageAccountKey KEY

-DefaultStorageContainerName CONTAINER

-UserName ksasaki -Password xxxxxxxxx

-ClusterSizeInNodes 8

HDInsight 管理用コマンドレットで運用を自動化できます。

Page 21: Windows Azure HDInsight サービスの紹介

21

出来上がった HDInsight クラスター

Page 22: Windows Azure HDInsight サービスの紹介
Page 23: Windows Azure HDInsight サービスの紹介

23

JavaScript コンソール

“#コマンド” で、FS Shellのコマンドを呼び出せます。

“#lsr” は ”hadoop fs –lsr” に相当します。

“#fs.get” で Hadoop 上のファイルをローカルコンピューターへダウンロード。

Page 24: Windows Azure HDInsight サービスの紹介

24

Hive コンソール

クエリの結果と、実行されたMapReduce ジョブに関する情報が、ここに表示されます。

ここに HQL を入力します。

Page 25: Windows Azure HDInsight サービスの紹介
Page 26: Windows Azure HDInsight サービスの紹介

26

Hadoop は Java だけ? .NET は?

Java 以外の言語でもプログラムを開発できます!

Hadoop 自体が Java で書かれているため、

MapReduce プログラムを書く言語としては Java が

メジャーです。

しかし、 Hadoop には “Hadoop Streaming” という

仕組みがあり、およそありとあらゆる言語で

MapReduce できるようになっています。

Hadoop Streaming は、

「標準入出力に対してプログラミングするだけで、

MapReduce ジョブができあがる。」

という、ある意味 inetd のような存在です。

元より多言語対応 Microsoft .NET SDK For Hadoop

Codeplex でホストされているオープンソースプロ

ジェクトです。下記のモジュールがあります。

Hadoop Streaming を活用した “.NET MapReduce”

LINQ で Hive にクエリを行える “LINQ To Hive”

HDInsight 管理用の PowerShell コマンドレット

WebHDFS クライアント

https://hadoopsdk.codeplex.com/

Page 27: Windows Azure HDInsight サービスの紹介

27

.NET MapReduce

Hadoop Streaming API の .NET ラッパーです。 C# や Visual Basic で MapReduce ジョブを記述できます。

Page 28: Windows Azure HDInsight サービスの紹介

28

LINQ To Hive

LINQ のクエリを HIVE クエリに自動変換し、.NET プログラムから自然な形で Hadoop のデータにアクセスできます。

Page 29: Windows Azure HDInsight サービスの紹介
Page 30: Windows Azure HDInsight サービスの紹介

30

Hive ODBC ドライバー

ODBC 経由で HDinsight クラスターの Hive に接続できます。

Hive ODBC ドライバーのインストール

Hive データソースの作成

接続先テーブルの選択

Page 31: Windows Azure HDInsight サービスの紹介

31

ODBC 経由で Excel へデータ取込み

Excel 上で Hive クエリの編集/結果セットの表示ができます。

HQL 文の定義

HDInsight から Excel へ取り込まれたデータ

Page 32: Windows Azure HDInsight サービスの紹介

32

HDInsight 関連情報

“Crunch Big Data in the Cloud with Windows Azure HDInsight Service”

http://blogs.msdn.com/b/windowsazure/archive/2013/03/18/announcing-the-public-preview-of-azure-

hdinsight.aspx

“Hortonworks & Microsoft: Bringing Apache Hadoop to Windows”

http://hortonworks.com/partners/microsoft/

“HDInsight の開発”

http://blogs.msdn.com/b/windowsazurej/archive/2013/04/03/developing-for-hdinsight.aspx

“Winodws Azure HDInsight パブリック プレビュー開始!”

http://blogs.technet.com/b/ksasaki/archive/2013/03/19/winodws-azure-hdinsight.aspx

“How to Connect Excel to Windows Azure HDInsight via HiveODBC”

https://www.windowsazure.com/en-us/manage/services/hdinsight/use-excel-via-hive-odbc-driver/

Microsoft ODBC Driver For Hive

http://www.microsoft.com/en-us/download/details.aspx?id=37134

Page 33: Windows Azure HDInsight サービスの紹介