sql >> データベース >  >> NoSQL >> HBase

HDFSディスクバランサーの紹介、操作、機能

    このHadoopチュートリアルのブログ HDFSについて説明します ディスクバランサーの詳細。まず、Hadoopのディスクバランサーとは何かについて説明し、次にHadoopディスクバランサーのさまざまな操作について説明します。

    また、HadoopのIntra DataNodeDiskBalancerとそのアルゴリズムについても説明します。最後に、このチュートリアルでは、Hadoopの機能について説明します。 HDFSディスクバランサーの詳細。

    HDFSディスクバランサーの概要

    HDFSディスクバランサー コマンドラインツールです。データノードのすべてのディスクにデータを均一に分散します。 HDFSディスクバランサーは、クラスター全体のデータバランシングを処理するバランサーとは完全に異なります。

    以下の理由により、HDFSは常にデータをディスク全体に均一に分散するとは限りません。

    • 多くの書き込みと削除
    • ディスクの交換

    これにより、DataNode内に大きなスキューが発生します。したがって、HDFS Balancerはこれを処理できません。これは、Inter、Non-Intra、DNスキューに関係します。

    そのため、この状況に対処するために、新しいデータノード内バランシング機能が登場しました。これは、HDFSディスクバランサーCLIを介して呼び出されます。

    Disk Balancerは特定のデータノードに対して機能し、あるディスクから別のディスクにブロックを移動します。

    ディスクバランサーの操作

    プラン(一連のステートメント)を作成し、そのプランをデータノードで実行することにより、HDFSディスクバランサーが機能します。これらの一連のステートメントは、2つのディスク間で移動する必要のあるデータの量を示しています。

    計画には多くの移動ステップがあります。これらの移動ステップには、移動するバイト数、ソースディスク、および宛先ディスクがあります。プランは運用データノードに対して実行できます。

    HDFSディスクバランサーはデフォルトでは有効になっていません;

    したがって、HDFSディスクバランサーを有効にするには dfs.disk.balancer.enabled 設定されているtrue hdfs-site.xml内 。

    HDFS Intra-DataNode DiskBalancer

    ユーザーがHDFSで新しいブロックを書き込むときは、ボリューム選択ポリシーデータノードを使用して、ブロックのディスクを選択します。以下はそのような2つのポリシーです:

    • ラウンドロビン– このポリシーは、新しいブロックを使用可能なディスク全体に均一に分散します。
    • 利用可能なスペース– このポリシーは、空き容量がパーセンテージで多いディスクにデータを書き込みます。

    デフォルトでは、HDFSDataNodeはラウンドロビンポリシーを使用します。

    HDFSでの大量のファイルの削除と追加により、Datanodeは依然として大きな不均衡ボリュームを作成します。使用可能なスペースベースのボリューム選択ポリシーにより、ディスクI/Oの効率が低下する可能性もあります。

    その時点で他のディスクがアイドル状態であった間、すべての新しい書き込みは新しく追加された空のディスクに送られます。したがって、新しいディスクにボトルネックが発生します。

    データの不均衡の問題を減らすために、ApacheHadoopコミュニティはサーバーオフラインスクリプトを開発しました。 HDFS-1312では、オンラインディスクバランサーも導入されました。これにより、さまざまなメトリックに基づいて、実行中のデータノードのボリュームのバランスが再調整されます。

    HDFSディスクバランサーの機能

    1。データ拡散レポート

    ユーザーは、指標を通じてデータを拡散する方法を測定できます。

    a)ボリュームデータ密度またはノード内データ密度

    このメトリックは、ノード上のデータ量を計算できます。また、各ボリュームの理想的なストレージを教えてください。

    計算式、つまり、そのノードの合計データをそのノードの合計ディスク容量で割ったもの。

    理想的なストレージ=合計使用率%合計容量
    ボリュームデータ密度=理想的なストレージ– dfsUsedRatio

    • 正の値- これは、ディスクが十分に活用されていないことを示しています。
    • 負の値- これは、ディスクが過剰に使用されていることを示しています。
    b)ノードデータ密度またはノード間データ密度

    今のところ、ボリュームデータ密度を計算しました。したがって、データセンター内のどのノードのバランスを取る必要があるかを簡単に比較できますか?

    c)レポート

    これで、ボリュームデータ密度とノードデータ密度が得られました。そのため、ディスクバランサーは、データ分散が偏っているクラスター内の上位20ノードのバランスを取ることができます。

    2。データノードが稼働している間、ボリューム間でデータのバランスを取ります

    HDFSディスクバランサーには、あるボリュームから別のボリュームにデータを移動する機能があります。

    結論

    結論として、Disk Balancerは、データノードのすべてのディスクにデータを分散するツールであると言えます。プラン(ステートメントのセット)を作成し、そのプランをデータノードで実行することで機能します。

    HDFSディスクバランサーはラウンドロビンを使用します および利用可能なスペース ブロック用のディスクを選択するためのポリシー。このブログがお役に立てば幸いです。またはご不明な点がございましたら、コメントセクションでお知らせください。喜んで解決させていただきます。


    1. ServiceStackRedisはデータの取得でどのように機能しますか

    2. rails + docker + sidekiq + 127.0.0.1:6379でのRedisへの接続エラー(Errno ::ECONNREFUSED)

    3. Laravel 4:未定義のメソッドRedis ::connection()の呼び出し

    4. MongoDBでファイル名として変数を使用する場合、埋め込みドキュメントで「$ set」を使用できますか?