知识点
相关文章
更多最近更新
更多Hadoop教程:NameNode的format操作做了什么
2019-03-28 14:01|来源: 网络
在Hadoop的HDFS部署好了之后并不能马上使用,而是先要对配置的文件系统进行格式化。在这里要注意两个概念,一个是文件系统,此时的文件系统在物理上还不存在,或许是网络磁盘来描述会更加合适;二就是格式化,此处的格式化并不是指传统意义上的本地磁盘格式化,而是一些清除与准备工作。本文接下来将主要讨论NameNode节点上的格式化。
我们都知道,NameNode主要被用来管理整个分布式文件系统的命名空间(实际上就是目录和文件)的元数据信息,同时为了保证数据的可靠性,还加入了操作日志,所以,NameNode会持久化这些数据(保存到本地的文件系统中)。对于第一次使用HDFS的过程中,在启动NameNode时,需要向执行-format命令,然后才能正常启动NameNode节点服务。那么,NameNode的fromat命令到底做了什么事情呢?
在NameNode节点上,有两个最重要的路径,分别被用来存储元数据信息和操作日志,而这两个路径来自于配置文件,对应的属性分别是dfs.name.dir和dfs.name.edits.dir,同时,它们默认的路径均是/tmp/hadoop/dfs/name。格式化时,NameNode会清空两个目录下的所有文件,之后,会在目录dfs.name.dir下创建文件{dfs.name.dir}/current/fsimage、{dfs.name.dir}/current/fstime、{dfs.name.dir}/current/VERSION、{dfs.name.dir}/image/fsimage,会在目录dfs.name.edits.dir下创建文件{dfs.name.edits.dir}/current/edits、{dfs.name.edits.dir}/current/fstime、 {dfs.name.edits.dir}/current/VERSION、{dfs.name.edits.dir}/image/fsimage,那么这些文件又是用来干什么的呢?
在介绍这文件的用途之前,我们可以将dfs.name.dir和dfs.name.edits.dir配置成相同的目录,这样的话,NameNode执行格式化之后,会产生如下的文件:{dfs.name.dir}/current/fsimage、{dfs.name.dir}/current/edits、{dfs.name.dir}/current/fstime、{dfs.name.dir}/current/VERSION、{dfs.name.dir}/image/fsimage,由此可以看出上面名字相同的文件实际是一样的,所以在这里,我建议把dfs.name.dir和dfs.name.edits.dir配置成相同的值,以来提高NameNode的效率。ok,现在就来重点的介绍一下这些文件的用途吧。
fsimage:存储命名空间(实际上就是目录和文件)的元数据信息,文件结构如下:
edits:用来存储对命名空间操作的日志信息,实现NameNode节点的恢复;
fstime:用来存储check point 的时间;
VERSION:用来存储NameNode版本信息,内容如下:
/image/fsimage: 上一次提交前的/current/fsimage文件;
ok,关于NameNode执行format命令的情况就介绍到这儿。
相关问答
更多-
很酷,我找到了解决方案。 停止所有运行的服务器 1) stop-all.sh 编辑文件/usr/local/hadoop/conf/hdfs-site.xml并添加下面的配置(如果缺失)
dfs.data.dir /app/hadoop/tmp/dfs/name/data true d ... -
Hadoop namenode -format Hadoop namenode目录包含fsimage和编辑文件,其中包含有关hadoop文件系统的基本信息,例如数据可用位置,用户创建的文件 如果格式化namenode,那么以上信息将从hdfs-site.xml中指定的namenode目录中删除为dfs.namenode.name.dir 但是你仍然拥有hadoop的数据,但不包含namenode元数据 Hadoop namenode -format Hadoop namenode directory con ...
-
当hadoop试图解析DNS名称(srv-clc-04.univ-nantes.prive3)到一个ip地址时,抛出UnknownHostException 。 这失败了。 在配置文件中查找域名并将其替换为“localhost”。 (或更新DNS解析名称为一个IP地址) UnknownHostException is thrown when hadoop tries to resolve the DNS name (srv-clc-04.univ-nantes.prive3) to an ip addres ...
-
这不是一个错误。 在启动HDFS之前,您需要格式化namenode。 这与运行Linux / Windows之前需要格式化磁盘相似。 This is not an error. Before you can start HDFS, you need to format the namenode. This is similar to before you can run Linux/Windows you need to format the disk.
-
它没有从导出的变量中获取类名。 您可以尝试从脚本中注释掉这一行并尝试: export HADOOP_OPTS=”-Djava.security.krb5.realm= -Djava.security.krb5.kdc=” Its not getting the class name from the exported variable. You can try commenting out this line from the script and try: export HADOOP_OPTS=”-Dj ...
-
你必须将hadoop-hdfs-2.7.0.jar添加到你的hadoop类路径中。 只需在$ HADOOP_HOME / etc / hadoop / hadoop-env.sh中添加以下行: export HADOOP_HOME=/path/to/hadoop export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/hdfs/hadoop-hdfs-2.7.0.jar 现在,停止所有hadoop进程。 尝试现在格式化name ...
-
最重要的是名称节点中的META数据。 数据节点可能具有副本形式的数据副本。 但是如果删除或更改了namenode .META,那么数据应该丢失,因为它是格式化命令。 The most important thing is the META data in your name node. Data nodes might have a copy of the data in the form of replicas. But If the namenode .META is deleted or altere ...
-
您在hadoop-env.sh中错误地设置了JAVA_HOME。 给出java_home的绝对路径。你可以使用下面的命令找出java当前的java路径: alternatives --config java 它将提供您已安装的所有Java版本并选择正确的版本并将此java路径设置为hadoop-env.sh,如下所示: export JAVA_HOME=/usr/java/jdk1.*/bin 另一种方法是将$ JAVA_HOME设置为用户的.bashrc。 所以不需要设置为hadoop-env.sh ...
-
HDFS不是像你的硬盘驱动器上运行的真实文件系统,如ext3或类似的东西,它接近数据库。 就像数据库一样,HDFS将数据存储在常规文件系统中,并提供访问其数据的API。 因此,不要担心使用“hadoop namenode -format”破坏Hadoop之外的数据,此命令只是初始化“数据库”。 您可以在“Hadoop:The Definitive Guide”一书中阅读有关HDFS的内容,您也可以通过本文了解HDFS - http://www.aosabook.org/en/hdfs.html HDFS i ...
-
在主目录的.profile文件中添加HADOOP_HOME变量 将Hadoop bin添加到路径加载配置文件 执行命令 脚步 - 在主目录中打开.profile并添加以下行 export HADOOP_HOME=
export PATH=$PATH:$HADOOP_HOME/bin 在终端上保存并关闭.profile通过cd 加载配置文件中的更改 . .profile 现在发 ...