Hadoop クラスタ
Hadoop クラスタとは
Apache Hadoop とは、オープンソースの Java ベースのソフトウェアフレームワークで、並列データ処理エンジンです。アルゴリズム(MapReduce アルゴリズムなど)を使用してビッグデータ分析処理タスクを並列 実行できる小さなタスクに分割し、Hadoop クラスタ全体に分散させることができます。Hadoop クラスタとは、ビッグデータセットに対してこのような並列計算を実行するためにネットワーク化された、ノードと呼ばれるコンピュータの集合体です。Hadoop クラスタは、他のコンピュータクラスタとは異なり、分散コンピューティング環境で大量の構造化・非構造化データを格納および分析するために特別に設計されています。Hadoop エコシステムが他のコンピュータクラスタと異なる点は、独自の構造とアーキテクチャです。Hadoop クラスタは、高可用性、低コストのコモディティハードウェアを利用する、接続されたマスターノードとスレーブノードのネットワークから構成されます。ボリュームの要求に応じてノードを直線的にスケーリングし、素早く加算または減算する機能により、データセットのサイズの変化が大きいビッグデータ分析に適しています。
Hadoop クラスタアーキテクチャ
Hadoop クラスタは、Hadoop 分散ファイルシステム全体でさまざまなジョブを編成および実行するマスターノードとワーカーノードのネットワークから構成されます。マスターノードは通常、高品質のハードウェアを使用し、それぞれに別のマシンで実行されるネームノード、セカンダリネームノード、およびジョブトラッカーが含まれています。ワーカーノードは、コモディティハードウェア上でデータノードとタスクトラッカーの両方のサービスを実行する仮想マシンで構成され、マスターノードの指示に従ってジョブを格納および処理する実際の作業を行います。システムの最後の部分は、データのロードと結果のフェッチを担当するクライアントノードです。
- マスターノード:HDFS にデータを格納し、MapReduce を使用してデータに対する並列計算を実行するなどの主要な操作を監督する役割を担います。
- ワーカーノード:Hadoop クラスタ内のほとんどの仮想マシンを構成し、データの格納と計算のジョブを実行します。各ワーカーノードは、データノードサービスとタスクトラッカーサービスを実行し、マスターノードからの指示を受け取るために使用されます。
- クライアントノード:クラスタへのデータのロードを担当します。クライアントノードは、まずデータの処理方法を記述した MapReduce ジョブを送信し、処理が完了したら結果をフェッチします。
Hadoop のクラスタサイズとは?
Hadoop クラスタサイズは、Hadoop ワークロードを実行するためのストレージと計算能力を定義するメトリックのセットであり、すなわち:
- ノード数:マスターノード数、エッジノード数、ワーカーノード数。
- 各タイプのノードの構成:ノードあたりの コア数、RAM、Disk Volume。
Hadoop クラスタのメリット
- 分析の高速化:Hadoop クラスタは、大規模な計算タスクを並列分散方式で実行できる小さなタスクに分割できるため、多くのビッグデータ分析ジョブの処理速度を向上させることができます。
- スケーラビリティ:Hadoop クラスタはスケーラビリティに優れており、データブロックが増えた場合に、ノードを迅速に追加してスループットを向上させ、処理速度を維持します。
- 低コスト:低コストで高可用性なコモディティハードウェアを使用することによって、Hadoop クラスタのセットアップとメンテナンスは比較的簡単で安価になります。
- レジリエンス:Hadoop クラスタは、分散ファイルシステムの全体にデータセットを複製し、データを、損失やクラスタ障害に対して回復力のあるものにします。
- データの統合:Hadoop クラスタを使用すると、複数の異なるソースシステム、データ形式のデータを統合および活用できます。
- 評価:評価のためにシングルノードインストールを使用して Hadoopを展開することができます。
Hadoopクラスタの課題とは?
- 小さいファイルの問題 - Hadoop は大量の小さいファイル、つまりデフォルトで 128MB または 256MB の Hadoop ブロックサイズより小さいファイルを扱うのに苦労しています。ビッグデータをスケーラブルにサポートするように設計されていないのです。その代わり、Hadoop がうまく機能するのは、大きなファイルが少数である場合です。最終的に小さなファイルの量が増えると、システムの名前空間を保存する Namenode に過大な負荷がかかるのです。
- 高い処理オーバーヘッド - Hadoop での読み取りと書き込みの操作は、特に大量のデータを処理する場合、すぐに非常に高くつくことがあります。これは、Hadoop がインメモリ処理を行えない代わりに、データをディスクから読み書きしていることに起因している。
- バッチ処理のみサポート - Hadoopは少量の大きなファイルを一括して処理するために作られています。これは、データの収集と保存の方法に戻るのですが、これらはすべて処理を開始する前に行わなければなりません。これが最終的に意味するのは、ストリーミングデータに対応しておらず、低レイテンシーでのリアルタイム処理ができないことです。
- 反復処理 - Hadoop のデータフロー構造は逐次的に設定されているため、反復処理や ML への利用は不可能です。