いくつかのHDFSに注意すべき問題

5294 ワード

1、HDFSのコピー保存ポリシー
最初のコピーは、クライアントに最も近いdatanodeの上に配置され、2番目のコピーは異なるラックのランダムな1台のマシンに配置され、3番目のコピーは2番目のコピーと同じラックの異なるマシンに配置されます.
2、HDFSの読み書きの流れ
  • 書き込みデータフロー1)クライアントはhdfs dfs-put/xxx/input/xxxアップロードファイルを要求する.2)namenodeはメンテナンスされたディレクトリ構造を表示し、アップロードパスが存在するかどうかを確認し、直接エラーが存在しない場合は、存在する場合はクライアントにアップロードに同意した応答を返し、操作をログファイルに書き込む.3)クライアントは,最初のブロックのアップロードを要求し,namenodeブロックの格納方法を尋ねる.4)namenodeは自分のdatanodeプールを表示し、クライアントに1つのdatanodeリスト(順序)5)クライアントに戻って最初のdatanodeに履歴書pipelineを要求し、各datanode間にもpipelineを確立して応答を返す.6)クライアントファイルはファイルをキャッシュに書き込み、ブロックの大きさに達すると、クライアントと最初のdatanodeとの接続が確立され、ストリーミングが開始され、2番目のdatanodeも同様にデータ(packet)を一部ずつ受信し、ローカルウェアハウスに書き込むとともに、これらのデータを2番目のdatanodeに転送する.(注:ストリーミングレプリケーションの場合、逐次転送と応答は応答キューを用いて転送結果を待機し、キュー応答が完了したらクライアントに戻る)7)第1ブロック数転送が完了すると、ファイル全体のアップロードが完了するまで、次のデータブロックが同様に転送されます.8)ファイル全体のアップロードが完了し、namenodeに返送され、namenodeはメモリメタデータ情報を更新します.
  • リードデータフロー1)クライアントは、namenodeに対してRPC呼び出しを開始し、ファイルデータをリードする.2)namenodeファイルが存在するかどうかをチェックし,存在する場合はファイルのメタ情報を取得する.(blockIdおよび対応するdatanodeリスト)3)クライアントは、メタ情報を受信した後、フレームセンシングメカニズムによって最も近いネットワーク距離のdatanodeを選択し、各データブロックの読み取りを順次要求する.クライアントはまずファイルが破損しているかどうかを確認し、破損している場合は別のdatanodeを選択して再要求します.4)datanodeはクライアントとsocketリンクを確立し、対応するデータブロックを転送し、クライアントはデータを受け取ってローカルにキャッシュし、その後ファイルに書き込む.5)残りのブロックは、ファイル全体のマージが完了するまで順次転送される.

  • 3、HDFSの長所と短所
  • 利点:1)高許容誤り性:データは自動的に複数のコピーを保存し、コピーが紛失した後、自動的に回復する2)バッチ処理に適している:移動データではなく移動計算、データは直接計算フレームワークに暴露する3)ビッグデータ処理に適している:GB、TB甚だしきに至ってはPB級データ、百万ゲージ以上のファイル数、1000上ノード規模4)ストリーミングファイルアクセス:一括書き込み、複数回読み出し、データの一貫性を保証5)安価なマシンに構築可能:マルチコピーによる信頼性向上、フォールトトレランスメカニズムとリカバリメカニズム
  • を提供する.
  • 欠点1)低遅延のデータアクセス2)小ファイルストレージ:namenodeのメモリ容量を大量に占有し、シーク時間が読み取り時間を超える3)同時書き込み、ランダムファイル修正:1つのファイルに1人の書き込み者しかなく、appendの
  • 追加のみをサポートする
    4、namenodeの職責1)ディレクトリ構造の維持2)メタデータの管理3)クライアント要求への応答
    5、datanodeの役割1)ブロックの格納を担当する2)ブロックの格納状況を定期的にnamenodeに報告する
    6、secondary namenodeの職責namenodeからfsimageとeditsファイルを引き出し、新しいfsimageにマージし、マージしたfsimageを作成する.ckptはnamenodeに戻る
    7、checkpoint実行条件1)トランザクションが100万回に達する2)時間が3600 sに達する
    8、checkpointの実行フロー(粗い)1)ミラーファイルとログをローカル2に引き寄せる)ミラーファイルと操作ログをマージ3)新しくマージしたミラーファイルをnamenodeに戻す
    9、namenodeの起動プロセス(データ復元プロセス)1)ミラーファイルをロードし、checkpoint時間ノード前のメタデータ(ディレクトリ構造、ファイルサイズ、ブロックサイズ、ブロックのidなどの情報を含む)、ブロックを含まない記憶位置2)editsファイルをロードし、checkpoint時間ノードからクラスタ停止のメタデータを復元し、ブロックの記憶位置を含まない.(ここでnamenodeが復元するメタデータが唯一欠落しているのはブロックの格納場所である)3)blockreportフェーズでdatanodeが起動し、自分が管理するブロックおよびブロックのidをnamendoeに報告し、namenodeはブロックのIDに基づいてブロックの格納位置4を復元する)blockreportが終了すると、クラスタは、datanodeの起動数(設定可能、デフォルトは0)を判断し、失われたブロックの割合(設定可能、デフォルト0.999 f)がセキュリティモードを終了する条件を満たしているかどうか、満たされている場合は30秒後にセキュリティモードを終了します.セキュリティモードではnamenodeは余分なブロックを削除します(コピー数は3で、実際には4つ格納されます.ps:この場合はdatanodeがダウンタイムし、クラスタはダウンタイムのdatanodeが管理するブロックをコピーし、ダウンタイムのdatanodeは再び起動します)、サブ本数より低いブロックもコピーします.
    10、fsimageではブロックの格納位置が保存されますか保存されません.ブロックの格納位置はdatanodeからnamendoeに報告されます.
    11、HDFSの信頼性戦略について
  • ファイルの完全性:ファイルの作成時に、各データブロックはチェックサムを生成し、チェックサムは保存する.metaファイル内;クライアントはデータを取得する際に、チェックサムが同じかどうかを確認し、データブロックが破損しているかどうかを発見することができます.読み込んでいるデータブロックが破損している場合は、他のコピーを読み取り続けることができます.namenodeはブロックが破損していることをマークし、blockが予想される設定に達したファイルバックアップ数をコピーします.Datanodeは、ファイル作成後3週間でchecksumを検証します.
  • ネットワークまたは機器失効:1)マルチコピーポリシー2)ラックセンシング(コピー配置ポリシー)3)ハートビートメカニズム
  • namenode 1)プライマリ・スタンバイ・スイッチ(HA)2)ミラー・ファイルとオペレーション・ログのディスク・ストレージ3)ミラー・ファイルとオペレーション・ログのバックアップ、マルチディスク・ストレージ(ディスク・アレイ)
  • 他のメカニズム1)スナップショット(システムのある時点の状態が保存する.この状態に復元できる)2)回収局メカニズム3)セキュリティモード
  • .
    12.namenodeはどのようにdatanodeが彼の管理datanodeに帰属するかどうかを知っています.datanodeが起動するとnamenodeに登録し、統一的なclusteridを維持します.このIDを持つdatanodeはnamendoeに管理されます.
    13.1つのクラスタをnamenodeに再フォーマットした後、start-dfsを使用する.shはクラスタを起動して、datanodeは起動することができますか?どうして?いいえ、namendoeが再フォーマットされるとclusteridが変わり、datanodeは元のclusteridを保存しています.
    14.HDFSなぜ小さなファイルを格納するのに適していないのかHDFSは生まれながらにして大きなファイルを格納するために生まれたもので、1つのブロックのメタデータサイズは150 K程度で、1つの小さなファイルを格納するには150 kのメモリを必要とし、大量の小さなファイルを格納するとすぐにメモリが消費され、セット全体の格納データ量は小さく、HDFSの意味を失った.
    15.クラスタインストールの前提条件(クラスタインストールの準備)1)SSHパスワードフリー2)ネットワーク相互通信3)ファイアウォールクローズ4)時間同期5)JDKインストール
    16.クラスタが起動すると一時的にセキュリティモードに入り、セキュリティモードではクラスタがどこで働いているか1)コピー数を満たさないブロックのコピー2)コピー数を超えるブロックの削除3)メタデータに対応情報が存在せずdatanodeに記憶されているブロックを削除する
    17.安全モード1からどのように離れるか)バルブ値hdfs-siteを下げる.xmlで
    dfs.namenode.safemode.threshold-pct
    0.999f
    

    2)強制的にhdfs dfsadmin-safemode leave 3)クラスタを再フォーマット4)破損したブロックファイルを修復する
    18.HDFSがノードを動的に削除する方法
  • 削除ノード
  • 1)hdfs-siteを配置する.xmlファイルは、退役ノードを格納するファイル格納パスを追加し、ファイルに削除する退役ノードを追加し、各行に1つ
    
      dfs.hosts.exclude
            
     
    

    2)挨拶なしでdatanodeをラインオフする(フレンドリーではない)
  • ノードを追加する新しいマシンにhadoopを直接インストールし、他のdatanodeのプロファイルをコピーし、コマンドhadoop-daemonを使用します.sh start datanode起動ノードWebインタフェースから新しいオンラインノードが見えない場合は、コマンドhdfs dfsadmin-refreshNodesを使用してノードstart-balancerをリフレッシュできます.shは負荷等化のコマンド(慎重に使用)
  • である.
    19.1つのファイルがHDFSに書き込まれる場合、メタデータを更新するか、editsファイルを先に書き込むか.なぜですか.
    操作ログを書き込み、ファイルストレージに成功した後、メモリメタデータを更新します.ファイルの格納に失敗する可能性があるため(ps:ファイルの3つのブロックが格納され、最初のブロックが格納されるとクライアントは接続を失います.メタデータを先に更新すると、この場合、誰かがファイルを読み取ると、メタデータからファイルを見つけることができますが、ファイルは完全ではありません)
    20.namenodeはdatanodeが生存しているかどうかをどのように判断し、3秒に1回報告する.
    21.datanodeダウンタイム後、クラスタがダウンタイムしたdatanodeをすぐにダウンラインできないかどうか、タイムアウト時間はデフォルトで10分30秒です.
    22.HDFSの設計思想1)大ファイルをブロック化し、複数台の機器に分けて格納(データ処理時のIOボトルネックを解決)2)ブロック均一分布(負荷等化問題解決)