为什么我无法在此Hadoop 1.2.1安装中启动NameNode?

时间:2016-01-17 12:22:38

标签: hadoop hdfs bigdata

我在Apache Hadoop中绝对是新手,我正在关注Udemy的视频课程。

该课程基于 Hadoop 1.2.1 ,这是一个太老的版本?最好是根据更新版本的另一门课程开始我的学习,还是可以的?

所以我在 Ubuntu 12.04 系统上安装了 Hadoop 1.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$ 

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

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的根目录,由属性设置   &#39; dfs.name.dir&#39;搞得搞砸了。它默认指向/ tmp   目录哪个操作系统不时变化。因此,HDFS   在经过操作系统的一些更改后出现时,会混淆和命名   不开始。

所以要解决这个问题,请提供这个解决方案(对我来说无法解决)。

首先通过 stop-all.sh 脚本停止所有节点。

然后我必须明确设置&#39; dfs.name.dir&#39;和&#39; dfs.data.dir&#39;

所以我在Hadoop路径中创建了一个 dfs 目录,在这个目录中我创建了2个目录(在同一级别):数据名称(想法是在其中制作两个文件夹,用于datanode恶魔和namenode恶魔)。

所以我有这样的事情:

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

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

<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$ 

情况变得更糟,因为现在我有2个未启动的节点: NameNode DataNode

我错过了什么?我该如何尝试解决此问题并启动所有节点?

TNX

2 个答案:

答案 0 :(得分:0)

您是否会尝试转换IPTABLES.once并重新格式化以及导出java路径。

答案 1 :(得分:0)

如果您在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

希望它有效......