Hadoopの仕組みを易しく解説!メリットとデメリットは何?

▼この記事をSNSでシェアする▼

スポンサーリンク

スポンサーリンク

Hadoop

みなさんはご存知ですか?

ITを少しかじっている人にはわかる人もそうでない人もいると思います。

まあサーバーサイドの最新技術なんですけど、その全貌とか仕組みとかをね、やさしめに説明しようかと思います。

詳しいファイルシステムとかサーバの細かい制御とかについては触れていないのであしからず。

hadoopとは

Apache Hadoopの略です。

一言で平易な言葉で言うと、大量のデータ処理を分散的に効率よく処理するための仕組みです。

ビッグデータなどの処理に時間を要する膨大なデータを分散処理するミドルウェアで、javaで書かれている。正確にはソフトウェアではなくOSS(オープンソースソフトウェア)のフレームワークといったところである。

このOSSフレームワークはGoogle社が論文として発表した基盤技術が由来となっていて、開発を主導したDoug氏のお子さんが持っていたお気に入りの象のぬいぐるみの名前がHadoopの語源らしい。

アーキテクチャ

Hadoopのアーキテクチャの特徴はこの二つだ。

  • HDFSというファイルシステム
  • 分散処理基盤のMap Reduce

HDFS

  • マスターサーバ(主)とスレーブサーバ(副)からなる。
  • Google File Systemがベースの仕組みです。
  • Name Nodeでのトラフィックはボトルネックにはなりにくい
  • データの書き込みはData Nodeと直接通信を行う
  • 128MBごとにデータを分割処理する

データを分散して保存するHadoopのファイルシステム

HadoopのファイルシステムであるHDFSは、だいたいこんなイメージです。主にデータはスレーブサーバという子の関係にあるサーバに二重・三重に(冗長的に)格納されていて、マスタサーバがクライアントからの問い合わせに対して、データの位置を応答し、そことクライアントがやり取りする仕組みとなっています。

データがあるノードでCPUをフルに使えるので高負荷に耐えやすいデータ管理システムである。

Map Reduce

  • TaskTracker(主)とJobTracker(副)からなる
  • JobTrackerは、MapReduceジョブの管理やTaskTrackerへのタスクの割り当て、TaskTrackerのリソース管理を担う。
  • TaskTrackerは、タスクの実行を担う。
  • 128MBごとにデータを分割処理する。
  • 入力したデータを分け、総データ量を小さくし、HDFSで管理しやすいデータの分散格納を実現する
  • map処理:入力ファイルの各行からkeyとvalueを生成する
  • reduce処理:mapで作られたkeyとvalueの組み合わせを再構成する。

分散処理を実現する処理エンジンで、並列分散用のmapとreduceという動作を組み合わせて行う仕組みである。

メリット

  • OSSのミドルウェア

→個人と企業に関係なく自由に活用できる。

  • データの可用の高さ

→データノードを冗長的に構成できるため、データノードが一つダメになってもデータの運用が問題なく行える。

  • サーバーの負荷に強さ、処理の速さ

→分散したデータノードのCPUを効率的に使えるので、従来のRDBMSが特定のサーバに集約されたシステムに比べ、特定のサーバに負荷の高い処理をさせる危険が少ない。

  • 拡張性の高さ

→データノードを追加することでデータ使用率の増加やシステムのストレージ容量の増加にも柔軟に対応しやすい。

  • 低コスト

→Hadoopのシステムには専用のサーバやストレージなどのハードウェアを必要としないため

デメリット

  • HDFSの運用が複雑です。

→データノード群に複数の同じデータが存在し、コピーして保存する際に専用のAPIが必要になる。

  • Map Reduceが効率的でない場合がある

→Mapから出力されるキー毎のデータペアに偏りがある場合、Reduceしたデータが特定のブロックに集中しボトルネックになることがあります。行列演算や結合において同様の事象が起こることが多い。

展望

一見すると先進的なファイルシステムや分散処理基盤により、大規模のデータ処理が高速化するようにも思えますが、分散処理のところがボトルネックになり、期待する効果が得られない場合もあります。

それにまだまだHadoopの導入事例も徐々に増えつつありますが、まだまだ少ないです。

そうしたところで導入に慣れているエンジニアや会社にある知見もまだまだ少ないです。

ですが、Hadoopno導入により業種問わず、データのバッチ処理が高速ができたり、大規模な検索システムの負荷が低減できたりと良い効果が上がっています。

従来のRDBMSの冗長化構成に取って代わるには分散処理基盤にやや懸念がありますが、これからのビッグデータの発展を支える技術になるような気がしています。

メニュー・主な記事カテゴリ

おすすめ特集!




「ゆとり鳥日記」について
ITを中心に関心の赴くままに好きなように書いていく雑記ブログ!管理人が二人います。
◆フクロウ(19卒就活生)
◆トンビ(社会人1年目SE)

詳しいプロフィール
お仕事の依頼・ご要望

ゆとり鳥日記をBTCで応援する