Hadoop NameNodeの詳細
5607 ワード
NameNodeは、ファイルシステム全体の名前空間とファイルデータブロックのアドレスマッピング(Blockmap)をメモリに保存しています.NameNodeがダウンタイムした場合、クラスタ全体がマヒし、HDFS全体が格納可能なファイル数がNameNodeのメモリサイズに制限されます.この重要なメタデータ構造はコンパクトに設計されているため、4 Gメモリを持つNamenodeは大量のファイルとディレクトリをサポートするのに十分です.
一般に,単一namenodeクラスタの最大クラスタ規模は4000台である.
1、NameNodeメタデータ情報ファイル名、ファイルディレクトリ構造、ファイル属性(生成時間、コピー数、権限)各ファイルのブロックリスト.およびリスト内のブロックとブロックが存在するDataNodeとの間のアドレスマッピング関係メモリにロードされるファイルシステム内の各ファイルと各データブロックの参照関係(ファイル、block、datanode間のマッピング情報)データは、定期的にローカルディスクに保存されますが、blockの場所情報は保存されず、DataNode登録時に報告され、実行時にメンテナンスされます.
2、NameNodeファイル操作NameNodeファイルメタデータの操作DataNodeファイル内容の読み書き要求の処理を担当し、データストリームはNameNodeを経由せず、そのDataNodeに連絡することを尋ねる
3、NameNodeコピーファイルデータブロックがどのDataNodeに格納されるかは、NameNodeが決定する.NNがグローバル状況に応じてコピーを配置する決定をしてファイルを読み取る場合、NNはできるだけclientに最も近いdatanode上のコピーを読み取らせ、帯域幅消費と読み取り遅延を低減する
4、NameNode職責はデータブロックの複製を全権管理し、周期的にハートビートとブロックの状態報告情報(このDataNode上のすべてのデータブロックのリストを含む)を受け入れると、NNはDNが正常に動作していると判断し、10分後にDNのハートビートを受け入れられない場合、NNはDNがダウンしたと判断した場合、NNはDN上のデータブロックを再複製する準備をしている.ブロックのステータスレポートにはDN上のすべてのデータブロックのリストが含まれており、blocks reportは1時間ごとに送信されます.
5、NameNodeフォールトトレランスメカニズムNamenodeがなければ、HDFSは動作しない.実際、namenodeを実行するマシンが壊れた場合、システム内のファイルは完全に失われます.異なるdatanode上にあるファイルブロック(blocks)を再構築する方法は他にないからです.したがって,namenodeのフォールトトレランス機構は非常に重要であり,Hadoopは2つの機構を提供する.
1つ目の方法は、ローカルハードディスク(HDD)に格納されているファイルシステムのメタデータのバックアップを永続化することです.Hadoopは、Namenodeが異なるファイルシステムに永続化された状態のファイルを書き込むように構成することができます.この書き込み動作は同期的で原子化されている.一般的な構成は、ローカルハードディスク(HDD)に永続化された状態を書き込みながら、リモートマウントされたネットワークファイルシステム(NFS)に書き込むことです.
2つ目の方法は、補助的なNamenode(SecondaryNamenode)を実行することです.実際にSecondaryNamenodeはNamenodeとして使用できません.Namespaceミラーを定期的に操作ログファイル(edit log)に結合し、操作ログファイル(edit log)が大きすぎることを防止することが主な役割です.通常、SecondaryNamenodeは、統合操作に多くのCPU時間とNamenodeに相当するメモリを必要とするため、個別の物理マシン上で実行されます.セカンダリNamenodeは、マージされたNamespaceミラーのバックアップを保存しています.万が一、Namenodeがダウンタイムになったら、このバックアップを使用できます.
ただし、セカンダリNamenodeは常にプライマリNamenodeに遅れているため、Namenodeがダウンタイムした場合、データの損失は避けられません.この場合、一般的には、第1の方法で説明したリモートマウントネットワークファイルシステム(NFS)のNamenodeのメタデータファイルと組み合わせて使用し、NFSのNamenodeのメタデータファイルをセカンダリNamenodeにコピーし、セカンダリNamenodeをプライマリNamenodeとして実行する.
6、NameNode物理構造
Edit Log
namespace Image
7、Name Nodeファイル構造
Nameノードのストレージディレクトリ
一般に,単一namenodeクラスタの最大クラスタ規模は4000台である.
NameNode :
NameNode :HDFS NameSpace。
NameNode : (FileSystem) (matedata)
NameNode :namespace (fsimage), (edit log)
Cache RAM , 。
NameNode : 。
, 。
: nameNode ,DataNode NameNode NameNode
1、NameNodeメタデータ情報ファイル名、ファイルディレクトリ構造、ファイル属性(生成時間、コピー数、権限)各ファイルのブロックリスト.およびリスト内のブロックとブロックが存在するDataNodeとの間のアドレスマッピング関係メモリにロードされるファイルシステム内の各ファイルと各データブロックの参照関係(ファイル、block、datanode間のマッピング情報)データは、定期的にローカルディスクに保存されますが、blockの場所情報は保存されず、DataNode登録時に報告され、実行時にメンテナンスされます.
2、NameNodeファイル操作NameNodeファイルメタデータの操作DataNodeファイル内容の読み書き要求の処理を担当し、データストリームはNameNodeを経由せず、そのDataNodeに連絡することを尋ねる
3、NameNodeコピーファイルデータブロックがどのDataNodeに格納されるかは、NameNodeが決定する.NNがグローバル状況に応じてコピーを配置する決定をしてファイルを読み取る場合、NNはできるだけclientに最も近いdatanode上のコピーを読み取らせ、帯域幅消費と読み取り遅延を低減する
4、NameNode職責はデータブロックの複製を全権管理し、周期的にハートビートとブロックの状態報告情報(このDataNode上のすべてのデータブロックのリストを含む)を受け入れると、NNはDNが正常に動作していると判断し、10分後にDNのハートビートを受け入れられない場合、NNはDNがダウンしたと判断した場合、NNはDN上のデータブロックを再複製する準備をしている.ブロックのステータスレポートにはDN上のすべてのデータブロックのリストが含まれており、blocks reportは1時間ごとに送信されます.
5、NameNodeフォールトトレランスメカニズムNamenodeがなければ、HDFSは動作しない.実際、namenodeを実行するマシンが壊れた場合、システム内のファイルは完全に失われます.異なるdatanode上にあるファイルブロック(blocks)を再構築する方法は他にないからです.したがって,namenodeのフォールトトレランス機構は非常に重要であり,Hadoopは2つの機構を提供する.
1つ目の方法は、ローカルハードディスク(HDD)に格納されているファイルシステムのメタデータのバックアップを永続化することです.Hadoopは、Namenodeが異なるファイルシステムに永続化された状態のファイルを書き込むように構成することができます.この書き込み動作は同期的で原子化されている.一般的な構成は、ローカルハードディスク(HDD)に永続化された状態を書き込みながら、リモートマウントされたネットワークファイルシステム(NFS)に書き込むことです.
2つ目の方法は、補助的なNamenode(SecondaryNamenode)を実行することです.実際にSecondaryNamenodeはNamenodeとして使用できません.Namespaceミラーを定期的に操作ログファイル(edit log)に結合し、操作ログファイル(edit log)が大きすぎることを防止することが主な役割です.通常、SecondaryNamenodeは、統合操作に多くのCPU時間とNamenodeに相当するメモリを必要とするため、個別の物理マシン上で実行されます.セカンダリNamenodeは、マージされたNamespaceミラーのバックアップを保存しています.万が一、Namenodeがダウンタイムになったら、このバックアップを使用できます.
ただし、セカンダリNamenodeは常にプライマリNamenodeに遅れているため、Namenodeがダウンタイムした場合、データの損失は避けられません.この場合、一般的には、第1の方法で説明したリモートマウントネットワークファイルシステム(NFS)のNamenodeのメタデータファイルと組み合わせて使用し、NFSのNamenodeのメタデータファイルをセカンダリNamenodeにコピーし、セカンダリNamenodeをプライマリNamenodeとして実行する.
6、NameNode物理構造
master /home/wuhuan/hadoopdata/dfs/name,namesecondary
name/current,in_user.lock
in_use.lock , namenode
current namenode
current/edits --- hdfs
current/fsimage ---- , edits secondaryNamenode 。
VERSION:
namespaceID ,
DataNode NameNode
NameNode DataNode,DataNode NameNode namespaceID
Edit Log
edits , HDFS , editlog 。
, 。 、 、 , edit 。
hdfs edits 。
edits 。 hdfs edits 。
namespace Image
fsimage , , HDFS 。
、 ( , ) 。
、 、 ;
,Fsimage , hdfs
hdfs , , datanode, , 。
【 】Block fsimage, DataNode NameNode 。
namenode edits , fsimage ?
fsimage namenode ,
, CPU。
fsimage ,
edits log , edits fsimage fsimage
7、Name Nodeファイル構造
NameNode :
$ {dfs.name.dir} //dfs.name.dir ,
$ {dfs.name.dir}/current/VERSION //Java , HDFS
$ {dfs.name.dir}/current/edits
$ {dfs.name.dir}/current/fsimage
$ {dfs.name.dir}/current/fstime
VERSION :
#Wed Mar 23 16:03:27 CST 2017
namespaceID=1064465394 // ,
DataNode NameNode
NameNode DataNode
DataNode NameNode namespaceID。
cTime=0 // NameNode
, 。
storageType=NAME_NODE // NameNode
DataNode DATA_NODE
layoutVersion=-18 //layoutVersion , HDFS
HDFS , ( -18 -19)
,HDFS ,
Nameノードのストレージディレクトリ
edits、fsimage、fstime ( )。 HadoopWritable 。
hdfs namenode ,EditLog/FsImage namenode
EditLog
。
, 。
,
。
:
,namenode EditLog 。
, EditLog 。
FsImage
checkpoint。
, ,
fsimage
, 、 。
,
fsimage (fsimage GB )。
NameNode , fsimage
。 , NameNode 。