Apache Hadoop ソフトウェアは、オープンソースのフレームワークで、シンプルなプログラミング モデルを使用して複数のコンピュータ クラスタにまたがる大規模なデータセットの分散ストレージと処理を可能にします。Hadoop は、1 台のコンピュータから数千台のクラスタ化されたコンピュータまでスケールアップできるように設計されており、マシンごとにローカルでの演算処理とストレージを提供します。この方法により、Hadoop はギガバイトからペタバイトまでの幅広いサイズのデータで、大規模なデータセットを効率的に保存、処理できます。
Managed Service for Apache Spark を使用して Google Cloud 上で Apache Hadoop クラスタをよりシンプルで統合され、費用対効果に優れた方法で実行する使い方について学びましょう。
Hadoop は、ワールド ワイド ウェブ(WWW)の初期に誕生しました。ウェブが数百万ページ、そして数十億ページに拡大するにつれて、検索して検索結果を返すというタスクは、最も重要な課題の一つになりました。Google、Yahoo、AltaVista などのスタートアップ企業は、検索結果を自動化するためのフレームワークの構築を開始しました。Nutch と呼ばれるプロジェクトは、コンピュータ サイエンティストの Doug Cutting 氏と Mike Cafarella 氏が、Google の初期の MapReduce(後述)と Google File System に関する研究に基づいて構築したものです。Nutch は最終的に Apache オープンソース ソフトウェア ファンデーションに移管され、Nutch と Hadoop に分割されました。Cutting が 2006 年に働き始めた Yahoo は、2008 年に Hadoop をオープンソース化しました。
Hadoop は High Availability Distributed Object Oriented Platform の頭字語と呼ばれることもありますが、元々は、Cutting の息子のおもちゃのゾウにちなんで名付けられました。
Hadoop は、Java ベースのオープンソース フレームワークで、アプリケーション向けに大量のデータのストレージと処理を管理します。Hadoop では、分散ストレージと並列処理を使用してビッグデータと分析のジョブを処理し、ワークロードを同時に実行できる小さなワークロードに分割します。
主要な Hadoop フレームワークは 4 つのモジュールで構成され、モジュール同士が連携して Hadoop エコシステムを形成します。
Hadoop 分散ファイル システム(HDFS): Hadoop エコシステムの主要コンポーネントである HDFS は、個々の Hadoop ノードがローカル ストレージに保存されているデータを処理する分散ファイル システムです。これにより、ネットワーク レイテンシが解消され、アプリケーション データへの高スループット アクセスが実現します。また、管理者は事前にスキーマを定義する必要もありません。
Yet Another Resource Negotiator(YARN): YARN は、クラスタ内のコンピューティング リソースを管理し、ユーザーのアプリケーションをスケジュールするためのリソース管理プラットフォームです。Hadoop システム全体のスケジュール設定とリソース割り振りを実行します。
MapReduce: MapReduce は、大規模なデータ処理のためのプログラミング モデルです。MapReduce モデルでは、大規模なデータセットのサブセットとサブセットを処理する手順が複数の異なるノードにディスパッチされ、各サブセットは他の処理ジョブと並行してノードによって処理されます。結果を処理した後、個々のサブセットが結合され、より小さく管理しやすいデータセットになります。
Hadoop Common: Hadoop Common には、他の Hadoop モジュールで使用、共有されるライブラリやユーティリティが含まれます。
HDFS、YARN、MapReduce にとどまらず、Hadoop のオープンソース エコシステム全体が成長を続けており、ビッグデータの収集、保存、処理、分析、管理を支援する多くのツールやアプリケーションがあります。たとえば、Apache Pig、Apache Hive、Apache HBase、Apache Spark、Presto、Apache Zeppelin があります。
Hadoop では、データセットをコモディティ ハードウェアのクラスタ全体に分散できます。処理は複数のサーバーで同時に並行して行われます。
ソフトウェア クライアントが Hadoop にデータを入力します。HDFS はメタデータと分散ファイル システムを処理します。MapReduce は、データを処理して変換します。最後に、YARN がコンピューティング クラスタ全体にジョブを分散します。
すべての Hadoop モジュールは、マシンが個々にまたはラックごとハードウェア障害を起こすことはありふれた事象であり、フレームワークによってソフトウェアで自動的に処理されるべきであるという基本的な前提に基づいて設計されています。
スケーラビリティ
Hadoop は、膨大な量のデータを迅速に保存および処理するための主要なツールの一つとして重要です。これを実現するために、分散コンピューティング モデルを使用します。このモデルでは、コンピューティング ノードを追加することで迅速にスケーリングできるデータを高速で処理できます。
低コスト
Hadoop は、コモディティ ハードウェアで実行でき、ツールのエコシステムが大規模なオープンソース フレームワークであるため、ビッグデータの保存と管理のための低コストのオプションです。
柔軟性
Hadoop では、データを保存する前に前処理する必要がないため、データ ストレージの柔軟性が確保されます。つまり、組織は必要なだけデータを保存し、後で利用できます。
復元力
分散コンピューティング モデルである Hadoop は、フォールト トレランスとシステム復元力を備えています。つまり、ハードウェア ノードの 1 つに障害が発生した場合、ジョブは他のノードにリダイレクトされます。1 つの Hadoop クラスタに保存されたデータは、システム内の他のノードに複製され、ハードウェアやソフトウェアの障害の可能性に備えます。
ファイル集約型のシステムである MapReduce は、インタラクティブな分析タスクなどの複雑なジョブには利用しにくいツールです。MapReduce 関数も Java で記述する必要があり、習得に時間がかかる場合があります。MapReduce エコシステムは非常に大きく、さまざまな機能に対応する多くのコンポーネントがあるため、使用するツールを決定するのが難しい場合があります。
Hadoop はこのような大規模なデータセットを処理するため、データの機密性と保護が問題になる可能性があります。認証、暗号化、監査、プロビジョニングのためのツール エコシステムが生まれ、デベロッパーが Hadoop のデータを保護できるようになりました。
Hadoop には、データ マネジメントとガバナンス、およびデータ品質と標準化のための堅牢なツールがあまりありません。
プログラミングの多くの分野と同様に、Hadoop にも人材不足が認められています。MapReduce、オペレーティング システム、ハードウェアをプログラミングするための Java の必要なスキルをすべて備えた開発者を見つけるのは困難です。さらに、MapReduce は習得が難しいため、新しいプログラマーがベスト プラクティスとエコシステムを習得するのに時間がかかります。
調査会社の IDC は、モノのインターネット、ソーシャル メディア、エッジ コンピューティング、クラウドで作成されるデータによって、2020 年に 62.4 ゼタバイトのデータが作成または複製されたと見積もりました。同社は、2020 年から 2025 年までのデータの増加は年間 23% になると予測しています。すべてのデータが保存されるわけではありませんが(使用後に削除されるか、上書きされます)、世界で求められるデータのニーズは増え続けています。
Hadoop には、コア モジュールの機能を強化および拡張できるオープンソース ツールの大規模なエコシステムがあります。Hadoop で使用される主なソフトウェア ツールは次のとおりです。
Apache Hive: プログラマーが SQL に似たクエリ言語である HiveQL というクエリ言語を使用して、HDFS のデータを操作できるようにするデータ ウェアハウス
Apache HBase: 多くの場合 Hadoop とペアになる、オープンソースの非リレーショナル分散データベース
Apache Pig: 大規模なデータセットを分析し、フィルタ、並べ替え、読み込み、結合などの機能を実行する、MapReduce の抽象化レイヤとして使用されるツール
Apache Impala: オープンソースの大規模並列処理 SQL クエリエンジン。Hadoop とともに使用されることが多い
Apache Sqoop: リレーショナル データベースと Hadoop の間でバルクデータを効率的に転送するためのコマンドライン インターフェース アプリケーション
Apache ZooKeeper: Hadoop で信頼性の高い分散調整を可能にするオープンソース サーバー。「構成情報の維持、命名、分散同期の提供、グループ サービスの提供」のためのサービス
Apache Oozie: Hadoop ジョブのワークフロー スケジューラ
Apache Hadoop の一般的なユースケースを次に示します。
分析とビッグデータ
多岐にわたる企業や組織が、テラバイトからペタバイト規模のビッグデータの処理、多様性に富んだデータセットの保存、データの並列処理を必要とする研究、本番環境用データ処理、分析に Hadoop を利用しています。
データの保存とアーカイブ
Hadoop は汎用ハードウェアでの大量のストレージを可能にするため、トランザクション、クリックストリーム、センサーやマシンデータなど、あらゆる種類のデータの低コストのストレージ オプションとして役立ちます。
データレイク
Hadoop は前処理なしでデータを保存できるため、大量の未精製データが保存されるデータレイクを補完するために使用できます。
マーケティング分析
マーケティング部門では、顧客管理(CRM)データの保存と分析に Hadoop を使用することがよくあります。
リスク管理
銀行、保険会社、その他の金融サービス企業は、Hadoop を使用してリスク分析と管理のモデルを構築しています。
AI と ML
Hadoop エコシステムは、機械学習アプリケーションのデータの処理とモデルのトレーニング オペレーションに役立ちます。