Apache Hadoop とは

Apache Hadoop ソフトウェアは、オープンソースのフレームワークで、シンプルなプログラミング モデルを使用して複数のコンピュータ クラスタにまたがる大規模なデータセットの分散ストレージと処理を可能にします。Hadoop は、1 台のコンピュータから数千台のクラスタ化されたコンピュータまでスケールアップできるように設計されており、マシンごとにローカルでの演算処理とストレージを提供します。この方法により、Hadoop はギガバイトからペタバイトまでの幅広いサイズのデータで、大規模なデータセットを効率的に保存、処理できます。

Dataproc を使用して Google Cloud 上で Apache Hadoop クラスタをよりシンプルで統合され、費用対効果に優れた方法で実行する使い方について学びましょう。

Hadoop の履歴

Hadoop の起源はワールド ワイド ウェブの初期の時代です。ウェブが何百万ページ、何十億ページものページへと成長するにつれて、検索結果を検索して返す作業は、最も大きな課題の一つとなりました。Google、Yahoo、AltaVista などのスタートアップが、検索結果を自動化するフレームワークの構築を始めました。Nutch というプロジェクトは、MapReduce(詳細は後述)と Google File System に関する Google の初期の研究に基づいて、コンピュータ サイエンティストの Doug Cutting と Mike Cafarella によって構築されました。Nutch は最終的に Apache オープンソース ソフトウェア基盤に移行し、Nutch と Hadoop で分割されました。Cutting が 2006 年に働き始めた Yahoo は、2008 年に Hadoop をオープンソース化しました。

Hadoop は High Availability Distributed Object Oriented Platform の頭字語と呼ばれることもありますが、元々は、Cutting の息子のおもちゃのゾウにちなんで名付けられました。

Hadoop の定義

Hadoop は、アプリケーション用の大量のデータの保存と処理を管理する Java ベースのオープンソース フレームワークです。Hadoop では、分散ストレージと並列処理を使用してビッグデータと分析のジョブを処理し、ワークロードを同時に実行できる小さなワークロードに分割します。

主要な Hadoop フレームワークは 4 つのモジュールで構成され、モジュール同士が連携して Hadoop エコシステムを形成します。

Hadoop 分散ファイル システム(HDFS): Hadoop エコシステムの主要なコンポーネントである HDFS は、個々の Hadoop ノードがローカル ストレージにあるデータを操作する分散ファイル システムです。これにより、ネットワーク レイテンシが軽減され、アプリケーション データへの高スループットのアクセスが可能になります。また、管理者が事前にスキーマを定義する必要はありません。

Yet Another Resource Negotiator(YARN): YARN は、クラスタ内のコンピューティング リソースを管理し、ユーザーのアプリケーションをスケジュールするためのリソース管理プラットフォームです。Hadoop システム全体のスケジュール設定とリソース割り振りを実行します。

MapReduce: MapReduce は、大規模なデータ処理のためのプログラミング モデルです。MapReduce モデルでは、より大きなデータセットのサブセットとサブセットの処理命令が複数の異なるノードにディスパッチされます。各サブセットは、1 つのノードで他の処理ジョブと並行して処理されます。結果を処理した後、個々のサブセットは、より小規模で管理しやすいデータセットに結合されます。

Hadoop Common: Hadoop Common には、他の Hadoop モジュールで使用、共有されるライブラリやユーティリティが含まれます。

HDFS、YARN、MapReduce にとどまらず、Hadoop のオープンソース エコシステム全体が成長を続けており、ビッグデータの収集、保存、処理、分析、管理を支援する多くのツールやアプリケーションがあります。たとえば、Apache Pig、Apache Hive、Apache HBase、Apache Spark、Presto、Apache Zeppelin があります。

Hadoop の仕組み

Hadoop では、コモディティ ハードウェアのクラスタにデータセットを分散できます。処理は複数のサーバーで同時に並行して行われます。

ソフトウェア クライアントが Hadoop にデータを入力します。HDFS はメタデータと分散ファイル システムを処理します。その後、MapReduce がデータを処理して変換します。最後に、YARN によってコンピューティング クラスタ全体でジョブが分割されます。

すべての Hadoop モジュールは、マシンが個々にまたはラックごとハードウェア障害を起こすことはありふれた事象であり、フレームワークによってソフトウェアで自動的に処理されるべきであるという基本的な前提に基づいて設計されています。

Hadoop のメリット

スケーラビリティ

Hadoop は、大量のデータを迅速に保存して処理するための主要なツールの一つとして重要です。これは、コンピューティング ノードを追加することで迅速にスケーリングできるデータの高速処理を可能にする分散コンピューティング モデルを使用することで実現されます。

低コスト

コモディティ ハードウェア上で実行でき、ツールの大規模なエコシステムを備えたオープンソース フレームワークである Hadoop は、ビッグデータのストレージと管理のための低コストのオプションです。

柔軟性

Hadoop は、データを保存する前に前処理する必要がないため、データ ストレージに柔軟性をもたらします。つまり、組織は好きなだけデータを保存して、後で利用することができます。

復元力

分散コンピューティング モデルである Hadoop は、フォールト トレランスとシステム レジリエンスを実現します。つまり、いずれかのハードウェア ノードで障害が発生した場合に、ジョブが他のノードにリダイレクトされます。1 つの Hadoop クラスタに保存されたデータは、システム内の他のノード間で複製され、ハードウェアやソフトウェアの障害の可能性に備えます。

Hadoop の課題

MapReduce の複雑さと制限事項

ファイル集約型のシステムである MapReduce は、インタラクティブな分析タスクなどの複雑なジョブに使用するのが難しいツールです。また、MapReduce 関数は Java で記述する必要があり、習得に時間がかかる可能性があります。MapReduce エコシステムは非常に大規模で、さまざまな機能のコンポーネントが多数存在するため、使用するツールを決定するのが難しくなる可能性があります。

セキュリティ

Hadoop はこのような大規模なデータセットを処理するため、データの機密性と保護が問題になることがあります。認証、暗号化、監査、プロビジョニング用のツールからなるエコシステムが登場し、デベロッパーが Hadoop 内のデータを保護できるようになりました。

ガバナンスとマネジメント

Hadoop には、データ マネジメントとガバナンス、およびデータ品質と標準化のための堅牢なツールがあまりありません。

人材の不足

多くのプログラミング分野と同様に、Hadoop にも人材ギャップがあることが広く認知されています。MapReduce、オペレーティング システム、ハードウェアのプログラミングに必要な Java スキルを備えたデベロッパーを見つけるのは難しい場合があります。さらに、MapReduce は習得が難しいため、新しいプログラマーがベスト プラクティスとエコシステムを素早く理解するのは困難です。

Hadoop が重要な理由

調査会社の IDC は、モノのインターネット、ソーシャル メディア、エッジ コンピューティング、クラウドで作成されるデータによって、2020 年に 62.4 ゼタバイトのデータが作成または複製されたと見積もりました。同社は、2020 年から 2025 年までのデータの増加は年間 23% になると予測しています。すべてのデータが保存されるわけではありませんが(使用後に削除されるか、上書きされます)、世界で求められるデータのニーズは増え続けています。

Hadoop ツール

Hadoop にはオープンソース ツールの大規模なエコシステムがあり、コア モジュールの機能を強化、拡張できます。Hadoop では、主に次のようなソフトウェア ツールが使用されます。

Apache Hive: プログラマーが SQL に似たクエリ言語である HiveQL というクエリ言語を使用して、HDFS のデータを操作できるようにするデータ ウェアハウス

Apache HBase: 多くの場合 Hadoop とペアになる、オープンソースの非リレーショナル分散データベース

Apache Pig: 大規模なデータセットを分析し、フィルタ、並べ替え、読み込み、結合などの機能を実行する、MapReduce の抽象化レイヤとして使用されるツール

Apache Impala: Hadoop でよく使用されるオープンソースの超並列処理 SQL クエリエンジン

Apache Sqoop: リレーショナル データベースと Hadoop の間で一括データを効率的に転送するためのコマンドライン インターフェース アプリケーション

Apache ZooKeeper: Hadoop で信頼性の高い分散調整を可能にするオープンソース サーバー。「構成情報の維持、命名、分散同期の提供、グループ サービスの提供」のためのサービス

Apache Oozie: Hadoop ジョブ用のワークフロー スケジューラ

Apache Hadoop の用途

Apache Hadoop の一般的なユースケースを次に示します。

分析とビッグデータ

多岐にわたる企業や組織が、テラバイトからペタバイト規模のビッグデータの処理、多様性に富んだデータセットの保存、データの並列処理を必要とする研究、本番環境用データ処理、分析に Hadoop を利用しています。

データの保存とアーカイブ

Hadoop はコモディティ ハードウェア上で大容量ストレージを使用できるため、トランザクション、クリック ストリーム、センサーデータ、マシンデータなど、あらゆる種類のデータの低コストのストレージ オプションとして有用です。

データレイク

Hadoop は前処理なしでデータを保存できるため、大量の精緻化されていないデータが保存されるデータレイクを補完するために使用できます。

マーケティング分析

マーケティング部門では、顧客管理(CRM)データの保存と分析に Hadoop を使用することがよくあります。

リスク管理

銀行、保険会社、その他の金融サービス企業は、Hadoop を使用してリスク分析と管理モデルを構築しています。

AI と ML

Hadoop エコシステムは、機械学習アプリケーションのデータの処理とモデルのトレーニング オペレーションに役立ちます。

次のステップ

$300 分の無料クレジットと 20 以上の Always Free プロダクトを活用して、Google Cloud で構築を開始しましょう。

Google Cloud
  • ‪English‬
  • ‪Deutsch‬
  • ‪Español‬
  • ‪Español (Latinoamérica)‬
  • ‪Français‬
  • ‪Indonesia‬
  • ‪Italiano‬
  • ‪Português (Brasil)‬
  • ‪简体中文‬
  • ‪繁體中文‬
  • ‪日本語‬
  • ‪한국어‬
コンソール
  • Google Cloud プロダクト
  • 100 種類を超えるプロダクトをご用意しています。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。また、すべてのお客様に 25 以上のプロダクトを無料でご利用いただけます(毎月の使用量上限があります)。
Google Cloud