问题描述:配置好hadoop并启动后,可以正常使用hdfs和mapreduce,但是不能打开Namenode和Jobtracker的web管理界面,错误代码404。
原因:该问题很有可能是由于HADOOP_HOME下面存在build文件夹引起的,将其改名后重启,问题解决。当编译过hadoop后,会生成一个build目录,仔细看hadoop的启动脚本会发现,如果build文件夹中有webapps等目录,则启动时会把该目录加入到CLASSPATH中,详见$HADOOP_HOME/bin/hadoop文件中的
if [ -d "$HADOOP_HOME/build/webapps" ]; then CLASSPATH=${CLASSPATH}:$HADOOP_HOME/build fi
但是web.xml中所引用的servlet类,比如
<servlet-mapping> <servlet-name>org.apache.hadoop.hdfs.server.namenode.dfshealth_jsp</servlet-name> <url-pattern>/dfshealth.jsp</url-pattern> </servlet-mapping>
没有被编译,该类其实对应于$HADOOP_HOME/src/webapps/hdfs/dfshealth.jsp,这样,就出现了404错误。
解决办法:将build目录改名或者删除即可。