Upload
kuninobu-sasaki
View
2.764
Download
0
Embed Size (px)
DESCRIPTION
2013年8月27,28日のイベント "Microsoft Partner Technical Days" で使用したスライドを自前のテンプレートで再構築したものです。
Citation preview
Windows Azure
HDInsight サービス
佐々木邦暢 (@ksasakims)
日本マイクロソフト株式会社
2
Apache Hadoop
HDInsight 登場
クラスターの作成
クラスターの操作
MapReduce プログラムの開発
外部との接続
本日の内容
4
突然ですが
いま、1 TB の Web アクセスログファイルが目の前にあります。URI 毎にアクセス数を集計しなければなりません。
どうしますか?
grep sort uniq| | > output
5
分散処理の必要性
いずれにせよ、数多くのコンピューターで生成されるデータを、たった一台で分析するのは無理があります。
一人じゃムリ…
複数のコンピューターによる分散処理が必要です
手分けしよう!
6
そこで Apache Hadoop です
Apache の分散コンピューティングフレームワーク
Google の論文が契機となって誕生!
多数のサーバーで分散処理
Yahoo や Facebookで使われている高スケーラビリティ
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
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
9
Hadoop クラスターの構成要素
Hadoop クラスター
MapReduce 層
HDFS 層ファイルの登録情報を一元管理
ジョブトラッカー
タスクトラッカー
タスクトラッカー
タスクトラッカー
タスクトラッカー
Map タスク Map タスクジョブとタスクの
状態を管理
Map タスク Map タスク Reduceタスク
タスクトラッカー
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/
12
Windows Azure HDInsight Service
すぐに使えるクラウド上の Hadoop です。
現在プレビュー中
40 ノードまでのクラスタが作成可能
料金は半額
利用可能なリージョンは以下の 3 箇所
北ヨーロッパ (North Europe)
米国東部 (East US)
米国西部 (West US)
インスタンスサイズ
ヘッドノード(ネームノード)は XL
データノードは L サイズ
OS
Windows Server 2008 R2
13
HDInsight に含まれる Hadoop のバージョン
Hcatalog0.4.1
主要な関連プロジェクト
14
HDInsight Service システム構成
データ ノードネーム ノード BLOB ストレージ
Windows Azure の PaaS 機能と BLOB ストレージを活用します。
ネームノード、データノードは
どちらも Worker ロールの
インスタンスです。
多数のノードを素早く
デプロイできます。
また、Windows Azure の
「BLOB ストレージ」を、
デフォルトのファイルシステム
として利用します。
もちろん HDFS も
利用可能です。
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 等。
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 用
主なファイルシステム
17
ASV の登録と利用
asv://コンテナ名@アカウント名.blob.core.windows.net/パス名
core-site.xml で、 BLOB ストレージがデフォルトファイルシステムに設定されています。
19
管理ポータルからクラスター作成
「簡易作成」であっという間に 32 ノードまでのクラスタが作れます
「簡易作成」画面にはリージョンの指定欄が
ありませんが、ここで選択したストレージ
アカウントと同じリージョンに、
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 管理用コマンドレットで運用を自動化できます。
21
出来上がった HDInsight クラスター
23
JavaScript コンソール
“#コマンド” で、FS Shellのコマンドを呼び出せます。
“#lsr” は ”hadoop fs –lsr” に相当します。
“#fs.get” で Hadoop 上のファイルをローカルコンピューターへダウンロード。
24
Hive コンソール
クエリの結果と、実行されたMapReduce ジョブに関する情報が、ここに表示されます。
ここに HQL を入力します。
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/
27
.NET MapReduce
Hadoop Streaming API の .NET ラッパーです。 C# や Visual Basic で MapReduce ジョブを記述できます。
28
LINQ To Hive
LINQ のクエリを HIVE クエリに自動変換し、.NET プログラムから自然な形で Hadoop のデータにアクセスできます。
30
Hive ODBC ドライバー
ODBC 経由で HDinsight クラスターの Hive に接続できます。
Hive ODBC ドライバーのインストール
Hive データソースの作成
接続先テーブルの選択
31
ODBC 経由で Excel へデータ取込み
Excel 上で Hive クエリの編集/結果セットの表示ができます。
HQL 文の定義
HDInsight から Excel へ取り込まれたデータ
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