#garagekidztweetz

id:garage-kid@76whizkidz のライフログ・ブログ!

「【17-E-3】 Hadoop:黄色い象使いへの道 〜「Hadoop徹底入門」より〜」の聴講メモ

スポンサーリンク

devsumi 2011 にて、「黄色い象使いへの道」を聞いてきた際にとったメモを共有します。

Speaker 下垣徹 氏の自己紹介

Hadoop: The Definitive Guide

もともとは DB屋さん PostgreSQL
  • pg_bulkload 初期バージョン開発
  • Oracle から PostgreSQL への migration
最近は OSS data store 担当
  • Hadoop の導入支援
  • Hadoop 徹底入門のとりまとめ
Oreilly 象本との住み分けを目指した

Hadoop徹底入門

  • 環境構築や運用面、可用性の実現、SI色を前面に
  • SQL的なIF、Hiveに1章分割当
  • 12月末、Amazonでひっそりと発売告知
  • 目次も公開されていない段階で一時期1位に
  • FairScheduler、Mahout、Scribe、Elastic Map Reduce など書けなかったことがたくさん
    • 第二版がだせるようになったら考えたい
    • 増刷は決定

Hadoop概要

  • Googleの基盤技術
  • 大規模データを対象としたサービスを展開
  • クラウドコンピュータをもってサービス展開
  • Googleプラットフォームの図
  • 使い古して論文をだす傾向
  • OSSの大規模分散処理フレームワーク
  • 大規模なデータをいかにして処理をするのか?
  • 巨大なデータを並列で、サーバのローリティを活かして処理をする
  • 大きく2つのコンポーネント
    • 分散Fileシステム HDFS
      • →低価格のサーバを多数使用することを前提
      • →データの多重化で可用性
      • →従来とは運用利便性の考え方が異なる
      • →ラックも意識したデータの分散配置
    • 大規模分散処理処理フレームワーク Hadoop MapReduce
      • →Googleが検索インデックス作成のため考案
      • →すくなくとも5000台までスケールアウト
    • 利点、メリット
      • →プログラム個別に分散処理処理ロジックを用意することなく、分散処理を気軽にできる
      • →高いスケーラビリティ
      • →IO性能を柔軟に拡張できる
      • コモディティサーバの利用
  • 集中管理型の分散処理システム
    • マスターがいる仕組み
    • 命令する側とされる側
  • Hadoop適用領域
    • 特に向いてる領域
    • 数10GBからテラバイト、ペタバイト級のデータを扱う
    • バッチ処理のApp
    • リアルタイム性が求められる処理の前処理
  • 一般的な利用例
    • log解析
    • レコメンデーション
    • 検索
    • データマイニング
    • 機械学習
    • データ変換
    • 高度なETL
Hadoop適用事例
  • Yahoo
    • →過去3年分のlogデータ解析を約20分
    • →82ペタバイト
  • Facebook
    • →4TBのデータが毎日新規に生成される
    • →135TBのデータを毎日処理
  • 楽天
    • →広告のインプレッションlog、レコメンデーション、ランキング集計
    • →20台程度のHadoop
  • VISA
    • 730億ものトランザクション、過去2年=36TB
    • 13分で分析
  • China Moile
    • ユーザー5億人のデータ
  • 国立国会図書館サーチ
    • どの本がどこにあるか検索できる
    • 裏方にHadoop
  • GE
    • ソーシャルネットワークの情報を使ってなにかできないかを分析
    • 顧客の感情分析
    • MySQLで42時間かかっていた処理をHadoopで42分
  • リクルート
    • DWH製品とHadoopを比較し、特性を評価
    • 顧客動向分析
    • じゃらん、リクナビ
RDBMSと競合するものではない
  • HadoopをWorld NYCの図
  • RDBと組み合わせて使うもの

Hadoop徹底入門の読み方

Hadoop徹底入門

  • まずは第1〜5、6章まで続けて読む
    • 3、4章 HDFS、MapReduceの理論、後半は使い方、実践
    • 5章 MRUnit・デバッグ技法→一回はjavaでMapReduce書いた方がいいのではという提案
    • 6章 SQL的インターフェイスHive
      • →JavaでMapReduceを書きたくない、全く書けない人むけ
    • 残りの章は必要に応じて
      • SequenceFile、圧縮、メモリ、JVM、OSチューニング
Hadoop徹底入門に書かれていることの紹介
  • クラスタの自動構築
    • kickstart、puppet
  • SPOFの排除
    • DRBD、Heart Beat
  • クラスタの状態の可視化
    • Ganglia
    • サーバ群を塊で監視しましょうや
  • Hadoopと連携する周辺ツール
    • Pig
    • →データの流れ記述する独自言語でMR
  • Hive
    • →SQLぽくMR
  • Mahout
    • →機械学習を容易に実行するためのライブラリ
  • HBase
    • →カラム志向型KVS、データの追記、少量データの扱いを容易に
    • →SQLさえも扱うのが難しい人はHBase
  • Thrift
    • →各種言語による接続環境を実現
Hadoop の利用で気をつけるべきこと
  • Hiveの利用
    • SQLインターフェイスが利用可能に
    • Javaによるコーディングは苦手でもSQLはできるという人は多い
      • とはいえ、SQL的なだけ
      • Update、Deleteはない
      • InsertではなくInsert OverWrite
      • hdfsへのデータはmvのイメージ
  • 日付時刻型がない
    • いったんString型で格納しておく
    • Unixtimestampに一回変換しておく
  • ソート
    • order by だけではない
    • sort by → reducer ごとのソート

黄色い象使いへの道、よくある質問

RDBMS的な機能はないのですか?
  • RDBMSではない
  • Silver Bulletではない
    • →適材適所の観点で
    • 大量データの前処理をHadoopで+結果をRDBMSに格納し検索しやすく
HadoopへのMigrationはどう?
  • 商用rdbms、DWHからのMigrationはやれなくはないが、それなりに工数がかかることは多い
  • Hadoopの利用をMigrationによるコスト削減を目的にされるとつらいことが多い
  • Hadoopの利用目的に何かの壁をぶち破るためにがあってしかるべき
  • 何か=処理時間、データ量など
  • Migration前と同じ機能、品質、SLAを求められるとつらいことが多い
  • 商用RDBMS、DWHとHadoopの機能差異
  • 性能問題
  • RDBMSの処理をHadoopにおきかえると
    • そのまま移行するとオーバーヘッドのほうが大きくなってしまう
    • 細かい処理の積み重ねのバッチ処理だったら当たり前。
    • 処理ロジック自体を組みかえる
    • ジョブ数を極力減らす
    • 日経コンピュータセミナー2010リクルート発表資料
どのHadoopをつかえばいいのか?
  • コミュニティから提供中のコア部分は0.21系
    • →最新機能を使い人むけ
  • しかしHadoopの周辺プロダクトのほとんどは0.21を未サポート
    • →安定志向