为什么我不能在hadoop1.2.1安装中启动namenode?

col17t5w  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(436)

我对ApacheHadoop绝对是个新手,我正在学习udemy上的视频课程。
本课程基于hadoop1.2.1,是不是太旧了?我的学习最好从另一门基于最新版本的课程开始,还是可以的?
因此,我在ubuntu12.04系统上安装了hadoop1.2.1,并将其配置为伪分发模式。
根据教程,我在以下配置文件中使用了以下设置:
1) conf/core-site.xml文件:

<configuration>
    <property>
        <name>fs.default.name</name>
        <value>hdfs://localhost:9000</value>
    </property>
</configuration>

2) conf/hdfs-site.xml文件:

<configuration>
    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

3) conf/mapred-site.xml文件:

<configuration>
    <property>
        <name>mapred.job.tracker</name>
        <value>localhost:9001</value>
    </property>
</configuration>

然后在linux shell中:

ssh localhost

所以我通过ssh连接到本地系统。
然后我进入hadoop bin目录,/home/andrea/hadoop/hadoop-1.2.1/bin/,在这里我执行这个命令,必须执行名称节点的格式(确切的意思是什么?):

bin/hadoop namenode –format

我得到的结果是:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$ ./hadoop namenode –format
16/01/17 12:55:25 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = andrea-virtual-machine/127.0.1.1
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.7.0_79

************************************************************/

Usage: java NameNode [-format [-force ] [-nonInteractive]] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint] | [-recover [ -force ] ]
16/01/17 12:55:25 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at andrea-virtual-machine/127.0.1.1

************************************************************/

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$

然后我尝试启动所有节点执行以下命令:

./start–all.sh

现在我得到:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$ ./start-all.sh 
starting namenode, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-namenode-andrea-virtual-machine.out
localhost: starting datanode, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-datanode-andrea-virtual-machine.out
localhost: starting secondarynamenode, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-secondarynamenode-andrea-virtual-machine.out
starting jobtracker, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-jobtracker-andrea-virtual-machine.out
localhost: starting tasktracker, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-tasktracker-andrea-virtual-machine.out
andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$

现在我尝试在浏览器中打开以下URL:

http//localhost:50070/

无法打开(找不到页面)
以及:

http://localhost:50030/

已正确打开并重定向到此jsp页:

http://localhost:50030/jobtracker.jsp

因此,在shell中,我执行jps命令,该命令为用户列出所有正在运行的java进程:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$ jps
6247 Jps
5720 DataNode
5872 SecondaryNameNode
6116 TaskTracker
5965 JobTracker
andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$

如您所见,namenode似乎没有启动。
在下面的教程中,我要说:
如果没有列出namenode或datanode,则namenode或datanode的根目录(由属性“dfs.name.dir”设置)可能会出错。默认情况下,它指向操作系统不时更改的/tmp目录。因此,当hdfs在操作系统进行一些更改后出现时,会变得混乱,namenode不会启动。
所以要解决这个问题,就提供这个解决方案(这对我来说是行不通的)。
首先通过stop-all.sh脚本停止所有节点。
然后我必须显式设置“dfs.name.dir”和“dfs.data.dir”。
因此,我在hadoop路径中创建了一个dfs目录,并在这个目录中创建了两个目录(在同一级别上):data和name(想法是在其中创建两个文件夹,用于datanode demon和namenode demon)。
所以我有这样的想法:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/dfs$ tree
.
├── data
└── name

然后我将此配置用于hdfs-site.xml,其中我显式设置了前2个目录:

<configuration>
    <property>
        <name>dfs.data.dir</name>
        <value>/home/andrea/hadoop/hadoop-1.2.1/dfs/data/</value>
    </property>

    <property>
        <name>dfs.name.dir</name>
        <value>/home/andrea/hadoop/hadoop-1.2.1/dfs/name/</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
</configuration>

因此,在进行此更改之后,我再次运行命令来格式化namenode:

hadoop namenode –format

我得到这个输出:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/dfs$ hadoop namenode –format16/01/17 13:14:53 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG:   host = andrea-virtual-machine/127.0.1.1
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.7.0_79

************************************************************/

Usage: java NameNode [-format [-force ] [-nonInteractive]] | [-upgrade] | [-rollback] | [-finalize] | [-importCheckpoint] | [-recover [ -force ] ]
16/01/17 13:14:53 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at andrea-virtual-machine/127.0.1.1

************************************************************/

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/dfs$

所以我再次启动所有节点:start-all.sh,这是获得的输出:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$ start-all.sh
starting namenode, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-namenode-andrea-virtual-machine.out
localhost: starting datanode, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-datanode-andrea-virtual-machine.out
localhost: starting secondarynamenode, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-secondarynamenode-andrea-virtual-machine.out
starting jobtracker, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-jobtracker-andrea-virtual-machine.out
localhost: starting tasktracker, logging to /home/andrea/hadoop/hadoop-1.2.1/libexec/../logs/hadoop-andrea-tasktracker-andrea-virtual-machine.out
andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$

然后我执行jps命令,查看是否所有节点都正确启动,但我得到的是:

andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$ jps
8041 SecondaryNameNode
8310 TaskTracker
8406 Jps
8139 JobTracker
andrea@andrea-virtual-machine:~/hadoop/hadoop-1.2.1/bin$

情况恶化了,因为现在我有两个节点没有启动:namenode和datanode。
我错过了什么?如何尝试解决此问题并启动所有节点?
tnx公司

8tntrjer

8tntrjer1#

你会尝试打开iptables.once并在导出java路径的同时重新格式化吗。

nzrxty8p

nzrxty8p2#

如果在hdfs-site.xml中配置了,则在格式化名称节点时

<property>
        <name>dfs.name.dir</name>
        <value>/home/andrea/hadoop/hadoop-1.2.1/dfs/name/</value>
 </property>

然后在格式化名称节点时,您应该看到

> successfully formatted /home/andrea/hadoop/hadoop-1.2.1/dfs/name/

如果名称节点格式成功,则返回消息。根据你的日志,我看不到那些成功的日志。检查是否存在权限问题。如果没有启动,请尝试使用其他命令:

hadoop-daemon.sh start namenode

希望有用。。。

相关问题