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