DataNodeの動作メカニズム
- データブロックは、DataNode上のディスク上のファイルの形式で保存されます。1つはデータ自体で、もう1つはデータブロックの長さ、ブロックデータのチェックサム、およびを含むメタデータです。タイムスタンプ。
- DataNodeが開始されると、NameNodeに登録され、渡された後、すべてのブロック情報が定期的に(1時間)NameNodeに報告されます。
- DataNodeとNameNodeの間にハートビートイベントがあります。ハートビートは3秒に1回です。ハートビートの結果はNameNodeからDataNodeへのコマンドで返されます。DataNodeからのハートビートが10分以上受信されない場合、ノードは使用不可と見なされます。
- 一部のマシンは、クラスター操作中に安全に追加および終了できます
データの整合性
思考:コンピュータディスクに保存されているデータが高速鉄道信号灯を制御する赤色光信号(1)と緑色光信号(0)であるが、データを格納しているディスクが壊れており、緑色光が常にある場合表示されます、危険ですか?
同様に、DataNodeノードのデータは破損していますが、見つかりません。危険ですか?それではどうすれば解決できますか?
- データの整合性を確保する方法
- DataNodeがブロックを読み取ると、CheckSum(チェックサム)が計算されます。
- 計算されたチェックサムがブロック作成時の値と異なる場合、ブロックは破損しています
- クライアントは他のDataNodeのブロックを読み取ります
- DataNodeは、以下に示すように、ファイルの作成後に定期的にCheckSumを検証します。
オフライン時のパラメータ設定
DataNodeプロセスが停止したとき、またはネットワーク障害が原因でDataNodeがNameNodeと通信できなくなったときのTimeOutパラメーター設定
- NameNodeは、ノードをすぐに停止していると判断するのではなく、タイムアウト期間と呼ばれる期間がかかります。
- HDFSのデフォルトのタイムアウト期間は10分+30秒です
- タイムアウト期間の計算式は次のとおりです。
# dfs.namenode.heartbeat.recheck-interval默认为300000ms,dfs.heartbeat.interval默认为5s
TimeOut = 2 * dfs.namenode.heartbeat.recheck-interval + 10 * dfs.heartbeat.interval
- 実際の開発では、サーバーの状況に応じて調整できます。たとえば、サーバーのパフォーマンスが比較的低い場合は時間を適切に調整でき、サーバーのパフォーマンスが良好な場合は適切に短縮できます。
新しいデータノードを提供する
要件:会社のビジネスまたは主要なイベント(Double 11など)の成長に伴い、データの量はますます大きくなり、元のデータノードの容量はデータや新しいデータを保存するニーズを満たすことができなくなりました元のクラスターノードに基づいて動的に追加する必要があります。
- ステップ:
- 仮想マシンのクローンを作成する
- IPアドレスとホスト名を変更する
- 元のHDFSファイルシステムに保存されているデータとログファイルを削除します
- ノードを直接起動するだけです
古いデータノードを廃止する
古いデータノードを廃止するには、ホワイトリストの追加とブラックリストの廃止の2つの方法があります。
ホワイトリストを追加
- ステップ:
- NameNode
hadoop安装目录/etc/hadoop
ディレクトリにdfs.hostsファイルを作成します - ホワイトリストに登録されたホスト名を追加する
- NameNodeのhdfs-site.xml構成ファイルにdfs.hostsプロパティを追加します
<property>
<name>dfs.hosts</name>
# dfs.hosts文件所在路径
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts</value>
</property>
- 構成ファイルをクラスター内の他のノードに同期します
- NameNodeを更新します
[kocdaniel@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
- ResourceManagerノードを更新します
[kocdaniel@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
- データのバランスが取れていない場合は、コマンドを使用してクラスターのバランスを取り直すことができます
[kocdaniel@hadoop102 sbin]$ ./start-balancer.sh
ブラックリストの廃止
- ステップ:
- NameNode
hadoop安装目录/etc/hadoop
ディレクトリにdfs.hosts.excludeファイルを作成します - 廃止するホストの名前を追加します
- NameNodeのhdfs-site.xml構成ファイルにdfs.hosts.excludeプロパティを追加します
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/module/hadoop-2.7.2/etc/hadoop/dfs.hosts.exclude</value>
</property>
- 構成ファイルをクラスター内の他のノードに同期します
- NameNodeを更新し、ResourceManagerを更新します
[kocdaniel@hadoop102 hadoop-2.7.2]$ hdfs dfsadmin -refreshNodes
Refresh nodes successful
[kocdaniel@hadoop102 hadoop-2.7.2]$ yarn rmadmin -refreshNodes
- Webブラウザーを確認してください。廃止されたノードの状況は、廃止が進行中です(廃止が進行中です)。これは、データ・ノードがブロックを他のノードにコピーしていることを示しています。
- 廃止されたノードのステータスが廃止される(すべてのブロックがコピーされた)のを待ち、ノードとノードリソースマネージャーを停止します。
- 注:レプリカの数が3で、サービングノードの数が3以下の場合、廃止は成功しません。廃止するには、レプリカの数を変更する必要があります。
- 注:同じホスト名をホワイトリストとブラックリストに同時に表示することはできません。
2つの違い
- ホワイトリストを追加するとイライラしやすくなり、データをコピーせずに廃止するノードのサービスを直接オフにします。
- ブラックリストの廃止により、ノードサービスを直接シャットダウンすることなく、廃止されるノードサーバーのデータが他のノードにコピーされます。これは比較的低速です。
DataNodeマルチディレクトリ構成
- DataNodeは複数のディレクトリに設定することもでき、各ディレクトリに保存されるデータは異なります。つまり、データはコピーではなく、NameNodeマルチディレクトリとは異なります。
- 役割:Windowsのディスクパーティションと同様に、すべてのディスクが使用され、バランスが取れていることを確認します