前面搭建好之后,就应该跑一跑看看,不过由于时间关系,拖了几天,等到真正开始跑测试应用时,才发现问题N多。
首先,不知道为何 /hadoop/dfs/name/current/VERSION 文件变成了由root创建,owner也是root了,于是在启动后就发现该文件不能访问,晕,赶紧修改owner:
sudo chown fox /hadoop/dfs/name/current/VERSION
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = namenode/127.0.1.1
STARTUP_MSG: args = []
STARTUP_MSG: version = 0.20.203.0
晕啊,怎么又跑到127.0.1.1去了捏?应该是192.168.100.101啊。
在网上找了半天无果,突然想起这个地址有些熟悉,之前改hosts文件时看见过,于是打开一看,果然有这么一行:
127.0.1.1 namenode.localdomain namenode
去掉后面的namenode,然后在下面添加如下信息:
192.168.100.101 namenode
192.168.100.102 jobtracker
192.168.100.103 datanode01
192.168.100.104 datanode02
同样的操作在其它3台机器上重复一遍。
这样namenode启动成功了,我们可以访问 http://192.168.100.101:50070/ 来看看整个系统的运行状态。这个网址可以访问也表明namenode启动成功了。
但是通过日志还是可以看到jobtracker启动失败了,有如下异常信息:
Problem binding to jobtracker/192.168.100.102:9001 : Cannot assign requested address
这个很晕啊,网络连接什么的都是很正常的,而且还发现在192.168.100.101上启动了jobtracker,这个不对啊,应该是在102上启动的。
又是一顿google,终于找到了一篇文章:http://lucene.472066.n3.nabble.com/Starting-JobTracker-Locally-but-binding-to-remote-Address-td3008238.html
里面有个大牛说了,bin/start-all.sh比较笨,不能体会我们希望在102上启动jobtracker的良好愿望,我们只能迂回处理,分别在namenode和jobtracker上执行相应的start命令。无语中……
于是就应该在192.168.100.101(namenode)上执行 bin/start-dfs.sh
在192.168.100.102(jobtracker)上执行 bin/start-mapred.sh
终于可以全部启动了,内牛满面啊。
下面就可以完整的跑一遍example了,就是在文档中(http://hadoop.apache.org/common/docs/stable/mapred_tutorial.html)提到的wordcount:
cd /hadoop
mkdir test-in
echo “hello word” > file1.txt
echo “hello hadoop” > file2.txt
bin/hadoop dfs –put test-in input
bin/hadoop jar hadoop-examples-0.20.203.0.jar wordcount input output
bin/hadoop dfs –get output result
cat result/*
至此,整个Hadoop集群体验配置应该算是完整了。