ビッグデータ発展の背景 Hadoopの紹介
絶対計算 絶対計算:大量のデータの解析に基づく分析 2つの要素の相関関係を計算することで意外な事実が見えてくる 次々に絶対計算が専門家に勝利を収めていく アッシェンフェルターによるワイン品質方程式 気温・降水量を元に計算 専門家の反発を招く → 比べ物にならないほど優秀な結果・予測を立てた MLB(メジャーリーグベースボール) 以前のスカウトの「目」に頼るものではなく選手の成績(データ)を元に獲得 これを導入したアスレチックスは21世紀最強とも言われる 映画化 「マネーボール」
他にも 無差別抽出 コンチネンタル航空 大幅な遅延やキャンセルを受けた顧客に対して無作為に2つのグループに分ける コンチネンタル航空 大幅な遅延やキャンセルを受けた顧客に対して無作為に2つのグループに分ける 1 何も受け取らなかった → 顧客は激怒 2 御詫び状を送る → 翌年のコンチネンタル航空で費やすお金が8%増 キャピタル・ワン(カード会社) 顧客によって、引き止められる限界の金利の下げ幅を捻出 男性:DMの右上に女性の写真を貼る → 金利4.5%の値下げと同じ応答率 AMAZON 顧客ごとに商品の値段を設定(ランダム) 価格差は無作為の価格テストの結果
オープンデータ時代 LOD運動 公的機関などが保有している科学データをオープンにし(OpenData)、皆でつなげ て(Linked)、社会全体で大きな価値を生み出す為に共有しようとする取り組み オープン・ガバメント 「透明性」「国民参加」「政府間および官民の連携・協業」の3つを原則とした 三原則の中の「透明性(Transparency)を具現化したものが「Data.gov」 運輸省:出発予定時刻・実際の予定時刻・便名・飛行時間など 国防省:軍隊別の人員構成 ベンチャー企業 上記の運輸省のデータを元に航空便の出発時刻の遅刻予測サービス 総合天候保険 農家が収穫高を下回った際に備える保険 データマーケットプレイス 民間事業者がデータの円滑な流通を促すデータ取引市場 人口統計・環境・金融・小売・天気・スポーツなどのデータを売買する
ビッグデータ 「ビジネス・インテリジェンス」(BI)は存在した 膨大なデータを分析し、価値ある洞察や知見を得ようとする取り組み 代表的な会社としてGoogle, amazon, FACEBOOK等のIT業界がリード Google :毎月900億回のweb検索の為に600ペタバイトのデータを処理 FACEBOOK:30ペタ以上のデータを保有 以前から大量のデータ分析で業績を向上させる企業は以前も存在した 売上や在庫データなどを分析し優位につながる知見を導き出す 「ビジネス・インテリジェンス」(BI)は存在した 例:ウォルマート
注意すべきこと 1 従来の売上高や在庫量など構造化された数値データの他に ウェブのクリックストリームデータやソーシャルデータ等、従来のリレーショナル・データ ベースに収まらない非構造化データを使用している 2 ウェブ企業やソーシャル企業に移る → 扱うデータの多様性・データの発生頻度が大きく違う 現在のビッグデータの蓄積・処理技術の大半は ウェブ企業・ソーシャルメディア企業が生み出してきた 例: Hadoop NoSQLなど 「DATA is the new oil」活用せずに破棄してきたデータの中にお宝が埋まっている 2012年 ビッグデータの利活用を目的にした研究開発に2億ドル ビッグデータの専門家を養成する大学院の設立
ビッグデータの定義 「ビッグデータとは、既存の一般的な技術では管理するのが困難な大量のデータ群である」 ビッグデータの特性 3V 1 Volume データ量 2 Variety 多様性 従来の構造化データ・テキストデータ・画像や動画等 3 Velocity 速度(データの発生頻度・更新頻度) 全国の道路に設置された渋滞検知センサー・路面状況センサー 日本だとSuicaやPASMOの電子マネーもビッグデータと呼んでも良い Volume BIG DATA Variety Velocity
広義のビッグデータ データサイエンティスト Hadoop NoSQL 人材・組織 機械学習 統計解析 データ処理・ 蓄積・分析技術 非構造化データ 構造化データ 狭義のビッグデータ 広義のビッグデータ データサイエンティスト Hadoop NoSQL 機械学習 統計解析
なぜ今ビッグデータなのか 我々の生活から密着した分野から生成されるようになった なぜ今ビッグデータなのか 元々ボリュームという概念に限って言えば「ビッグデータ」という考え方は存在した ・ボーイング(航空会社) ・NASA 我々の生活から密着した分野から生成されるようになった ハードウェア価格性能比の向上 ソフトウェア技術の進化 コンピュータの価格性能比の向上 (ムーアの法則) ディスク価格の下落 データ蓄積装置の価格の下落(クライダーの法則) Hadoopの登場 処理環境を自前で用意する必要がなくなった(クラウドコンピュータ)
将来予測 現状分析から 将来予測へ 高 低 これから何が起こるのか? 貢献度 今、何が起こっているのか? なぜ起きたのか? 何が起きたのか? 予測分析 最適化 (データマイニング) なぜ起きたのか? モニタリング (ダッシュボード スコアカード) 多次元分析 (Excel) 何が起きたのか? 低 1980年代 1990年代 2000年代 2010年代
Hadoopとは 「大規模なデータを処理するための並列分散処理」 2003・2004年にGoogleが巨大な検索エンジンを支える技術を発表 主な利用用途: ログ解析・レコメンデーションエンジン・検索エンジン 企業 : 米Yahoo!・FaceBook・楽天・Amazon Hadoopのコンセプト 並列分散処理の技術を誰もが使える「汎用的な」形で提供すること (現に特殊なサーバーやストレージは必要なく、Javaでプログラム) 処理内容 Google Hadoop 分散ファイルシステム GFS: GoogleFileSystem HDFS: HadoopDistributedFS 分散処理フレームワーク MapReduce Hadoop MapReduce
Hadoop適用例 画像変換 巨大な動画データのフォーマットを変換する場合、大量のデータを小分けにし、変換 後のデータを結合することで一つのファイルに戻すことができる 統計的機械翻訳 ある自然言語を別の自然言語に変換する技術 統計的な手法を必要とし、その為に大量の計算が必要 機械学習 一定のデータを元に解析を行い、そのデータから有益なルールや傾向を見出す 音声認識や文字認識といったパターン認識・証券取引市場の動向分析 データマイニング 大量に蓄積されたデータを分析し、その中に隠れている項目間の相互関係やパ ターンを探し出す
適用領域 2. Hadoopでは一度にまとめて大量のデータを扱うため、一度だけ格納し参照することで集計処理を行う 項目 RDBMS Hadoop 1. 扱うデータサイズ ~数テラバイト ペタバイト 2. 想定するデータ操作 小さなデータの参照 大きなデータの挿入/参照 更新はない 3. レスポンスタイム 速い 遅い 4. サーバー台数と性能向上策 1桁台数でスケールアップ 数十台~数千台でスケールアウト 5. データ構造 構造化データ 準構造化データ 2. Hadoopでは一度にまとめて大量のデータを扱うため、一度だけ格納し参照することで集計処理を行う 4. スケールアップ: 一台のサーバーの能力を増強する スケールアウト: サーバーを追加することで能力を増強する Hadoopの特徴 テラバイト以上のデータのバッチ処理に向く 拡張性に優れる 柔軟なデータ構造に対応可能
Hadoopの構成 「HDFS」: 分散ファイルシステム 「MapReduce」:並列分散処理フレームワーク それぞれ「マスターサーバー」と「スレーブサーバー」が存在 マスターサーバー:クラスタ全体を管理 スレーブサーバー:複数台ならんで実際の処理を行う HDFS :NameNode メタデータの管理 :DataNode データの読み書き MapReduce :JobTracker 一つのジョブをタスクに分割し、スレーブサーバーに対し 処理を割り振る :TaskTracker タスクを実行し応答 マスターサーバー スレーブサーバー HDFS NameNode DataNode MapReduce JobTracker TaskTracker
分散ファイル処理システム HDFS HDFS Hadoop Distribute FileSystem : Hadoop分散ファイルシステム DataNode内のデータは「ブロック」と呼ばれる 固定長に区切られた塊ごとに管理される デフォルトで64MB 大きなファイルを効率よく扱うため 各ブロックは1つのDataNodeのみに 配置されるのではなく 複数のDataNodeに配置 (レプリケーション デフォルトで3つ) HDFSクライアント NameNode(マスターサーバ) DataNode 各DataNodeが持つストレージをまとめてひとつのストレージを構成 HDFS
NameNode HDFSクラスタ全体を集中管理するサーバー 1 メタデータの管理 メタデータを元に、各DataNodeに分散している各ブロックからファイルを組み立てる 2 HDFSの使用状況の確認 各DataNodeの領域の使用状況を見ている 3 クライアントからのHDFSの操作の受付 4 DataNodeの死活管理 一定間隔でDataNodeからNameNodeに生存を伝えるパケットが送られる (ハートビート) 5 レプリカの数の制御
HDFSの利点 1 巨大なファイルを扱える 2 容量にスケーラビリティがある 1 巨大なファイルを扱える 2 容量にスケーラビリティがある 3 DataNodeの一部が故障しても、ファイルの損失を回避できる 4 シーケンシャルアクセスによる高いスループット 複数のディスクにファイルを分割して格納する scalablity : (寸法・割合などが)変更できること スレーブノードであるDataNodeを追加することで、HDFSの容量を自由に拡張できる レプリケーション : 複数のDataNodeがブロックのレプリカを持っている ラックアウェアネス: レプリカを持つDataNodeを上手く振り分ける機能 BuckupNode: NameNodeが故障した場合のサポート
HDFSの利点(2) 4 シーケンシャルアクセスによる高いスループット 大きなファイルにシーケンシャルアクセスすることに最適化されている (64MB) HDFSは一度格納されたファイルは読み出すだけのアクセスパターンを想定して いる為、更新ができない
MapReduceフレームワーク MapReduce: Google社によって提案された分散処理アルゴリズム 大規模なデータを分散処理するのに都合の良いように 「Map処理」と「Reduce処理」の2つのフェーズがある Map処理 データから処理の元にKeyとValueの組を抽出する処理 Reduce処理 抽出されたKeyとValueから目的の結果(Key,Value)を得るための処理 JobTracker :分散処理を指示 TaskTracke :実際にMap処理やReduce処理を行う マスターサーバー スレーブサーバー HDFS NameNode DataNode MapReduce JobTracker TaskTracker
MapReduceの例 例:「to be or not to be」 Map処理 入力データから何かを抽出する この場合出現した単語をKey,数字「1」をValue “to be or not to be” Map処理 be 1 to 1 be 1 or 1 not 1 to 1
中間処理(ソート) ある単語が何回登場したかをカウントしやすくするための前処理 として、同じ単語をまとめることでカウントしやすくする to 1 be 1 or 1 not 1 to 1 be 1 to be or not to 1 to 1 be 1 be 1 or 1 not 1
Reduce処理 be 1 be 1 to 1 to 1 or 1 not 1 to be or not 2 2 1 1
分散処理 “to be or not to be” Mapフェーズ “to be” “or not” “to be” to 1 be 1 Shuffle & Sort フェーズ Reduce フェーズ to 2 be 2 or 1 not 1
MapReduce フレームワークの構成 Jobクライアント 進捗状況報告 ジョブの依頼 完了通知 優先度変更 JobTracker (マスターノード) 処理割り当て 生存確認 TaskTracker TaskTracker TaskTracker
MapReduceの特徴 高いスケーラビリティを持つ Mapフェイズへの入力データは分割可能な入力データを使用 Reduceフェーズは集約したKeyごとに集約する 処理の継続性が高い JobTrackerがすべてのジョブと処理の進捗を管理している 1つに異常が発生した場合、他に再度同じ処理を割り当てる データの局所性を考慮した処理コストの低減 極力TaskTrackerと同じノードで起動しているHDFSのDataNodeのデータを利用
JobTrackerの役割 分散処理を制御するためのマスターサーバとして動作するJavaのプロセス 1 Jobの受付: JobClientから送られてきたMapReduceジョブの情報を元に Map処理で利用する入力データの分割方針を決定します 2 処理の割り当て 3 分割処理の情報把握 4 Map処理結果把握 5 処理割り当て 6 ブラックリスト化 7 処理の投機的実行 8 ジョブ履歴管理 9 ジョブ進捗通知 10 TaskTracker死活管理 11 TaskTracker追加
TaskTrackerの役割 JobTracker:司令塔とすると TaskTracker:駒 1 Childプロセスの生成と実行 2 Childプロセスの状況確認 3 処理停止の通知 4 ハートビート通信 5 Map処理数とReduce処理数の把握 実際にMap処理/Reduce処理を実行 処理割り当て 資材/設定 プロセス生成 Child JobTracker TaskTracker Heartbeat 処理状況
連携動作
国内のビッグデータ活用 コマツ 建設機械メーカー 「KOMTRAX」 初期バージョン:レンタル会社の重機にGPSを搭載し、位置情報と稼働時間を把握 →配車を効率的 盗難がなくなる 建設機械にGPSや各種センサーを取り付ける 機械の現在位置・稼働時間・稼働状況・消耗品の交換時期などを取得 燃料使用量を見る→顧客別の運転の仕方を分析 →多く燃料を使用している顧客に対しアドバイス GPS:地域別の機械の稼働時間を把握することで需要動向を予測
リクルート ネット領域の売り上げは全体の3分の1を占める ほぼ全社でHadoopを活用 下記のレコメンドツール・集客施策の効率化 Hadoopの開発・データ分析を行う全社横断組織が存在する 1週間 1年半分 マイニングツールでレコメンドを計算 Hadoop でレコメンドを計算 約8万人に配信 約20万人に配信
リクルートが考えるHadoopの真価 1 高速処理ができるゆえに、何度でもトライ&エラーを繰り返すことができる これまでの分析はデータ整備/集計の処理時間・方向転換に非常に時間が掛かる Hadoopの導入により 仮説→ローデータ作成→集計→分析 この一連のサイクルが短縮 2 サンプリングに頼らないロングテール部の解析が可能 仮説の検証にすべてのデータを用いることが可能となった 「Hadoopを使えば今までできなかったことができそう」