解决hadoop运行不出现DataNode和NameNode的问题

首先DataNode不出现,我去了hadoop的logs日志中查看DataNode的日志是否有报错,发现了报错的内容
解决hadoop运行不出现DataNode和NameNode的问题
NameNode报错的内容:

解决hadoop运行不出现DataNode和NameNode的问题
上网搜了一遍,说tmp目录会被定期清除,而我的core-site.xml配置的内容如下:

<configuration>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/usr/local/hadoop/tmp</value>
        <description>Abase for other temporary directories.</description>
    </property>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

然后把 <value>file:/usr/local/hadoop/tmp</value>修改为<value>file:/usr/local/hadoop/-${user.name}</value>

再去到hdfs-site.xml文件中修改,源文件的内容为:

 <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
        <property>
            <name>dfs.namenode.name.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/name</value>
        </property>
        <property>
            <name>dfs.datanode.data.dir</name>
            <value>file:/usr/local/hadoop/tmp/dfs/data</value>
        </property>
    </configuration>

修改为:

    <configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>
        <name>dfs.namenode.name.dir</name>
        <value>file:/usr/local/hadoop/-${user.name}/dfs/name</value>
        <description>A base for other temporary directories.</description>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/usr/local/hadoop/-${user.name}/dfs/data</value>
    </property>
</configuration>

配置完成后在/usr/local/hadoop下使用命令 ./bin/hdfs namenode -format 实现namenode的格式化
接着使用sbin/start-dfs.sh来开启namenode和datanode,开启后使用命令jps查看是否开启成功
namenode和datanode都要出现才算成功。