Hadoop エコシステムとそのコンポーネントの図表
Hadoop エコシステムとそのコンポーネントを理解する前に、まず Hadoop の 3 つの主要コンポーネント、つまり HDFS、MapReduce、YARN について理解しましょう。これらは合わせて Hadoop 分散コンピューティング フレームワークのコアを構成します。
-
HDFS (
Hadoop Distributed File System
): HDFS は Hadoop の分散ファイル システムであり、大規模なデータを複数のノードに分散して保存するための基盤です。HDFS は主にデータの保存と管理を担当し、大規模なデータ セットを複数のデータ ブロックに分割し、これらのデータ ブロックを異なるコンピューティング ノードに分散して保存することで、データの信頼性と処理効率を向上させることができます。 -
MapReduce : MapReduce は、Hadoop の分散コンピューティング フレームワークです。シンプルなプログラミング モデルを提供します。大規模なデータを複数の小さなタスクに分解して並列処理することで、データ処理の効率を大幅に向上させることができます。MapReduce モデルには、データを複数の小さな部分に分解して処理する Map フェーズと、処理結果をマージする Reduce フェーズの 2 つのフェーズが含まれています。
-
YARN (
Yet Another Resource Negotiator
Hadoop のリソース マネージャーであり、複数のアプリケーションに対するコンピューティング リソースの割り当てと管理を担当し、コンピューティング リソースの使用率を効果的に向上させることができます。YARN は、クラスター内のコンピューティング リソースを複数のコンテナーに分割し、さまざまなアプリケーションに適切なリソースを提供し、各アプリケーションの実行ステータスを監視および管理できます。
1.HDFS
HDFS は、安価なハードウェアに大きなファイルを保存するために設計された Hadoop の分散ファイル システムです。耐障害性が高く、アプリケーションに高いスループットを提供します。HDFS は、非常に大規模なデータ セットを含むアプリケーションに最適です。
Hadoop HDFS ファイル システムはマスターおよびスレーブ アーキテクチャを提供します。マスター ノードは Namenode デーモンを実行し、スレーブ ノードは Datanode デーモンを実行します。
2.マップリデュース
MapReduceは Hadoop のデータ処理層であり、タスクを小さなチャンクに分割し、これらの小さなチャンクをネットワークで接続された多数のマシンに分散し、すべてのイベントを最終的なイベント データ セットに組み立てます。MapReduce に必要な基本的な詳細は、キーと値のペアです。すべてのデータは、構造化されているかどうかにかかわらず、MapReduce モデルに渡す前にキーと値のペアに変換する必要があります。MapReduce フレームワークでは、データが処理ユニットに移されるのではなく、処理ユニットがデータに移動されます。
3.糸
YARN はの略でYet Another Resource Negotiator
、Hadoop クラスターのリソース マネージャーです。YARN は、Hadoop クラスターでのリソース管理とジョブ スケジューリングの実装に使用されます。YARN の主なアイデアは、ジョブのスケジューリングとリソース管理を個別のプロセスに分割して運用することです。
YARN は 2 つのデーモン プロセスを提供します。1 つ目はリソース マネージャー ( Resource Manager
) と呼ばれ、2 つ目はノード マネージャー ( Node Manager
) と呼ばれます。どちらのコンポーネントも、YARN でのデータ計算を処理するために使用されます。リソース マネージャーは Hadoop クラスターのマスター ノードで実行され、すべてのアプリケーションのリソースをネゴシエートしますが、ノード マネージャーはすべてのスレーブ ノードでホストされます。ノード マネージャーの責任は、コンテナー、リソースの使用状況 (CPU、メモリ、ディスク、ネットワークなど) を監視し、リソース マネージャーに詳細を提供することです。
4.ハイブ
Hive は、 Hadoop のデータ ウェアハウスプロジェクトです。Hive は、非公式なデータの要約、アドホックなクエリ、および大量のデータの解釈を容易にするように設計されています。HiveQL を使用すると、ユーザーは HDFS に保存されたデータセットに対してアドホック クエリを実行し、そのデータをさらなる分析に使用できます。Hive は、ユーザーがカスタム分析を実行するために使用できるカスタム ユーザー定義関数もサポートしています。
Apache Hive が SQL クエリをどのように処理するかを理解してみましょう。
- ユーザーは、コマンド ラインまたは Web UI を使用してドライバー (ODBC/JDBC など) にクエリを送信します。
- ドライバーは、クエリ コンパイラーの助けを借りてクエリを解析し、構文/クエリ プランをチェックします。
- コンパイラはメタデータ リクエストをメタデータ データベースに送信します。
- それに応じて、メタストアはメタデータをコンパイラに提供します。
- 仕様を検証し、計画をドライバーに再送信するのはコンパイラーの仕事です。
- ここで、ドライバーは実行計画を実行エンジンに送信します。
- プログラムはマップリデュースジョブとして実行されます。実行エンジンは、ジョブをネーム ノード ジョブ トラッカーに送信し、データ ノードに存在するタスク トラッカーをジョブに割り当て、そこでクエリを実行します。
- クエリが実行されると、実行エンジンはデータ ノードから結果を受け取ります。
- 実行エンジンは結果値をドライバーに送信します。
- ドライバーは結果を Hive インターフェイス (ユーザー) に送信します。
5.豚
Pig は、 Hadoop HDFS に保存されたビッグデータを分析するために Yahoo によって開発されました。Pig は、データ分析アプリケーションを通信するための高級言語で構成され、これらのプログラムを評価するためのインフラストラクチャとリンクされた、大規模なデータセットを分析するためのプラットフォームを提供します。
Pig には次の重要な特性があります。
- 最適化の機会: Pig はクエリの最適化を提供し、ユーザーが効率ではなく意味に集中できるようにします。
- 拡張性: Pig は、特殊な目的の処理のためのユーザー定義関数を作成する機能を提供します。
6.象使い
Mahout は、機械学習アプリケーションを作成するためのフレームワークです。選択したアルゴリズムを使用してカスタマイズされたレコメンデーション システムを構築するために使用できるコンポーネントの豊富なセットが提供されます。Mahout は、実行、拡張性、およびコンプライアンスを提供するために開発されました。
これらの主要な抽象化の Mahout インターフェイスを定義する重要なパッケージを次に示します。
DataModel
UserSimilarity
ItemSimilarity
UserNeighborhood
7.Hベース
HBase は、Google Bigtable の後に作成された、分散型のオープンソースで、バージョン管理された非リレーショナル データベースです。これは Hadoop エコシステムの重要なコンポーネントであり、HDFS の耐障害性を利用してデータへのリアルタイムの読み取りおよび書き込みアクセスを提供します。HBase はデータベースですが、トリガー、クエリ言語、セカンダリ インデックスなどの RDBMS 機能を提供しないため、データ ストレージ システムと呼ぶこともできます。
HBase には次の機能があります。
- 継続的なモジュール拡張性を提供します。
- 定期的な読み取りと書き込みを提供します。
- 直感的で構成可能なテーブルシャーディング。
- リージョンサーバー間の自動フェイルオーバーのサポート。
- これは、Apache HBase テーブルを使用して Hadoop MapReduce ジョブをサポートするための中心的な基本クラスを提供します。
- Java API を使用したクライアント アクセスは簡単です。
- クエリ述語はサーバー側のフィルターを通じてプッシュダウンされます。
- Thrift ゲートウェイと REST-ful Web サービスを提供し、XML、Protobuf、およびバイナリ データ エンコーディングの選択肢をサポートします。
8.動物園の飼育員
Zookeeper は、さまざまな Hadoop サービス間のコーディネーターとして機能し、構成情報の維持、名前付け、分散同期の提供、およびグループ サービスの提供を行います。Zookeeper は、分散環境で新しくデプロイされたアプリケーションのバグや競合状態を修正するために使用されます。
9.スクープ
Sqoop は、Hadoop とリレーショナル データベース間でデータを転送するためのデータ転送ツールです。これは、リレーショナル データベース管理システム (MySQL または Oracle) またはメインフレームから Hadoop (HDFS) にデータをインポートし、Hadoop MapReduce でデータを変換するために使用されます。データを RDBMS にエクスポートするためにも使用されます。Sqoop はmap-reduce
データのインポートとエクスポートに使用するため、並列処理とフォールト トレランスを備えています。
10.フルーム
Flumeは Sqoop に似たログ トランスポート ツールですが、Sqoop は構造化データと非構造化データの両方で動作するのに対し、Sqoop は非構造化データ (ログ) で動作します。Flume は、さまざまなソースから大量のログ データを効率的に収集、集約し、HDFS に移動するための信頼性が高く、分散型で利用可能なシステムです。ログ データの集約に限定されず、大量のイベント データの転送にも使用できます。
Flume には次の 3 つのコンポーネントがあります。
Source
Channel
Sink
11.それでは
Oozie は、Hadoop Map/Reduce および Pig ジョブをスケジュールするためのワークフロー スケジューリング フレームワークです。Apache Oozie ワークフローは、コントロール依存の DAG (有向非巡回グラフ) に配置された、Hadoop Map/Reduce ジョブ、Pig ジョブなどの操作のコレクションです。あるアクションから別のアクションへの「制御依存関係」は、最初のアクションが完了するまで別のアクションが開始されないことを示します。
Oozie ワークフローには、制御フロー ノードと操作ノードという 2 つのノードがあります。
-
制御フロー ノード(
Control Flow Nodes
): これらのノードは、ワークフローの実行パスを制御するメカニズムを提供するために使用されます。 -
オペレーション ノード(
Action Node
): オペレーション ノードは、ワークフローが Hadoop MapReduce、HDFS、Pig、SSH、HTTP ジョブなどの計算/処理タスクの実行をトリガーするメカニズムを提供します。
12. アンバリ
Ambariは、Apache Hadoop クラスターの構成、管理、監視に使用されます。
システム管理者に次のタスクを提供します。
-
Hadoop クラスターの構成: 任意の数のノードに Hadoop サービスをインストールするための媒体を提供します。また、クラスターの Hadoop サービスの構成も処理します。
-
Hadoop クラスターの管理: クラスター全体の開始、停止、再構成などの Hadoop サービスを管理するための集中制御を提供します。
-
Hadoop クラスター監視: Hadoop クラスター (ノードのダウン、残りのディスク容量の低下など) を監視するためのダッシュボードを提供します。
13.スパーク
Spark は、汎用の高速クラスター コンピューティング システムです。非常に強力なビッグデータ ツールです。Spark は、Python、Scala、Java、R、およびその他の言語で豊富な API を提供します。Spark は、Spark SQL、GraphX、MLlib、Spark Streaming、R などの高度なツールをサポートしています。これらのツールは、さまざまな種類の操作を実行するために使用されます。これについては、「Spark」セクションで説明します。