命令“hadoop namenode -format”会做什么

时间:2014-11-26 07:26:16

标签: hadoop

我正在尝试通过遵循教程并尝试在我的计算机上执行伪分布式模式来学习Hadoop。

我的core-site.xml是:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
   <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:9000</value>
      <description>The name of the default file system. A URI whose scheme and authority determine the FileSystem implementation.       
      </description>   
   </property>
</configuration>

我的hdfs-site.xml文件是:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
   <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>The actual number of replications can be specified when the
        file is created.
      </description>
   </property>
</configuration>

我的mapred-site.xml文件是:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
   <property>      
      <name>mapred.job.tracker</name>
      <value>localhost:9001</value>
      <description>The host and port that the MapReduce job tracker runs
        at.
      </description>
   </property>
</configuration>

当我运行命令时,它成功运行但实际上是在做什么:

hadoop-1.2.1$ bin/hadoop namenode -format
14/11/26 12:37:16 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = myhost/127.0.0.8
STARTUP_MSG:   args = [-format]
STARTUP_MSG:   version = 1.2.1
STARTUP_MSG:   build = https://svn.apache.org/repos/asf/hadoop/common/branches/branch-1.2 -r 1503152; compiled by 'mattf' on Mon Jul 22 15:23:09 PDT 2013
STARTUP_MSG:   java = 1.6.0_45
************************************************************/
14/11/26 12:37:17 INFO util.GSet: Computing capacity for map BlocksMap
14/11/26 12:37:17 INFO util.GSet: VM type       = 64-bit
14/11/26 12:37:17 INFO util.GSet: 2.0% max memory = 932118528
14/11/26 12:37:17 INFO util.GSet: capacity      = 2^21 = 2097152 entries
14/11/26 12:37:17 INFO util.GSet: recommended=2097152, actual=2097152
14/11/26 12:37:17 INFO namenode.FSNamesystem: fsOwner=myuser
14/11/26 12:37:17 INFO namenode.FSNamesystem: supergroup=supergroup
14/11/26 12:37:17 INFO namenode.FSNamesystem: isPermissionEnabled=true
14/11/26 12:37:17 INFO namenode.FSNamesystem: dfs.block.invalidate.limit=100
14/11/26 12:37:17 INFO namenode.FSNamesystem: isAccessTokenEnabled=false accessKeyUpdateInterval=0 min(s), accessTokenLifetime=0 min(s)
14/11/26 12:37:17 INFO namenode.FSEditLog: dfs.namenode.edits.toleration.length = 0
14/11/26 12:37:17 INFO namenode.NameNode: Caching file names occuring more than 10 times 
14/11/26 12:37:17 INFO common.Storage: Image file /tmp/hadoop-myuser/dfs/name/current/fsimage of size 115 bytes saved in 0 seconds.
14/11/26 12:37:18 INFO namenode.FSEditLog: closing edit log: position=4, editlog=/tmp/hadoop-myuser/dfs/name/current/edits
14/11/26 12:37:18 INFO namenode.FSEditLog: close success: truncate to 4, editlog=/tmp/hadoop-myuser/dfs/name/current/edits
14/11/26 12:37:18 INFO common.Storage: Storage directory /tmp/hadoop-myuser/dfs/name has been successfully formatted.
14/11/26 12:37:18 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at chaitanya-OptiPlex-3010/127.0.0.8
************************************************************/

有人可以让我知道它在内部做了什么。

我已经阅读了这些帖子,但没有正确的解释。

What exactly is hadoop namenode formatting?

hadoop namenode is not formatting

如何在我的机器上实际检查这一点,以便在运行命令之前和之后看到差异。我是Hadoop的新手,所以这可能是一个微不足道的问题。

5 个答案:

答案 0 :(得分:11)

hadoop namenode -format此命令删除hdfs中的所有文件。

tmp目录包含两个文件夹datanode,本地文件系统中的namenode。如果格式化namenode,这两个文件夹将变为空。

注意:如果要格式化namenode,请首先停止所有hadoop服务,然后删除本地文件系统中的tmp(包含namenode和datanode)文件夹,并启动hadoop服务,它肯定会生效。

Hadoop namenode -format的原因:

Hadoop NameNode是HDFS文件系统的集中位置,它保存文件系统中所有文件的目录树,并跟踪整个群集中文件数据的保存位置。简而言之,它保留了与数据节点相关的元数据。当我们格式化namenode时,它格式化与数据节点相关的元数据。通过这样做,数据节点上的所有信息都会丢失,并且可以重新用于新数据。

默认情况下,名称节点位置位于“/ tmp / hadoop-myuser / dfs / name”

在格式化namenode时,此文件位置已被清除。

更改名称节点位置,请添加以下属性在hdfs-site.xml

<property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/search/data/dfs/namenode</value>
</property>
<property>
    <name>dfs.datanode.data.dir</name>
    <value>file:/search/data/dfs/datanode</value>
</property>

我希望这会对你有所帮助..: - )

答案 1 :(得分:8)

Hadoop namenode -format

  • Hadoop namenode目录包含fsimage和edit文件 保存有关hadoop文件系统的基本信息,例如where 数据可用,哪个用户创建了这样的文件

  • 如果格式化namenode,则会删除上述信息 从namedode目录,在hdfs-site.xml中指定为dfs.namenode.name.dir

  • 但是你仍然拥有hadoop但不是namenode元数据的数据

答案 2 :(得分:2)

Namenode包含有关Hadoop文件系统的元数据。

此命令(hadoop-1.2.1 $ bin / hadoop namenode -format)将格式化整个Hadoop分布式文件系统(HDFS)。因此,如果您在现有文件系统上运行此命令,您将丢失所有数据。

答案 3 :(得分:2)

实际上格式化Namenode不会格式化Datanode。

它将只格式化namenode的内容(其中包含datanode的详细信息)。您的namenode将不再知道您的数据位置。 namenode -format还会为namenode

分配一个新的命名空间ID

您必须更改datanode中的namespaceID才能使datanode正常工作。这将是dfs / data / current / VERSION

现在有一个JIRA打开,同样建议在格式化Namenode时格式化Datanode。 HDFS-107

答案 4 :(得分:0)

步骤 使用"start-all.sh"

启动所有服务

使用"JPS"检查服务是否正在运行 注意:如果您使用hadoop2.3.0,则需要运行以下服务

Namenode
Datanode
Resourcemanager
Nodemanager

使用hdfs -put /

将某些文件从本地移动到HDFS

现在检查位置&#34; / tmp / hadoop-myuser / dfs / name&#34; 你可能会发现这个文件被分成了一些块,每个块包含64 MB。

然后使用**hadoop namenode -format**开始格式化 现在该文件在该位置不可用

更多信息click here