1.端口号如果被占用的话,可能会导致服务起不来,如果要保险起见,那么把端口号都在对应的配置文件里配一遍吧 查看端口号命令 netstat -tln
2.有时候配一遍不成功,这时候最好把 name data 等文件夹里的东西全部删掉再重新装。 可能会引起不一致。
判断运行成功与否,可以
在主机上输入 hadoop dfsadmin -report,
在从机上输入jps查看。正常的话主机会起namenode, secondary namenode, jobtracker, 从机会起datanode和tasktracker两个服务。
再用 hadoop fs -mkdir tmp
hadoop fs -ls 查看是否建立文件夹成功。
最后运行自带的wordcount检查是否成功
假设目前在hadoop目录下
hadoop fs -mkdir input
将自带的文件倒入hdfs: hadoop fs -put conf/* input
hadoop jar hadoop-examplex-0.20.2-cdh3u6.jar wordcount input output
当时起了18个mapper, 1个reducer
运行完了之后用 hadoop fs -cat output/part-r-00000
查看结果
--------------------------------------------------------------------
接下来我打算自己编译一个wordcount玩玩,基本上是参考这哥们的流程来的。
http://www.crazyant.net/1144.html
首先我在用户目录下新建了一个wordCountTest目录,再新建了三个子目录:class jar java. 把hadoop自带的wordcount.java拷到java目录里。
接着进入到wordCountTest目录,javac -classpath /home/sss/hadoop/hadoop-core-0.20.2-cdh3u6.jar:/home/sss/hadoop/lib/commons-cli-1.2.jar -d class java/WordCount.java
这里有一点要提的是 可能是hadoop版本的原因,我的hadoop的lib文件夹里没有commons-cli-1.2.jar,而这个是编译hadoop自带wordcount必须的。在网上下了个,放进lib下,一切ok。另外还要提一下的是不同的jar包之间有冒号隔开。这里还有一点要注意的是, WordCount.java里的打包是package org.apache.hadoop.examples; 如果 javac的时候不用-d 则 会有问题,因为不会生成 org/apache/hadoop/example/, 而直接把所有的clas都放到wordCountTest下。所以-d是不能少的。
接下来生成jar, jar -cvf thewordcount.jar -C class/ .
接着 仍然在wordCountTest目录下生成input file"hello world, hello motherf**ker, i say f**k, you say you"
将文件放进hdfs里 hadoop fs -mkdir input hadoop fs -put inputfile input,然后用hadoop fs -ls input 查看下文件是不是放进去了。
终于可以运行wordcount了, hadoop jar thewordcout.jar org.apache.hadoop.examples.WordCount input output
运行结束后用 hadoop fs -cat output/part-r-00000查看,结果正确。