effective 'hadoop on azure' ~hdinsight とゆかいな...

Post on 22-May-2020

2 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

ROOM

D

数多くのコンピューターやデバイスで生成されるデータを、たった一台で分析するのは限界があります。

一人じゃムリ…

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

手分けしよう!

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

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

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

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

http://hadoop.apache.org/

HDInsight 最新情報

Azure データセンター

サブネット1

サブネット2

仮想ネットワーク(例: 10.1.0.0/16)

Azure仮想マシン

HDInsight クラスター

Azure VM(IaaS)との連携が容易に

サイズ コア数 メモリ(GB) 備考

A3 4 7汎用インスタンス

A4 8 14

A6 4 28 Aシリーズのメモリ集中型A7 8 56

A10 8 56 高性能インスタンスXeon E5-2670

2.6 GHzA11 16 112

D3 4 14

Aシリーズより高速なCPUと大きなメモリ

SSDを装備

D4 8 28

D12 4 28

D13 8 56

D14 16 112

ゲスト OS は

Ubuntu 12.04 LTS

Ambari による管理

現在のところ以下の

4リージョンで利用可能

US South Central

US East 2

Europe North

Asia South East

Cloudera Enterprise

CDH 5

Hortonworks Data Platform

HDP 2.2

Hortonworks Sandbox シングルノード構成の

テスト用 HDP

いずれも、Azure の

「仮想マシン」機能を使った Linux

版のクラスタです

HDInsight アーキテクチャおさらい

HDInsight

その他のHadoop on Azure

Windows 版

Linux 版

CDH(Cloudera)

HDP(Hortonworks)

“WASB”

ブロック BLOB をダイレクトに使う

“HDFS on BLOB”

Azure 仮想マシンのデータディスクを

束ねて HDFS を構成

WASB

HDInsight の

デフォルト

ファイルシステム

個々のファイルは

ブロックBLOB

同時に読み書きする

ファイル数が増えると

スループットも増大

HDInsight データノード

NativeAzureFileSystem

001.log

002.log

003.log

004.log

005.log

NativeAzureFileSystem

NativeAzureFileSystem

BLOB ストレージ

データディスク

Azure VMによるデータノード

データディスク

Azure VMによるデータノード

データディスク

BLOBキャッシュ

BLOBキャッシュ

個々のVHDは

ページBLOB

Hadoop は

これをローカル

ディスクだと

思ってHDFSを

組むが、実際は

リモート

Disk1.vhd

Disk2.vhd

Disk3.vhd

Disk4.vhd

Disk5.vhd

Disk6.vhdBLOBキャッシュ

M

Extent Nodes (EN)

Paxos

フロントエンド層 FE

書き込み要求

M

M

Partition

Server

Partition

Server

Partition

Server

Partition

Server

Partition

MasterLock

Service

Ack

パーティション層

ストリーム層

FE FE FE FE

コンテナ名 + BLOB 名

Azure 仮想マシンの「1ディスク 500 IOPS」はここから来ています。

http://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/

WASB

HDFSon

BLOB

001.log

002.log

003.log

004.log

EN

EN

EN

EN

EN

EN

PS

PS

PS

PS ENEN

001.log

002.log

003.log

004.log

disk1.vhd

PS = パーティション サーバー

EN = エクステント ノード

001.log

002.log

003.log

004.log

EN

EN

EN

EN

EN

EN

PS

PS

PS

PS ENEN

http://azure.microsoft.com/en-us/documentation/articles/storage-scalability-targets/

リージョン 操作スループット (Gbps)

GRS LRS

USRead 20 30

Write 10 20

US以外Read 10 15

Write 5 10

GRS: 地理冗長 = 2リージョンにまたがる 6 多重複製

LRS: ローカル冗長 = 1リージョン内での 3多重複製

SQL on Hadoop の活用

Mapper

Reducer

左の例は、単語毎の出現回数を数える Map 処理。

StringTokenizer を使って自分で文字列を単語単位に

分解し、「いま、”・・・”という単語があった」と

記録(OutputCollector に出力)していく。

「Hadoop は非構造化データの処理に向く」というのは、

「単なる文字列を全部自分で処理する」ということ!

こちらは Reduce 処理。

Map 処理の出力は、Hadoop によってキー毎に集約され、

reduce メソッドに渡される。イメージとしては、

(“単語1”: [1,1,1])

(“単語2”: [1,1])

のような「キー:値」形式のデータ。

「“単語1”は値が3つ入っているので3回出現した」、

という感じで数えていく。

Hive, Impala, Presto...

SQL(的な)クエリで Hadoop に対する処理を行うことのできる関連プロジェクトがいくつか

あります。おそらく一番歴史が長くて有名なのが、Facebookによって開発された”Hive”です。

(https://hive.apache.org/)

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 /…

こういうファイルを

date time sitename s-ip method uri

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-26 00:01:02 W3SVC1 192.168.0.1 GET /...

2013-08-26 00:02:04 W3SVC1 192.168.0.1 GET /...

こんなテーブルだと思ってクエリを投げられます

HDInsight 専用の Web 画面から Hive を利用できます

クエリの実行

ファイルシステムの探索

Visual Studio から Hive のテーブル作成やジョブ投入

ジョブの出力結果や

ログも確認可能

テーブル名等の補完機能

クラスタ作成

Hive ジョブ投入

多数の PC から収集した操作ログを週次のバッチ処理で分析

Hive

ジョブ

実行

スループット: 高い

レイテンシも: 大きい

MapReduceに依存しない、高速な分散 SQL エンジン

オーバーヘッドを回避するため、

MapReduceを使わずHDFSに直接アクセス。

HiveQL のサブセットでクエリを記述。

「速い Hive」的に使える。

Cloudera Enterprise で利用可能

Azure Marketplace に試用版の

テンプレートが用意されています。

http://tez.apache.org/

set hive.execution.engine=mr;

set hive.execution.engine=tez;

72.8

14.4

MapReduce Tez

61,000,000行(10GB) のデータを4ノードで処理

Tez を有効にするだけで

5 倍の高速化

https://maniax.jp/

• アクセス数の多いURI:上位10件• 多く利用されているユーザーエージェント:上位10件• URI ごとの平均レスポンスタイム: 長いほうから10件

TuningManiax ~ Hadoop コース ~

Azure Storage Analytics のログ解析を HDInsight の Hive で

まず、ログの記録を

有効にします。

http://azure.microsoft.com/ja-jp/documentation/articles/storage-monitor-storage-account/

旧ポータルでも OK

BLOB ストレージにあるものは HDInsight にとって格好の標的

$logs コンテナにログファイルが作成されます。

読むのは結構大変です…※ しかも改行が LF なので Windows にやさしくありません

https://msdn.microsoft.com/ja-jp/library/azure/hh343259.aspx

こんな感じで外部表にしてみます

ログのフィールド定義はこちら

$logs はデフォルトコンテナではないので、

wasb:// のフルパス指定が必要

「アクセスの多いファイル TOP10」を問い合わせてみます

select requesturl,count(*) as col2 from bloblog

group by requesturl order by col2 desc limit 10;

"http://decode2015.blob.core.windows.net:80/storminsight32/user/hdp/share/lib" 28659"http://decode2015.blob.core.windows.net:80/hbaseinsight?delimiter=%2F&amp 18422"http://decode2015.blob.core.windows.net:80/storminsight32?delimiter=%2F&amp 18419"http://decode2015.blob.core.windows.net:80/sparktest32?comp=list&amp 17731"http://decode2015.blob.core.windows.net:80/hbaseinsight/user/hdp/share/lib" 17180"http://decode2015.blob.core.windows.net:80/hbaseinsight/hbase/oldWALs" 16895"http://decode2015.blob.core.windows.net:80/hbaseinsight?comp=list&amp 16161"http://decode2015.blob.core.windows.net:80/gpx/SLR210.gpx" 15883"http://decode2015.blob.core.windows.net:80/sparktest32/user/hdp/share/lib" 14900"http://decode2015.blob.core.windows.net:80/$logs?comp=list&amp 14666Time taken: 146.661 seconds, Fetched: 10 row(s)

適切なファイル形式の選択で改善可能

「生テキスト」だけじゃない。Hadoop 界もカラム型が流行!

格納形式 説明

TEXTFILE テキストファイルそのまま

SEQUENCEFILE バイナリのキーと値からなるレコードの連続体

RCFILE Hive 用に導入されたカラム型フォーマット

ORCFILE RCFile を Hortonworks が改良したもの

PARQUET Twitter / Cloudera によるカラム型フォーマット

146.661

25.427

external ORC

100万レコードの解析時間

サンプルギャラリーに

詳細な説明があります。

テーブルの作成や、クエリの

実行といった操作も、

この画面から行えます。

大量の

蓄積された

今まさに発生中の

データに対する

バッチ

リアルタイム

処理

• ログファイルの分析• 全文検索用インデックスの生成

cat ファイル |

cat ファイル |

Map

Map

cat ファイル | sort |Map Reduce > ファイル

入力ファイル群をシーケンシャルに処理

UNIX コマンドによるテキストファイル処理に例えられます

Twitter 分析を行っていた BackType 社が開発

Twitter が BackType を買収したことでTwitter から OSS として公開される

その後、2014年9月にASFのトップレベル プロジェクトとなる

スケーラブルな分散 CEP 基盤

大量の

蓄積された

今まさに発生中の

データに対する

バッチ

リアルタイム

処理

Spout, Bolt, Streamを組み合わせ Topology を定義

Spout Bolt

Topology

Bolt BoltSpout

BoltStream

Tuple Tuple

Spout から流れてくる Tuple を Bolt が処理

Storm 専用のクラスターを作成可能です。

2015年2月にGA済み。

HDInsight のバージョンは 3.1 と 3.2 を選択可能ですが、3.2をオススメ(理由は後述)

http://azure.microsoft.com/ja-jp/updates/general-availability-apache-storm-on-hdinsight/

Storm による処理フローの例

ログファイル

センサ

データ

モバイルデバイス

メッセージング

システム Storm

ダッシュボード

データストア

ログファイル

センサ

データ

モバイルデバイス HDInsight

Storm

on

HDInsight

Azure

Event Hubs

Power BIダッシュボード

Event Hubs との連携モジュール

storm-eventhubs

Visual Studio をStormトポロジの

開発環境に!

Power BI でリアルタイム

ダッシュボード

Event HubSpout

Bolt

Event Hubs と Storm の連携機能を提供

Event Hub からデータを取り込む

”Event Hub Spout”

Event HubBolt

SpoutEvent Hub へ

データを書き込む”Event Hub Bolt”

https://github.com/apache/storm/tree/master/external/storm-eventhubs

Event Hub Spout 等を含む、Event Hub とStormの連携モジュール。

Storm 本家リポジトリに取り込まれています。

Pull Request はこちらhttps://github.com/apache/storm/pull/336

HDInsight Tools for Visual Studio

Storm トポロジ作成用のプロジェクトテンプレート

C#でSpoutやBoltを開発

作成したトポロジをその場で HDInsight へ

投入したトポロジの実行状態を確認

トポロジ内の Spout, Bolt の処理状況やログを確認

https://github.com/Vtek/PowerBI.Api.Client

このライブラリを使います

2. データセットを定義したら3. Insert するだけ

1. Azure AD の資格情報

簡単!

「HDInsight で Storm を使用して Azure Event Hub のイベントを処理する (#C)」http://azure.microsoft.com/ja-jp/documentation/articles/hdinsight-storm-develop-csharp-event-hub-topology/

「Visual Studio を使用して HDInsight で Apache Storm のC# トポロジを開発する」http://azure.microsoft.com/ja-jp/documentation/articles/hdinsight-storm-develop-csharp-visual-studio-topology/

「Power BI (プレビュー) を使用して Storm トポロジのデータを視覚化する」http://azure.microsoft.com/ja-jp/documentation/articles/hdinsight-storm-power-bi-topology/

アンケートにご協力ください。

●アンケートに 上記の Session ID のブレイクアウトセッションに

チェックを入れて下さい。

●アンケートはお帰りの際に、受付でご提出ください。

マイクロソフトスペシャルグッズと引換えさせていただきます。

ROOM

D

top related