Hadoop分散ファイル・システム(HDFS)とは

2024年6月4日

執筆者

HDFSとは

Hadoop分散ファイル・システム(HDFS)は、汎用ハードウェア上で実行できる大規模なデータ・セットを管理するファイル・システムです。HDFSはHadoopで最も人気のあるデータ・ストレージ・システムで、単一のApache Hadoopクラスターを数百、さらには数千のノードに拡張するために使用できます。HDFSは、高スループットでビッグデータを効率的に管理するため、データ・パイプラインとして使用でき、複雑なデータ分析をサポートするのに最適です。

HDFSはオープンソース・フレームワーク上に構築される、Apache Hadoopの主要コンポーネントの1つです。他の主要コンポーネントには、MapReduceYARNの2つがあります。HDFSと、Apache HBaseは同じではありません。Apache HBaseは、HDFS上に配置され、インメモリー処理エンジンによってリアルタイムのデータ・ニーズをより適切にサポートできる、列指向の非リレーショナル・データベース管理システムです。

ニュースレターを表示しているスマホの画面

The DX Leaders

「The DX Leaders」は日本語でお届けするニュースレターです。AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。

HDFSのメリット

フォールト・トレランスであり、かつハードウェア障害から迅速に回復

1つのHDFSインスタンスは数千台のサーバーで構成される可能性があるため、少なくとも1台のサーバーで障害が発生する可能性が常に存在します。HDFSは、障害を検出し、自動的に迅速に回復するように設計されています。多数のノードにまたがる複数のコピーによるData Replicationは、データ損失の防止に役立ちます。HDFSは、少なくとも1つのコピーを他のすべてのコピーとは異なるラックに格納します。複数のノードにまたがる大規模なクラスター内のこのデータ・ストレージにより、信頼性が向上します。さらに、HDFSはストレージ・スナップショットを取得して、ポイント・イン・タイム(PIT)情報を保存できます。

ストリーミング・データへのアクセス

HDFSは、インタラクティブな使用よりもバッチ処理を主な目的としているため、設計ではデータ・セットへのストリーミング・アクセスに対応する高いデータ・スループット・レートに重点が置かれています。

大規模データ・セットの格納

HDFSは、通常ギガバイトからテラバイトのサイズのデータ・セットを使用するアプリケーションに対応しています。また、高い集約データ帯域幅を提供し、単一のクラスターで数百のノードに拡張でき、高性能コンピューティング(HPC)システムの駆動に役立ちます。データレイクは、多くの場合、HDFSに格納されます。データウェアハウスでもHDFSが使用されてきましたが、操作が複雑であると考えられているため、現在ではあまり使用されていません。

コスト効率

データは仮想的に保存されるため、ファイル・システム・メタデータとファイル・システム名前空間のデータ保存にかかるコストを削減できます。

ポータビリティー

導入を容易にするために、HDFSは複数のハードウェア・プラットフォーム間で移植可能であり、Linux、macOS、Windowsなどのさまざまな基盤となるオペレーティング・システムと互換性があるように設計されています。さらに、Hadoopデータレイクは、最大限の柔軟性を実現するために、非構造化、半構造化、構造化のデータベースをサポートできます。HadoopはJavaでコーディングされていますが、C++、Perl、Python、Rubyなどの他の言語を使用してデータサイエンスで使用することもできます。

処理速度

HDFSは、高スループットを実現するためにクラスター・アーキテクチャーを使用します。ネットワーク・トラフィックを削減するために、Hadoopファイル・システムは、計算のためにデータを別の場所に移動するのではなく、計算が行われるDataNodeにデータを保存します。

拡張性

水平方向と垂直方向の両方の拡張性を備えたHDFSは、組織のデータ・ニーズに合わせて素早く調整できます。クラスターには数百または数千のノードが含まれる場合があります。

AI Academy

生成AIの成功の鍵はデータ管理

生成AIの使用を成功させるために、高品質のデータが不可欠である理由をご覧ください。

HDFSアーキテクチャーとその仕組み

HDFSにはディレクター/ワーカー・アーキテクチャーが含まれています。

  • HDFSクラスターには、ディレクター・サーバーである1つのNameNodeが含まれます。NameNodeは、すべてのファイルのステータス、ファイルの権限、および各ブロックの場所を追跡します。NameNodeソフトウェアはファイル・システムの名前空間を管理し、ファイルへのクライアント・アクセスを追跡および制御し、ファイルのオープン、クローズ、ディレクトリーおよびファイルの名前変更などの操作を実行します。

    ファイル・システムの名前空間は、ファイルをブロックに分割し、そのブロックをシステムのワーカー部分であるDataNodeにマッピングします。クラスターごとに1つのNameNodeのみを構成することで、システム・アーキテクチャーはHDFSメタデータのデータの管理と保存を簡素化します。また、ユーザー・データがNameNodeを通過しないようにすることで、セキュリティーが強化されます。

  • ほとんどの場合、クラスター内のノードごとに1つのDataNodeがあり、ノード内のデータ・ストレージを管理します。DataNodeソフトウェアは、ブロックの作成、削除、複製、および読み取りと書き込みの要求を管理します。各DataNodeは、各ブロックを個別のファイルとして、HDFSデータをローカル・ファイル・システムに個別に保存します。DataNodeはワーカー・ノード(またはバックグラウンドでプロセスを実行するHadoopデーモン)であり、組織がコストを節約したい場合は市販のハードウェア上で実行できます。

NameNodeとDataNodeはどちらも、さまざまなオペレーティング・システム(OS)で実行できるように作成されたソフトウェアであり、多くの場合、GNU/Linux OS です。HDFSの構築にはJava言語が使用されており、Javaをサポートするマシンであれば、NameNodeまたはDataNodeソフトウェアも使用できます。

多くの場合、デプロイメントにはNameNodeソフトウェアを実行する専用のマシンが1台あります。次に、クラスター内の他のマシンは、DataNodeソフトウェアの単一のインスタンスを実行します。必要でも頻繁に使用しない場合は、単一のマシン上に複数のDataNodeを構成することも可能です。

データがHDFSに取り込まれると、ブロックに分割され、クラスター内のさまざまなノードに分散されます。複数のDataNodeにデータが保存されている場合、ブロックを他のノードに複製して並列処理が可能になります。分散ファイル・システム(DFS)には、データに素早くアクセス、取得、移動、表示するためのコマンドが含まれています。複数のDataNodeにわたるデータ・ブロックのレプリカを使用すると、他のコピーのファイルが破損するリスクなしに1つのコピーを削除できます。デフォルトのHDFSブロック・サイズは128 MB(Hadoop 2.x)です。これは大きいと思われるかもしれませんが、ブロック・サイズはシーク時間を最小限に抑え、必要なメタデータを削減するために設定されています。

リスクを最小限に抑え、処理を高速化するために、DataNodeがネーム・ノードへのシグナルを停止すると、そのDataNodeはクラスターから削除され、そのDataNodeなしで操作が続行されます。そのDataNodeが後で動作可能になった場合は、新しいクラスターに割り当てられます。

HDFSは、さまざまなインターフェースを通じて柔軟なデータ・アクセス・ファイルを提供します。ネイティブJava APIがHDFSに提供され、Java API用のC言語ラッパーが使用可能であり、さらにHTTPブラウザーを使用してHDFSインスタンスのファイルを参照できます。

ファイル・システムの名前空間

HDFSは従来のファイル階層で構成されており、ユーザーは複数のファイルを含むディレクトリーを作成できます。ファイル・システムの名前空間の階層は従来のファイル・システムに似ており、ユーザーはファイルを作成および削除したり、ディレクトリー間でファイルを移動したり、ファイルの名前を変更したりできます。

ファイル・システムの名前空間はNameNodeによって管理され、NameNodeはファイル・システムの名前空間内のすべての変更の記録を管理します。ここで、任意のアプリケーションに保存されるレプリカの合計数を指定できます。その数値はそのファイルのレプリケーション係数です。レプリケーション係数は、ファイルの作成時に設定し、後で必要に応じて変更できます。

データの複製

信頼性の高いストレージを提供するために、HDFSは大きなファイルを大規模なクラスター内の複数の場所に保存し、各ファイルは一連のブロックに格納されます。各ブロックは同じサイズのファイルに保存されますが、最後のブロックはデータが追加されるたびにいっぱいになります。

保護を強化するために、HDFSファイルは一度に1人のライターによってのみ書き込み可能になります。すべてのデータが指示どおりに複製されていることを確認します。NameNodeは、クラスターに接続されているすべてのDataNodeからハートビート(定期的なステータス・レポート)とブロック・レポート(ブロックID、生成スタンプ、およびすべてのブロック・レプリカの長さ)を受信します。ハートビートを受信することは、DataNodeが正常に動作していることを意味します。

NameNodeは、Hadoop Rack Awarenessと呼ばれるプロセスを使用して各DataNodeのラックIDを選択し、ラック全体に障害が発生した場合にデータが失われるのを防ぎます。これにより、データを読み取るときに複数のラックからの帯域幅を使用することもできます。

HDFSの例とユースケース

国全体の電話番号を含むファイルを考えてみましょう。姓がAで始まる人の番号はサーバー1に、Bで始まる人の番号はサーバー2に…という調子で、それぞれ保存されます。Hadoopでは、この電話帳の各部分が単一のクラスターに保存され、電話帳全体を再構築するには、アプリケーションはクラスター内のすべてのサーバーからのブロックを必要とします。

サーバーに障害が発生した場合でも高可用性を確保できるように、HDFSはこれらの小さな部分をデフォルトでさらに2台のサーバーに複製します。(この冗長性は、ファイルごと、または環境全体で増減できます。例えば、開発用Hadoopクラスターでは通常、データの冗長性は必要ありません。)

この冗長性により、Hadoopクラスターは作業を小さなチャンクに分割し、それらのジョブをクラスター内のすべてのサーバーで実行して、拡張性を向上させることもできます。最後に、組織は、大規模なデータセットを扱う際に重要なデータ・ローカリティーのメリットを享受できます。

HDFSは、効果的に拡張することで、人工知能(AI)機械学習(ML)も導入できます。まず、MLモデルをトレーニングするために必要な十分な量のデータを保存し、次にそれらの膨大なデータセットにアクセスします。

最大ペタバイトの大規模なデータ・セットをキャプチャ、保存、使用する組織は、HDFSの使用を検討する余地があります。HDFSがどのように導入されているかを示す、業界ベースのユースケースをいくつかご紹介します。

  • エネルギー業界:電力会社が送電網内のスマートグリッドのパフォーマンスを監視するために位相測定ユニット(PMU)を使用する場合、1秒あたり数千件のレコードという膨大な量のデータが蓄積される可能性があります。HDFSは、コスト効率が高く、可用性が高く、信頼できるファイル・システムである可能性があります。

  • ヘルスケア業界:医療記録の量は日々増加しています。医療機器と患者のセンサーデータを効率的に収集・保存できるため、より迅速な治療と研究が可能になります。

  • マーケティング業界:顧客関係管理(CRM)システム、販売時点管理(PoS)システム、キャンペーンの反応、SNSからのデータ(その多くは非構造化データ)を収集して分析し、将来のマーケティング活動の指針とする必要があります。HDFSクラスターは、生成される大量のデータを保存および分析するための予算を節約するソリューションを提供できる可能性があります。

  • 石油・ガス業界:HDFSクラスターは、さまざまな形式で到着するすべてのデータを統合して、ビッグデータ分析に利用できるようにするのに役立ちます。これには、3D地球モデルから動画、顧客の購入、機器のセンサーからのデータまで、あらゆるものが含まれます。

  • 小売業界:小売業者は顧客をより深く理解するために、複数のソースからデータを収集して分析できます。これには、販売記録、顧客サービスとのやり取り、SNS(非構造化データと構造化データの両方)が含まれ、新しいエンゲージメント戦略を開発します。

  • 通信業界:HDFSは、通信事業者が堅牢なネットワーク・パスを構築し、予知保全を実施し、有望なネットワーク拡張オプションを示し、顧客の行動を分析するのに役立ちます。

HDFSの歴史

共同創設者のMike Cafarella氏とDoug Cutting氏は、Hadoop社の起源は2003年に公開されたGoogle ファイル・システムに関する論文にあると言います。2番目の論文は、「MapReduce: 大規模クラスターでの簡素化されたデータ処理」でした。 Apache Nutchという初期の検索エンジンの開発が開始されました。その後、2006年にDoug Cutting氏とともにYahooに作業が移されました。

Hadoop社の社名は、Cutting氏の息子が所有していたおもちゃの象にちなんで名付けられました。(これがロゴの一部になっています)初期のHadoopコードは主にNutchをベースにしていましたが、拡張性の制限を克服し、HDFSとMapReduceの初期バージョンの両方が含まれていました。

Hadoopエコシステムのプログラム・スイートは拡大し続けています。HDFSに加えて、HBase(NoSQLデータベース)、Mahout、Spark MLLib(機械学習のアルゴリズム・ライブラリー)、MapReduce(プログラミング・ベースのデータ処理)、Oozie(ジョブ・スケジューラー)、PIGおよびHIVE(クエリー・ベースのデータ処理サービス)、SolarおよびLucene(検索およびインデックス作成用)、Spark(データ処理、メモリー内)、YARN(Yet Another Resource Negotiator)、Zookeeper(クラスター調整)などもあります。

Hadoopエコシステム内のオープンソース・ソフトウェアは現在、ソフトウェア開発者とソフトウェア貢献者のための世界規模のコミュニティーであるApache Software Foundation1 によって管理されています。

関連ソリューション
データ管理ソフトウェアとソリューション

データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。

データ管理ソリューションの詳細はこちら
IBM watsonx.data

watsonx.dataを使用すると、オープンでハイブリッド、かつ管理されたデータ・ストアを通じて、データがどこに保存されていても、すべてのデータを使用して分析とAIを拡張できます。

watsonx.dataについてはこちら
データ分析コンサルティングサービス

IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。

分析サービスを発見する
次のステップ

データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。

データ管理ソリューションの詳細はこちら watsonx.dataについてはこちら