Hadoop分散ファイル・システム(HDFS)は、汎用ハードウェア上で実行できる大規模なデータ・セットを管理するファイル・システムです。HDFSはHadoopで最も人気のあるデータ・ストレージ・システムで、単一のApache Hadoopクラスターを数百、さらには数千のノードに拡張するために使用できます。HDFSは、高スループットでビッグデータを効率的に管理するため、データ・パイプラインとして使用でき、複雑なデータ分析をサポートするのに最適です。
HDFSはオープンソース・フレームワーク上に構築される、Apache Hadoopの主要コンポーネントの1つです。他の主要コンポーネントには、MapReduceとYARNの2つがあります。HDFSと、Apache HBaseは同じではありません。Apache HBaseは、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は、組織のデータ・ニーズに合わせて素早く調整できます。クラスターには数百または数千のノードが含まれる場合があります。
HDFSにはディレクター/ワーカー・アーキテクチャーが含まれています。
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を選択し、ラック全体に障害が発生した場合にデータが失われるのを防ぎます。これにより、データを読み取るときに複数のラックからの帯域幅を使用することもできます。
国全体の電話番号を含むファイルを考えてみましょう。姓がAで始まる人の番号はサーバー1に、Bで始まる人の番号はサーバー2に…という調子で、それぞれ保存されます。Hadoopでは、この電話帳の各部分が単一のクラスターに保存され、電話帳全体を再構築するには、アプリケーションはクラスター内のすべてのサーバーからのブロックを必要とします。
サーバーに障害が発生した場合でも高可用性を確保できるように、HDFSはこれらの小さな部分をデフォルトでさらに2台のサーバーに複製します。(この冗長性は、ファイルごと、または環境全体で増減できます。例えば、開発用Hadoopクラスターでは通常、データの冗長性は必要ありません。)
この冗長性により、Hadoopクラスターは作業を小さなチャンクに分割し、それらのジョブをクラスター内のすべてのサーバーで実行して、拡張性を向上させることもできます。最後に、組織は、大規模なデータセットを扱う際に重要なデータ・ローカリティーのメリットを享受できます。
HDFSは、効果的に拡張することで、人工知能(AI)や機械学習(ML)も導入できます。まず、MLモデルをトレーニングするために必要な十分な量のデータを保存し、次にそれらの膨大なデータセットにアクセスします。
最大ペタバイトの大規模なデータ・セットをキャプチャ、保存、使用する組織は、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 によって管理されています。
データ・サイロを排除し、複雑さを軽減し、データ品質を向上させることで、卓越した顧客体験と従業員体験を実現するデータ・ストラテジーを設計します。
watsonx.dataを使用すると、オープンでハイブリッド、かつ管理されたデータ・ストアを通じて、データがどこに保存されていても、すべてのデータを使用して分析とAIを拡張できます。
IBMコンサルティングと連携することで、企業データの価値を引き出し、ビジネス上の優位性をもたらす洞察を活用した組織を構築します。