effective 'hadoop on azure' ~hdinsight とゆかいな...
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/
http://jp.hortonworks.com/wp-content/uploads/2013/05/H1H2Tez.png
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& 18422"http://decode2015.blob.core.windows.net:80/storminsight32?delimiter=%2F& 18419"http://decode2015.blob.core.windows.net:80/sparktest32?comp=list& 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& 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& 14666Time taken: 146.661 seconds, Fetched: 10 row(s)
適切なファイル形式の選択で改善可能
「生テキスト」だけじゃない。Hadoop 界もカラム型が流行!
格納形式 説明
TEXTFILE テキストファイルそのまま
SEQUENCEFILE バイナリのキーと値からなるレコードの連続体
RCFILE Hive 用に導入されたカラム型フォーマット
ORCFILE RCFile を Hortonworks が改良したもの
PARQUET Twitter / Cloudera によるカラム型フォーマット
Parquet の構造ORCFile の構造
http://parquet.apache.org/https://github.com/hortonworks/orc
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