一、NameNode详解
文件包括:
fsimage:元数据镜像文件。存储某一时段NameNode内存元数据信息。
edits:操作日志文件。
fstime:保存最近一次checkpoint的时间
以上这些文件是保存在linux的文件系统中。
/data/hadoop/hdfs/name
[[email protected] name]$ ls
current image in_use.lock previous.checkpoint
[[email protected] name]$ cd current/
[[email protected] current]$ ls
edits fsimage fstime VERSION
如果想使用命令hadoop namenode –format命令格式化namenode 发现这个namenode下面的in_use.lock 就不能格式化
More in_use.lock 发现是空的 ----- 表示这个文件存在 就是在使用中
说一下current 进入这个文件夹
有四个文件 有一个VERSION
打开这个
namespace ---- 命令空间是相对独立的名称空间
namespaceID=-xxxx ---- 指的是文件系统的ID
datanode中的块一定要和namenode之间有匹配关系 ----- 如果两边的namespaceID相同的 --- 这样 通过namespaceID相同 就匹配datanode和
多次执行 hadoop -format 多次之后 出错 因为namespaceID被格式化之后改变了 和datanode中的namespaceID对应不上 ----- 所以第一次之后就出错了
提示:in_use.lock :如果你想格式化这个namenode的话,hadoop会找这个文件,如果存在的话会提示你Re-format filesystem in /data/hadoop/hdfs/name ? (Y or N) ,以此为凭据知道namenode是否已经格式化过。
二、namenode跟secondarynamenode的执行过程
fsimage很重要,所以被备份了
core-default.xml
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>A base for other temporary directories.</description>
</property>
hdfs-default.xml
<property>
<name>dfs.name.dir</name>
<value>${hadoop.tmp.dir}/dfs/name</value>
<description>Determines where on the local filesystem the DFS name node
should store the name table(fsimage). If this is a comma-delimited list
of directories then the name table is replicated in all of the
directories, for redundancy. </description>
</property>
HA的一个解决方案。但不支持热备。配置即可。
(见源码)
执行过程:从NameNode上下载元数据信息(fsimage,edits),然后把二者合并,生成新的fsimage,在本地保存,并将其推送到NameNode,同时重置NameNode的edits.
默认在安装在NameNode节点上,但这样...不安全!
Datanode的数据并不是无限存储的,决定与namenode的fsimage,因为fsimage是放在内存中的,内存不可能上百T吧!(内存中放不下了,fsimage设计的时候是被放在内存中的)namenode的元数据信息占内存。
1、给namenode加内存
2、尽量传大文件。
3、SequenceFile
4、增加block块的大小(这个看环境,就是看一般上传的文件有多大来设计的)
NameNode跟secondarynamenode的执行过程,布布扣,bubuko.com