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

Post on 22-Feb-2016

104 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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

Masashi NarumotoSenior program managerpatterns & practices

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

Sexiest job of the 21st century

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

ビッグデータとは ?

Relational Data

10x increase every 5 years

VOLUME

4.3 connected devices per adult

VELOCITY

VARIETY85% from new data types

Big Data

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

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

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

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

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

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

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

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

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

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)

HDFS アーキテクチャNameNode

NameSpace

Block Management

DataNodeBL1

BL2

BL3

BL1

DataNodeBL1

BL2

BL3

BL1

DataNodeBL1

BL2

BL3

BL1

DataNodeBL1

BL2

BL3

BL1

SecondaryNameNode

Backup

Job Tracker と Task TrackerJobTracker

TaskTrackerTaskTrackerTaskTrackerJVM JVMJVM JVM

Client

JVM JVMJVM JVM

JVM JVMJVM JVM

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

HDInsight

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

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

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

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

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

Demo : HDInsight

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

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

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

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

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

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

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

データクエリと可視化

DWH/BI との統合

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

Demo : Twitter Analysis

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

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

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

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

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

テクノロジー選択• プラットフォーム : 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.

データ収集パターン

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

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

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

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

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

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

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

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

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

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

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

Demo : Hive, Pig and MapReduce

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

データの可視化• インタラクティブツール• 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 など多数

Demo : Data Explorer

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

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

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

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

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

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

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

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

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

Appendix

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

Demo : MSDN Hot Topics

MSDN IIS Logs

ASV

HDFSHive External

TableHive Standard

Table

EXCEL Hive Pane

+PowerView

Behind the scene

オンプレミス

Windows AzureHDInsight

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

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

Hive ODBC Driver

カスタム Web App

Questions?

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

デプロイメント

Job ワークフロー

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

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

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';

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'

top related