誰にも見えないブログ

雑なメモ。まとまってない文章等

Hadoop徹底入門第二版 第一章ノート

このエントリはHaddop徹底入門の第一章の覚書です。

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

Hadoop徹底入門 第2版 オープンソース分散処理環境の構築

Hadoopとは

  • 大量のデータを処理するための並列分散処理ソフトウェア

    • 数台程度のRDBやDWHだとディスクI/Oがボトルネックになる。
    • 複数台のサーバーを束ねて一つの仮想的なサーバーとして利用する技術
  • Hadoopの重要な構成要素

  • HadoopJavaで開発されている

    • ふつうのサーバーで利用可能
  • スケールアウトの向上性能に向く
    • RDBMSはロックを取るため、基本的に並列処理に不利
      • サーバー台数を増やすスケールアウトより1台のサーバースペックを上げるスケールアップ向き
    • ☓ランダムアクセス、○シーケンシャルアクセス
    • ☓更新、○挿入・参照
    • 1000台程度でアレば線形にスケールする
    • 2,3大程度だとHadoopの威力を引き出せない
  • バッチ処理

    • 低レイテンシなスピードが要求されるオンライン処理には向かない
  • Hadoopの起源

Hadoopの中身

  • Hadoopのコアになっている2要素

    • HDFS(Hadoop Distiributed File System)
      • 大容量のファイルを細かい単位(ブロック)に分割して複数のサーバーに保存する
      • IOを分散して行える
    • MapReduce
  • 構成

    • スレーブサーバー
      • ラック内で複数のサーバーを接続(L2SW)し、場合によっては複数のラックを接続する(L3SW)
      • ふつうはスレーブサーバー単位で冗長化しない(RAIDは組まない)
      • DataNode(HDFSのスレーブ)
      • TrasckTraacker(MapReduceのスレーブ)
    • マスターサーバー
      • スレーブサーバーより高性能、高信頼なマシンを使う
      • マスターサーバー単位で冗長化することもある(RAID)
      • NameNode(HDFSのマスター)
      • JobTracker(MapReduceのマスター)
  • HDFS

    • 各DataNode(スレーブ)上にext4等のローカルファイルシステム上に作られるオーバーレイファイルシステム
    • 透過性:クライアントからは分散構成を隠蔽してext4のようにアクセスできる
    • 拡張性:台数追加で容量アップとIO性能の向上ができる
    • 冗長化(HA構成)
      • DataNode上の各ブロックは複数のノードに多重に格納する(1台が壊れた際に即死亡とならないようになっている)
      • NameNodeが故障するとHDFS全体がクラッシュする
        • マスターサーバー群の冗長化方法は序盤にはまだ書かれていない
  • MapReduce
    • 巨大なデータ集合を処理するためのプログラミングモデル
    • 1つのジョブを独立したタスクの集合に分けて実行し、並列処理を実現
    • Map処理:フィルタリング等
    • Reduce処理:データの集約

処理の概要

  • Map処理
    • データ集合の分割・Mapタスクの割当
      • Key-valueの形式で入力データから取り出し(フィルタ?)
  • Shuffle処理
    • Map処理後のデータをソート
    • 同じキーのデータを一箇所(DataNode)にまとめる
    • Shuffle時のネットワーク負荷は考慮すること(ボトルネックになる恐れがある)
  • Reduce
    • キーごとに集められたデータに対してReduce処理を行う
    • TaskTrackerで並列にReduce処理を行う