.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。

目次

概要

Apache Hadoopは

  • Javaで書かれている。
  • 数千ノードおよびペタバイト級の分散処理を支えるOSSフレームワーク。
  • GoogleのMapReduceおよびGoogle File System(GFS)論文に触発されたもの。

アーキテクチャ

Hadoopは、以下の4つのモジュールによって構成されている。

Hadoop Common

他のモジュールから共通して利用されるライブラリ群。

Hadoop Distributed File System (HDFS)

HDFS:Hadoop独自の分散ファイル・システム。

  • 大きなファイルを複数のブロック単位(デフォルトで128MB)に分割して、それらを複数のノードにまたがり格納する。
  • そのブロックの複製(レプリカ)を複数の異なるノードに格納することで信頼性を確保している。そのため、各ホストはRAIDを必要としない。
  • 通常のOSにマウントできないことは制限のひとつであったが、Hadoop 2.2以降のバージョンではNFSv3マウントに対応している。
  • HDFSはマスタースレーブ型の構成

NameNode?

マスターの役割を担当する。

  • HDFSに関するメタ情報(ファイルとブロックの対応関係など)を保持し、各DataNodeが実データをブロック単位で保持する。
  • 任意のDataNodeが故障した場合は、自動でそれを検知し、故障したDataNodeの保持ブロックを別のDataNodeから参照するよう命令する。
  • このようにしてDataNodeが故障した場合も自動的にレプリケーション数が維持されるため、DataNodeが故障してもサービスに影響は発生しない。
  • 単一障害点であったが、Hadoop 2.2でHA機能が実装されたため単一障害点ではなくなった。

DataNode?

スレーブの役割を担当する。

  • レプリケーション数のデフォルトは3で、この場合、2つのデータを同じラック内のノードに、残り1つを異なるラック内のノードに保存する。
  • 数1000台規模までスケールアウト可能。その場合、数10PB規模のデータを格納できる。

Hadoop Yet Another Resource Negotiator (YARN)

Hadoopクラスタのリソース管理、ジョブスケジューリングを担当。Hadoop 2.2から利用可能。

課題

  • クラスタ規模の拡大
    Hadoop 1系までのMapReduceエンジンにおけるマスタ(JobTracker)が
    以下の3つを担当する必要があったため、JobTrackerの負荷が大きく、
    Hadoopクラスタの台数は1000台程度が限界であった。
    • クラスタのリソース管理
    • クラスタ内で実行されるMapReduceジョブのスケジューリング
    • MapReduceジョブ自体のスケジューリング(各タスクに対する入力データの割り当てや進捗管理)
  • リソース管理の効率化
    • Hadoop 1系までのMapReduceエンジンにおけるスレーブ(TaskTracker)ではMapタスク用、
      Reduceタスク用にそれぞれスロットが用意されており、そこにMapReduceの各タスクが割り当てられる。
    • ここで、Mapタスク用のスロットに空きがない場合は、Reduceタスク用のスロットに空きがあったとしても
      Mapタスクをこれ以上割り当てることができず、TaskTrackerのリソース使用率が低下する問題があった。
  • MapReduce以外の分散処理の実行
    Hadoopで分散処理するためには、必ずMapReduceの仕組みに当てはめる必要があった。
    • MapReduceが2回以上連続するような処理を実行する場合、
      • 前段のMapReduceジョブの処理結果をHDFSに書き込み、
      • それを後続のMapReduceで読み込む、という流れになる。
    • ここでHDFSに中間データを書き込むため、処理が非効率である。
      多段のMapReduceとなるような処理を高速化するために、
      MapReduceフレームワークとは異なる分散処理が必要であった。

機能

Hadoop 1系までのMapReduceからクラスタのリソース管理、ジョブスケジューリングを分離したもの。

  • HDFSと同様に、マスタースレーブ型の構成

などの様々な分散処理フレームワークが動作する。

Hadoop MapReduce?

  • MapReduceの実装。
    • 可能な限り入力データを保持するDataNodeと同一ノードでMapタスクが実行されるようにスケジューリングされる。
    • これにより、大規模データ処理においてもネットワークの負荷を抑えることが可能である。
  • Hadoop 2系以降は、MRv1をサポートしていない。
    YARN上でMapReduce上が動作し、MRv2と呼ばれる。

ファイル・システム

HDFS以外のファイル・システムもサポートしている。

  • Amazon Simple Storage Service (S3)
  • OpenStack? Swift
  • Microsoft Azure
  • FTP、HTTP、およびHTTPS経由でアクセス可能なファイル・システム

MRv1

MapReduceエンジンはひとつのJobTrackerを持ち、クライアントはこのJobTrackerに向けてMapReduceジョブを投入する。

MRv2

Hadoop MapReduceの管理コンポーネント

JobTracker?

旧マスタ(リソース管理、ジョブスケジューリング)ノード

TaskTracker?

旧スレーブ(割り当てられた処理の実行)ノード

  • TaskTrackerが停止するか、実行中のタスクがタイムアウトすると、その部分のタスクは再スケジュールされる。

ResourceManager?

投入されたMapReduceジョブを管理するノード。

NodeManager?

  • MapReduce用に特化したスロットではなく、
    より汎用化したコンテナ単位でリソースを割り当てる。
  • ApplicationMasterもそのコンテナ上で動作する。

ApplicationMaster?

MapReduceを含む各アプリケーション用にそれぞれ専用のApplicationMaster?が実行される。

  • Mapタスク、Reduceタスクの割り当てやタスクの進捗管理を担当する。
  • 必要なリソースは都度ResourceManagerに問合せ払い出してもらう。

エコシステム

分散処理フレームワーク

分散処理エンジン

分散ストリーム処理

DWH、データストア

Apache Hive(DWH)

HBase、Kudu(データストア)

Asakusa Framework

ノーチラス・テクノロジーズが開発した、Hadoop用の開発・運用フレームワーク

参考

MapReduce?

Google File System(GFS)


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2020-04-07 (火) 19:03:30 (52d)