我已经搜索过这个问题,虽然有很多类似的例子,但我找不到通用的解决方案或适合我的解决方案。我已经安装了 Hadoop 并以伪分布式模式运行。它工作正常,我可以多次启动和停止它并使其运行良好。但是,如果我重新启动计算机并启动 Hadoop,namenode 不会启动。我每次都需要格式化,这意味着我失去了我所做的所有工作,需要重新开始。
我正在关注 Hadoop:权威指南 v3。
我的 core-site.xml 说:
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost/</value>
</property>
</configuration>
我的 hdfs-site.xml 说:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
有没有一种配置 Hadoop 的方法,这样我就不需要在每次重启计算机时都重新格式化名称节点?
谢谢。
最佳答案
看起来您没有覆盖 hdfs 配置 dfs.name.dir 和 dfs.data.dir,默认情况下它指向/tmp 目录,当您的机器重新启动时该目录将被清除。您必须通过覆盖位于 HADOOP 配置目录中的 hdfs-site.xml 文件中的这些值,将其从/tmp 更改为主目录中的另一个位置。
执行以下步骤
在您的主目录中创建一个目录用于保存名称节点图像和数据节点 block (替换为您的登录名)
mkdir /home/<USER>/pseudo/
如下修改HADOOP_CONF_DIR(hadoop配置目录)中的hdfs-site.xml文件
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>dfs.name.dir</name>
<value>file:///home/<USER>/pseudo/dfs/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/<USER>/pseudo/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
</configuration>
格式化你的 hdfs namenode 并开始使用
关于Hadoop namenode需要在每台电脑启动后格式化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27083114/