50
HDInsight ににににににににに にににににににににに Masashi Narumoto Senior program manager patterns & practices

HDInsight によるビッグデータ ソリューションの開発

  • Upload
    cleary

  • View
    104

  • Download
    0

Embed Size (px)

DESCRIPTION

Masashi Narumoto Senior p rogram manager p atterns & practices. HDInsight によるビッグデータ ソリューションの開発. アジェンダ. ビッグデータ概要 HDInsight と関連技術のガイダンス まとめ. Sexiest job of the 21 st century. Source: HBR http://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century/. ビッグデータとは ?. - PowerPoint PPT Presentation

Citation preview

Page 1: HDInsight によるビッグデータ ソリューションの開発

HDInsight によるビッグデータソリューションの開発

Masashi NarumotoSenior program managerpatterns & practices

Page 2: HDInsight によるビッグデータ ソリューションの開発

アジェンダ• ビッグデータ概要• HDInsight と関連技術のガイダンス• まとめ

Page 3: HDInsight によるビッグデータ ソリューションの開発

Sexiest job of the 21st century

Source: HBR   http://hbr.org/2012/10/data-scientist-the-sexiest-job-of-the-21st-century/

Page 4: HDInsight によるビッグデータ ソリューションの開発

ビッグデータとは ?

Relational Data

10x increase every 5 years

VOLUME

4.3 connected devices per adult

VELOCITY

VARIETY85% from new data types

Big Data

Page 5: HDInsight によるビッグデータ ソリューションの開発

80% growth of unstructured data is predicted over the next five years.

1.8 zettabytes of digital data were in use worldwide in 2011, up 30% from 2010.

70% of U.S. smartphone owners regularly shop online via their devices.

44% of users (350M people) access Facebook via mobile devices.50% of millennials use mobile devices to research products.

60% of U.S. mobile data will be audio and video streaming by 2014.

Mobility

2/3 of the world's mobile data traffic will be video by 2016.

33% of BI will be consumed via handheld devices by 2013.

Gaming consoles are now used an average of1.5 hrs/wkto connect to

the Internet.

1 in 4 Facebook users add their location to posts (2B/month).500M

Tweets are hosted on Twitter each day

38% of people recommend a brand they “like” or follow on a social network.

100M Facebook “likes” per day.

Brands get

Big DataSocial

Mobility Cloud

Tackling growth in the volume, velocity and variety of data

Business Analytics for the New World of Data

Page 6: HDInsight によるビッグデータ ソリューションの開発

Big Data と RDB の違い機能 RDB Big Data

データタイプ 構造化データ 非構造化データ

スキーマ 静的 - 書き込み時に必要 動的 – 読み込み時

Read write パターン read/write の繰り返し Write は一回、 Read の繰り返し

ストレージボリューム Gigabytes to terabytes Terabytes, petabytes, and beyond

スケーラビリティ スケールアップ スケールアウト

エコノミクス 高価なハードウェアとソフトウェア

コモディティハードウェアとオープンソース

Page 7: HDInsight によるビッグデータ ソリューションの開発

Hadoop Ecosystem(Still) Rapidly Evolving

MapReduce (Job Scheduling/Execution System)

HDFS(Hadoop Distributed File System)

HBase (Column DB)

Pig (Data Flow)

Hive (Warehouse and Data

Access)

Traditional BI Tools

Zook

eepe

r (C

oord

inat

ion)

Hadoop = MapReduce + HDFS

Sqoop

Oozie(Workflow)

Chukwa FlumeApacheMahout

Cassandra

Avro (Serialization)

Page 8: HDInsight によるビッグデータ ソリューションの開発

HDFS アーキテクチャNameNode

NameSpace

Block Management

DataNodeBL1

BL2

BL3

BL1

DataNodeBL1

BL2

BL3

BL1

DataNodeBL1

BL2

BL3

BL1

DataNodeBL1

BL2

BL3

BL1

SecondaryNameNode

Backup

Page 9: HDInsight によるビッグデータ ソリューションの開発

Job Tracker と Task TrackerJobTracker

TaskTrackerTaskTrackerTaskTrackerJVM JVMJVM JVM

Client

JVM JVMJVM JVM

JVM JVMJVM JVM

Page 10: HDInsight によるビッグデータ ソリューションの開発

Map and ReduceJohn had a little cat

Its eyes were blue as cobalt

John went to the library yesterday

He brought the cat with him

map

John 1had 1a 1little 1 Cat 1

Its 1 Eyes 1Were 1Blue 1as 1Cobalt 1

John 1Went 1To 1The 1Library 1Yesterday 1

He 1Brought 1 The 1Cat 1with 1him 1

map map map

reduce

reduce

had 1a 1little 1 Cat 2……….

John 2 Were 2Brought 1He 1………

Page 11: HDInsight によるビッグデータ ソリューションの開発

HDInsight

Page 12: HDInsight によるビッグデータ ソリューションの開発

HDInsight の利点• クラウドとオンプレミスから選択可能• WPI でワンクリックインストレーション , パッケージの動作検証済み• 豊富な BI ツールとの組み合わせ• Microsoft Excel, Power Pivot, Power View, Data Explorer,

SSRS• SQL Server との統合• Hadoop と SQL Server 間のデータ移動をサポート

• シンプルな管理ソリューション• System Center により他の IT 資産と同様の管理が可能

• セキュア• Active Directory との統合でセキュアな運用

• プロダクティブ• 既存のスキルを使った MapReduce ジョブの開発とデプロイメント

Page 13: HDInsight によるビッグデータ ソリューションの開発

Demo : HDInsight

Page 14: HDInsight によるビッグデータ ソリューションの開発

DEV/DBA の視点• ソリューションの設計• テクノロジー選択、インフラ設計、アーキテクチャモデル

• 実装• データ収集 , クエリー , 可視化

• テスト• ユニットテスト、ローカル、クラスター

• デプロイメント• データとジョブ、スケジューリング、プロセスの自動化

• パフォーマンスの最適化• コンフィギュレーション、データ圧縮、クエリー最適化

• モニタリング(トラブルシューティング)• メトリクスの設定、アラート

Page 15: HDInsight によるビッグデータ ソリューションの開発

Microsoft の big data プラットフォーム

Page 16: HDInsight によるビッグデータ ソリューションの開発

データクエリと可視化

Page 17: HDInsight によるビッグデータ ソリューションの開発

DWH/BI との統合

Page 18: HDInsight によるビッグデータ ソリューションの開発

典型的なシナリオ• Web ログ解析• Sentiment 分析• リテール顧客分析• メディカルデータ分析• オンラインリコメンデーション • フィナンシャルモデリング• センサーデータ解析• 予測分析

Page 19: HDInsight によるビッグデータ ソリューションの開発
Page 20: HDInsight によるビッグデータ ソリューションの開発

Demo : Twitter Analysis

Page 21: HDInsight によるビッグデータ ソリューションの開発

Big Data アーキテクチャモデル•コモディティストレージ•データ転送と ETL•スタンドアロンデータ分析• BI とのインテグレーション

Page 22: HDInsight によるビッグデータ ソリューションの開発

コモディティストレージ・ DWH• ビッグデータの分析・レポーティングのための統一ストレージ • 内部アプリケーションのために複数のデータセットを格納• クラウドにより信頼性、弾力性、低コストを実現

Page 23: HDInsight によるビッグデータ ソリューションの開発

データ転送と ETL• ストリームデータまたは非構造化データを既存のデータベースにロード • ロードする前にクレンジング、転送、バリデーションを実行 • 定期的にデータの可視化またはレポートの作成

Page 24: HDInsight によるビッグデータ ソリューションの開発

スタンドアロンデータ分析•新しいタイプのデータを検証•少人数によるインタラクティブな分析•レポートの作成や外部または内部データの可視化

Page 25: HDInsight によるビッグデータ ソリューションの開発

BI とのインテグレーション• 外部データソースを内部の企業データウェアハウスと統合• スケジュールされた間隔もしくはオンデマンドでデータ更新• 外部データによりデータウェアハウスを強化

Page 26: HDInsight によるビッグデータ ソリューションの開発

テクノロジー選択• プラットフォーム : Traditional DWH/BI or HDInsight• ランタイム : HDInsight in the Cloud or on-premises • ストレージ :  ASV or HDFS• データ収集 : File upload, StreamInsight, SSIS, Custom

App• クエリー :  MR, Pig, Hive, UDF or Hadoop Streaming• データ可視化 : EXCEL , Sharepoint, LINQ to Hive or

Custom app• レポーティング : SSRS, SQL Azure Reporting, Crystal

Report etc. • DWH 統合 : Sqoop, SSIS, Hive ODBC, PolyBase• 他の要素 : ZooKeeper, Oozie, HCatalog, Mahout etc.

Page 27: HDInsight によるビッグデータ ソリューションの開発

データ収集パターン

インタラクティブ 自動化されたバッチ

リアルタイムストリーム リレーショナルデータ

Page 28: HDInsight によるビッグデータ ソリューションの開発

データ収集ガイドライン• アップローダー

• アップローダーはライブラリーとして実装し、スクリプトや SSIS から呼び出し可能とする• コマンドラインユーティリティを作成してインタラクティブなアップロードもサポートする

• ASV へのアップロード• データを小さいサイズへと分割して同時アップロード• Azure の Blob サイズ

• リトライ処理• TOPAZ などの使用によるリトライ処理の実装

Page 29: HDInsight によるビッグデータ ソリューションの開発

データクエリー• Hive (+UDF)• データソースがある程度構造化されていて、表形式にマッピングできる• 必要なプロセスが HiveQL で表現できる• ユーザーがデータを取り出すためにテーブルレイヤーを作成

• Pig (+UDF)• カラムの宣言や値のグループ化によってリストラクチャする• 複数の操作のワークフローによる分析処理

• Map & Reduce• 完全な非構造化データをパースして構造を追加する• Pig や Hive では複雑になり過ぎる処理、 ( 例:緯度・経度の計算 )• パフォーマンスの最適化

• Hadoop Streaming• Java 以外の言語でテキストデータを分析する

• 複数のツールから起動• インタラクティブコンソール、コマンドライン、 .NET SDK 、 Oozie

Page 30: HDInsight によるビッグデータ ソリューションの開発

Demo : Hive, Pig and MapReduce

Page 31: HDInsight によるビッグデータ ソリューションの開発

その他のツール• HCatalog• データスキーマ、ロケーション、フォーマットのレポジトリ• Oozie• ワークフローエンジン• WebHCat ( Templeton)• 管理用 REST インタフェース• .NET クライアント• .NET 開発者向け管理とモニタリング用 SDK

Page 32: HDInsight によるビッグデータ ソリューションの開発

データの可視化• インタラクティブツール• HDInsight コンソール ,EXCEL, Power Pivot, Power View, Data

Explorer• SQL Server Reporting Services• Windows Azure SQL Reporting• Windows Azure SQL Database 経由でレポート生成

• SQL Server Database• Linked Server, Sqoop, Polybase

• Sharepoint Server• Business Data Connector, PerformancePointServices

• LINQ to Hive,VS2012 アドイン• プログラマーへの選択肢

• 3rd パーティ-テクノロジー• D3.js など多数

Page 33: HDInsight によるビッグデータ ソリューションの開発

Demo : Data Explorer

Page 34: HDInsight によるビッグデータ ソリューションの開発

パフォーマンス最適化• ストレージアクセス• ネットワークバンド幅• メモリー量• CPU 使用量

Page 35: HDInsight によるビッグデータ ソリューションの開発

パフォーマンス最適化ボトルネック チューニングテクニック大量の入力データによるストレージ IO データソースの圧縮Mapper 出力ステージでスピルアウトするレコードによるストレージ I/O

Mapper からスピルアウトするレコードを減らす大量の Mapper 出力によるネットワーク転送 Mapper の出力を圧縮Combiner の実装

大量の Reducer 出力によるストレージ IO またはネットワーク転送 JOB の出力を圧縮レプリケーション設定の変更Hive – クエリー出力の圧縮

間違ったコンフィグレーションによるタスクの不足 Map, Reduce タスクまたは Job slots の数を増やすタスクへのメモリアロケーション不足 メモリ設定を変更

データ偏在化による特定 Reducer の負荷増大 偏在化の除去

Page 36: HDInsight によるビッグデータ ソリューションの開発

データ圧縮による最適化• 最適化に最も有効な手段• ストレージ IO とネットワーク転送の負荷を軽減• 処理速度と IO のトレードオフ• 解凍のためジョブにおける CPU 負荷は増大する• 圧縮するステージ•入力データ , 中間データ , 出力データ• Codec の選択• DEFLATE,GZIP, BZIP2 etc.• 複数 Mapper には Splittable フォーマットを使用

Page 37: HDInsight によるビッグデータ ソリューションの開発

まとめ• ビッグデータ登場の背景• Hadoop エコシステム• Microsoft の提供する HDInsight とその関連技術• 4つのアーキテクチャモデル• 開発プロセスの各ステップにおける考慮事項

Page 38: HDInsight によるビッグデータ ソリューションの開発

リソース• http://WAG.Codeplex.com• http://www.windowsAzure.com• http://hadoop.apache.org• http://pnp.azurewebsites.net/en-us/

Page 39: HDInsight によるビッグデータ ソリューションの開発

Appendix

Page 40: HDInsight によるビッグデータ ソリューションの開発

Web ログ解析シナリオ• 300GB の IIS logs を解析• Web サイトの検索キーワードからホットトピックスを抽出• EXCEL とカスタム Web アプリケーションによる可視化

Page 41: HDInsight によるビッグデータ ソリューションの開発

Demo : MSDN Hot Topics

Page 42: HDInsight によるビッグデータ ソリューションの開発

MSDN IIS Logs

ASV

HDFSHive External

TableHive Standard

Table

EXCEL Hive Pane

+PowerView

Behind the scene

オンプレミス

Windows AzureHDInsight

データのクレンジングファイルをアップロード

スキーマを定義 クレンジング正規化グルーピングソート

Hive ODBC Driver

カスタム Web App

Page 43: HDInsight によるビッグデータ ソリューションの開発

Questions?

Page 44: HDInsight によるビッグデータ ソリューションの開発

テスト• MRUnit• ネイティブ MR 用のユニットテスト• HDInsight サーバー• 小さいデータセットとローカルインスタンスによるテスト• HDInsight クラスター• クラウドで大きいデータセットを使用したテスト

Page 45: HDInsight によるビッグデータ ソリューションの開発

デプロイメント

Page 46: HDInsight によるビッグデータ ソリューションの開発

Job ワークフロー

Page 47: HDInsight によるビッグデータ ソリューションの開発

モニタリング• Hadoop メトリクスの設定• Java仮想マシン• HDFS• MapReduce ジョブ• RPC• メトリクスの可視化• REST-API

Page 48: HDInsight によるビッグデータ ソリューションの開発

// Map function - runs on all nodesvar map = function (key, value, context) { // split the data into an array of words var hashtags = value.split(/[^0-9a-zA-Z#]/);  //Loop through the array, creating a value of 1 for each word beginning "#" for (var i = 0; i < hashtags.length; i++) { if (hashtags[i].substring(0, 1) == "#") { context.write(hashtags[i].toLowerCase(), 1); } }}; //Reduce function - runs on reducer node(s)var reduce = function (key, values, context) { var sum = 0; // Sum the counts of each tag found in the map function while (values.hasNext()) { sum += parseInt(values.next()); } context.write(key, sum);};

Map and Reduce

Page 49: HDInsight によるビッグデータ ソリューションの開発

Pig-- load tweetsTweets = LOAD 'asv://uploads/data' AS (date, id, author, tweet);-- split tweet into wordsTweetWords = FOREACH Tweets GENERATE date, FLATTEN(TOKENIZE(tweet)) AS tag, id;--filter words to find hashtagsTags = FILTER TweetWords BY tag matches '#.*';-- clean tags by removing trailing periodsCleanTags = FOREACH Tags GENERATE date, LOWER(REPLACE(tag, '\\.', '')) as tag, id;-- group tweets by date and tagGroupedTweets = GROUP CleanTags BY (date, tag);-- count tag mentions per groupCountedTagMentions = FOREACH GroupedTweets GENERATE group, COUNT(CleanTags.id) as mentions;-- flatten the group to generate columnsTagMentions = FOREACH CountedTagMentions GENERATE FLATTEN(group) as (date, tag), mentions;-- load the top tags found by map/reduce previouslyTopTags = LOAD 'asv://results/countedtags/part-r-00000' AS (toptag, totalcount:long);-- Join tweets and top tags based on matching tagTagMentionsAndTopTags = JOIN TagMentions BY tag, TopTags BY toptag;-- get the date, tag, totalcount, and mentions columnsTagMentionsAndTotals = FOREACH TagMentionsAndTopTags GENERATE date, tag, totalcount, mentions;-- sort by date and mentionsSortedTagMentionsAndTotals = ORDER TagMentionsAndTotals BY date, mentions;-- store the results as a fileSTORE SortedTagMentionsAndTotals INTO 'asv://results/dailytagcounts';

Page 50: HDInsight によるビッグデータ ソリューションの開発

HiveCREATE EXTERNAL TABLE dailytwittertags(tweetdate STRING, tag STRING, totalcount INT, daycount INT)ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'STORED AS TEXTFILE LOCATION 'asv://tables/dailytagcount'