この記事のソースコード:GitHub・ここをクリック|| GitEE・ここをクリック
1.動作メカニズム
1.基本的な説明
DataNode上のデータブロックは、2つのファイルを含むファイルの形式でディスクに保存されます。1つはデータ自体であり、もう1つは長さ、チェックサム、タイムスタンプを含むデータブロックメタデータです。
DataNodeが起動すると、NameNodeサービスに登録され、すべてのデータブロックメタデータ情報がNameNodeに定期的に報告されます。
DataNodeとNameNodeの間にはハートビートメカニズムがあります。3秒ごとに、データの複製や削除など、NameNodeの実行コマンドで結果がDataNodeに返されます。DataNodeのハートビートが10分を超えて受信されない場合、ノードは使用不可と見なされます。
2.カスタム期間
hdfs-site.xml構成ファイルを使用して、タイムアウト期間とハートビートを変更します。heartbeat.recheck.intervalの単位はミリ秒、dfs.heartbeat.intervalの単位は秒です。
<property>
<name>dfs.namenode.heartbeat.recheck-interval</name>
<value>600000</value>
</property>
<property>
<name>dfs.heartbeat.interval</name>
<value>6</value>
</property>
3.新しいノードはオンラインです
現在のマシンのノードはhop01、hop02、hop03であり、これに基づいて新しいノードhop04が追加されます。
基本的な手順
現在のサービスノードのクローンに基づいてhop04環境を取得します。
Centos7の基本構成を変更し、データファイルとログファイルを削除します。
DataNodeを起動して、クラスターに関連付けます。
4.マルチディレクトリ構成
この構成は、クラスター内のサービスを同期し、hdfsとyarnを開始するようにフォーマットし、テスト用にファイルをアップロードします。
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///${hadoop.tmp.dir}/dfs/data01,file:///${hadoop.tmp.dir}/dfs/data02</value>
</property>
2つの黒と白のリスト構成
1.ホワイトリスト設定
ホワイトリストを構成し、その構成をクラスターサービスに配布します。
[root@hop01 hadoop]# pwd
/opt/hadoop2.7/etc/hadoop
[root@hop01 hadoop]# vim dfs.hosts
hop01
hop02
hop03
クラスターサービスに配布されるhdfs-site.xmlを構成します。
<property>
<name>dfs.hosts</name>
<value>/opt/hadoop2.7/etc/hadoop/dfs.hosts</value>
</property>
NameNodeを更新します
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes
ResourceManagerを更新します
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes
2.ブラックリスト設定
ブラックリストを構成し、その構成をクラスターサービスに配布します。
[root@hop01 hadoop]# pwd
/opt/hadoop2.7/etc/hadoop
[root@hop01 hadoop]# vim dfs.hosts.exclude
hop04
クラスターサービスに配布されるhdfs-site.xmlを構成します。
<property>
<name>dfs.hosts.exclude</name>
<value>/opt/hadoop2.7/etc/hadoop/dfs.hosts.exclude</value>
</property>
NameNodeを更新します
[root@hop01 hadoop2.7]# hdfs dfsadmin -refreshNodes
ResourceManagerを更新します
[root@hop01 hadoop2.7]# yarn rmadmin -refreshNodes
3.ファイルのアーカイブ
1.基本的な説明
HDFSストレージの特性は、大量のデータを含む大きなファイルに適しています。各ファイルが非常に小さい場合、大量のメタデータ情報が生成され、メモリを大量に消費し、NaemNodeとDataNodeが相互作用すると速度が低下します。
HDFSは、圧縮ストレージとして理解できるいくつかの小さなファイルをアーカイブおよび保存できるため、NameNodeの消費を減らし、対話の負担を軽減します。同時に、アーカイブされた小さなファイルにアクセスして、全体的な効率を向上させることもできます。
2.操作プロセス
2つのディレクトリを作成します
# 存放小文件
[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/harinput
# 存放归档文件
[root@hop01 hadoop2.7]# hadoop fs -mkdir -p /hopdir/haroutput
テストファイルをアップロードする
[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal LICENSE.txt /hopdir/harinput
[root@hop01 hadoop2.7]# hadoop fs -moveFromLocal README.txt /hopdir/harinput
アーカイブ操作
[root@hop01 hadoop2.7]# bin/hadoop archive -archiveName output.har -p /hopdir/harinput /hopdir/haroutput
アーカイブファイルを表示する
[root@hop01 hadoop2.7]# hadoop fs -lsr har:///hopdir/haroutput/output.har
このようにして、元の小さなファイルブロックを削除できます。
ファイルのアーカイブ解除
# 执行解除
[root@hop01 hadoop2.7]# hadoop fs -cp har:///hopdir/haroutput/output.har/* /hopdir/haroutput
# 查看文件
[root@hop01 hadoop2.7]# hadoop fs -ls /hopdir/haroutput
第四に、リサイクルビンメカニズム
1.基本的な説明
ビンのリサイクル機能を有効にすると、削除したファイルを指定した時間内に復元して、誤ってデータを削除するのを防ぐことができます。HDFS内の特定の実装は、NameNodeでバックグラウンドスレッドEmptierを開始することです。このスレッドは、システムのリサイクルビンの下にあるファイルを具体的に管理および監視します。リサイクルビンに入れられ、ライフサイクルを超えるファイルは自動的に削除されます。
2.構成をオンにします
この構成は、クラスター内のすべてのサービスに同期する必要があります。
[root@hop01 hadoop]# vim /opt/hadoop2.7/etc/hadoop/core-site.xml
# 添加内容
<property>
<name>fs.trash.interval</name>
<value>1</value>
</property>
fs.trash.interval = 0は、リサイクルビンメカニズムが無効であることを意味し、= 1は、それが有効であることを意味します。
5、ソースコードアドレス
GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent
推奨読書:仕上げプログラミングシステム
シリアルナンバー | プロジェクト名 | GitHubアドレス | GitEEアドレス | 推奨 |
---|---|---|---|---|
01 | Javaは、設計パターン、アルゴリズム、およびデータ構造を記述します | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆☆ |
02 | Javaの基盤、並行性、オブジェクト指向、Web開発 | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆ |
03 | SpringCloudマイクロサービスの基本コンポーネントケースの詳細な説明 | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆ |
04 | SpringCloudマイクロサービスアーキテクチャの実際の戦闘の包括的なケース | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆☆ |
05 | SpringBootフレームワークの基本的なアプリケーションから高度なものまで | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆ |
06 | SpringBootフレームワークは、一般的なミドルウェアを統合および開発します | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆☆ |
07 | データ管理、配布、アーキテクチャ設計の基本的なケース | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆☆ |
08 | ビッグデータシリーズ、ストレージ、コンポーネント、コンピューティング、その他のフレームワーク | GitHub・ここをクリック | GitEE・ここをクリック | ☆☆☆☆☆ |