首页 文章

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

提问于
浏览
0

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

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

所以我在 Ubuntu 12.04 系统上安装了 Hadoop 1.2.1 ,我在 pseudo distribution mode 中配置了它 .

根据教程我使用以下配置文件中的以下设置:

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,则可能发生由属性'dfs.name.dir'设置的namenode或datanode的根目录变得混乱 . 它默认指向/ tmp目录,操作系统会不时更改 . 因此,HDFS在经过操作系统的一些更改后出现时会混淆并且namenode无法启动 .

所以要解决这个问题提供这个解决方案(这对我来说不起作用) .

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

然后我必须 explicitly set the 'dfs.name.dir' and 'dfs.data.dir' .

所以我在Hadoop路径中创建了一个 dfs 目录,并在这个目录中创建了2个目录(在同一级别): dataname (想法是在其中创建两个文件夹,用于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>

所以,在这个改变之后,我再次运行命令 format the 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个未启动的节点: NameNodeDataNode .

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

TNX

2 回答

  • 0

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

  • 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
    

    希望它有效......

相关问题