我在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
答案 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
希望它有效......