sql >> データベース >  >> RDS >> Database

HDFSの概要| HDFSとは何ですか?どのように機能しますか?

    ファイルをストレージに保存するためのコアテクニックは、オペレーティング環境が使用するファイルシステムにあります。一般的なファイルシステムとは異なり、Hadoopは、分散ネットワーク全体で大規模なデータセットを処理する別のファイルシステムを使用します。これは、 Hadoop分散ファイルシステム(HDFS)と呼ばれます。 。この記事では、最初に関連する背景情報とともに、アイデアを紹介します。

    ファイルシステムとは何ですか?

    ファイルシステム 通常は、オペレーティングシステムがディスクまたはパーティション上のファイルを管理するために使用する方法とデータ構造です。磁気ディスクの観点からは、すべてのデータはトラック全体のセクターに保存された電荷です。トラックをらせん状の列と考え、セクターをらせん状のトラックを横切る小さなセルと考えてください。ここで、ディスクにデータの検索を要求すると、せいぜい、スパイラルシーケンスの一部のセクターにヘッドをリダイレクトできます。この生データは、オペレーティングシステムが完全に理解されない限り意味がありません。ファイルとして認識されるセクターのコレクションからの情報を区切ることを担当します。オペレーティングシステムは、情報をファイルシステムと呼ばれる簿記データ構造に編成します。この構造は、簿記パターンを定義します。ただし、OSがこの構造を管理する方法には技術的な違いがあります。たとえば、WindowsはFAT32、NTFSモデルを使用し、LinuxはEXT2、EXT3などを使用します。ただし、基本的な考え方は、すべてが定義された構造に従ってデータを整理することです。

    ファイルシステム組織は、主にファイル(ディレクトリもファイル)、ディスクパーティション、ファイルサイズなどの作成、変更、削除を管理し、ディスクまたはパーティションのrawセクターを直接操作します。

    分散システム内のファイル

    分散システムの特性は、ストレージがネットワーク内の複数のマシンに分散しているという意味で異なります。単一のリポジトリにこのような大量のデータを含めることはできません。単一のマシンのストレージ容量と処理能力が限られているが、処理ジョブとストレージがネットワーク全体のマシンに分散されている場合、電力と効率は多様になります。これにより、広範な処理能力の可能性が開かれるだけでなく、既存のインフラストラクチャの使用も活用されます。この結果、コストは最小限に抑えられますが、効率は向上します。ネットワーク内のすべてのマシンは、無制限のストアと広範な処理能力の一部でありながら、限られたデータを収容する潜在的な主力製品になります。トレードオフは複雑さです。それを革新的な技術で利用できれば、分散システムはビッグデータの問題に対処するのに優れています。 HDFSファイルシステムはそれを達成することを目的としています。実際、HDFS以外にも、IBMのGPFS(General Parallel File System)、Ceph(Wikipediaリンク:分散ファイルシステムのリスト)など、他にも多くの同様の分散ファイルシステムがあります。彼らは皆、さまざまな成功率でさまざまな方向からこの問題に対処しようとしています。

    HDFSの概要

    通常のファイルシステムは、単一のマシンまたは単一のオペレーティング環境で動作するように設計されています。 Hadoopのデータセットには、単一の物理マシンが提供できる以上のストレージ容量が必要です。したがって、データを複数のマシンに分割することが不可欠になります。これには、分散ネットワーク全体でファイルを管理するための特別なプロセスが必要です。 HDFSは、この問題に特に対処するファイルシステムです。このファイルシステムは、ネットワークプログラミング、断片化、フォールトトレラント、ローカルファイルシステムとの互換性などを処理する必要があるため、通常のファイルシステムよりも複雑です。これにより、Hadoopは複数のサーバー間でビッグデータアプリケーションを実行できるようになります。これは、低コストのハードウェア全体で高いデータスループットを備え、フォールトトレラント性が高いという特徴があります。 HDFSファイルシステムの目的は次のとおりです。

    • 非常に大きなファイルを処理するため
    • ファイルシステムへのストリーミングデータアクセスは、1回の書き込みと複数回の読み取りのパターンを活用する必要があります。
    • 安価なコモディティハードウェアで実行
    • 低遅延のデータアクセスを活用する必要があります。
    • 膨大な数のファイルをサポートする
    • 任意のファイル変更で複数のファイルライターをサポート

    HDFSの基本

    ディスクに対して読み書きされる最小量のデータには、ブロックサイズと呼ばれるものがあります。 。通常、このブロックのサイズは512バイトで、ファイルシステムブロックは数キロバイトです。 HDFSは同じ原理で動作しますが、ブロックのサイズははるかに大きくなります。ブロックサイズが大きいほど、シークを最小限に抑えてコストを最小限に抑えることで検索を活用します。これらのブロックは、クラスターと呼ばれるもの全体に分散されます 、これは、ネットワーク内のさまざまなサーバー上のブロックとブロックのコピーに他なりません。個々のファイルは、クラスター内のサーバー間で複製されます。

    マスタースレーブパターンでクラスター内で動作するノードには2つのタイプがあります。マスターノードはnamenodesと呼ばれます ワーカーノードはデータノードと呼ばれます 。これらのノードを介して、HDFSはファイル(およびディレクトリ)システムツリーとメタデータを維持します。実際、ファイルはブロックに分割され、データノードのサブセットに保存されます。 クラスター全体に広がります。 データノード ファイルシステムでの読み取り、書き込み、ブロックの作成、削除、およびレプリケーションの要求を担当します。

    namenodes 一方、は、ファイルシステムへのアクセスを監視し、HDFS内のデータファイルを維持するサーバーです。ブロックをデータノードにマップし、ファイル/ディレクトリのオープン、クローズ、名前変更のリクエストを処理します。

    データノード はファイルシステムのコア部分であり、クライアントからのブロック要求の保存と取得の役割を果たします。 Namenode データノードの対象となるメンテナです 報告する。これは、ネームノードが消去されると、ファイルに関する情報が失われることを意味します。したがって、Hadoopは、ネームノードがあらゆる種類の障害に耐えるのに十分な復元力を備えていることを確認します。これを確実にするための1つの手法は、セカンダリネームノードにバックアップすることです。 名前空間イメージを編集ログと定期的にマージします。 セカンダリネームノード 通常、プライマリ namenodeとして引き継ぐために別のマシンに常駐します 重大な障害が発生した場合。

    HDFSファイルシステムと対話する方法はたくさんありますが、コマンドラインインターフェイスはおそらく最も単純で最も一般的です。 Hadoopを1台のマシンにインストールして実行すると、Hadoopを直接味わうことができます。これについては以降の記事で取り上げますので、しばらくお待ちください。

    ファイルシステム操作

    HDFSファイルシステムの操作は、通常のファイルシステムの操作と非常によく似ています。ここにアイデアを与えるためのいくつかのリストがあります。

    ローカルファイルシステムからHDFSにファイルをコピーします:

    % hadoop fs -copyFromLocal docs/sales.txt hdfs://localhost/
       user/mano/sales.txt
    

    HDFSにディレクトリを作成します:

    % hadoop fs -mkdir students

    HDFSの現在の作業ディレクトリにあるファイルとディレクトリを一覧表示します:

    % hadoop fs -ls .

    結論

    HDFSは、Hadoopの抽象化によって表されるファイルシステムが行うことの実装です。 HadoopはJavaで書かれています。したがって、すべてのファイルシステムの相互作用はJavaAPIを介して介入されます。コマンドラインインターフェイスは、一般的な対話のために提供されるシェルです。 HDFSの研究は、分散アーキテクチャのセクターとその複雑な作業手順に異なる視野を開きます。このコンピューティングモデルを完成させるために多くの作業が行われており、その推進力は間違いなく近年のビッグデータです。

    参照

    HDFSアーキテクチャのドキュメント


    1. 11i/R12での多言語サポート

    2. 読み取る行の推定数

    3. MySQL IF()関数の説明

    4. MySQLデータベースでのリンクリストの取得