问题现象: job提交后总是在本地机器运行,不能提交到Hadoop job tracker,在 http://192.168.1.130:50030/jobtracker.jsp,不能看到运行中的job。
在控制台输出中出现:
14/02/15 00:04:20 INFO mapred.LocalJobRunner: reduce > sort
原因分析:
第一次尝试: 将原来使用的默认new Configuration()替换为从配置文件得到,使用以下类
public class ConfigurationUtil { private static Configuration conf = null; public static final String USER_DIR = System.getProperty("user.dir"); public static final String FILE_SEPARATOR = System .getProperty("file.separator"); public static Configuration getConf() { if (conf == null) { conf = new Configuration(); String pathCore = USER_DIR FILE_SEPARATOR "config.xml"; System.out.println(pathCore); conf.addResource(new Path(pathCore)); // String hostIp = "192.168.1.130"; // conf.set("hadoop.job.ugi", "hadoop"); // conf.set("hadoop.job.user", "hadoop"); // conf.set("mapred.job.tracker", hostIp ":9001"); // conf.set("fs.default.name", "hdfs://namenode.meritit.com:9000"); // conf.set("mapred.map.tasks", "2"); } return conf; } public static void main(String args[]) { System.out.println(getConf().get("hadoop.job.user")); } }
完成后问题解决!