You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-user@hadoop.apache.org by "Felix.徐" <yg...@gmail.com> on 2011/05/17 12:47:13 UTC

How to run or submit MapReduce Job to Hadoop in my own program?

Hi,all..How can I run a MR job though my own program instead of using
console to submit a job to a real Hadoop env?
I write code like this, this program works fine but i don't think it ran in
my Hadoop env,since nothing was produced in hadoop logs folder.
public int run(String[] args) throws Exception {

                Configuration config = new Configuration();
                config.set("fs.default.name", "hdfs://localhost:54310");
                config.set("mapred.job.tracker","localhost:54311");
                JobConf conf = new JobConf(config,CustomMR.class);
                conf.setJobName("custom aggregation");
                conf.setMapOutputKeyClass(Text.class);
                conf.setMapOutputValueClass(IntWritable.class);

            conf.setOutputFormat(HiveIgnoreKeyTextOutputFormat.class);

            conf.setMapperClass(MapClass.class);

            conf.setReducerClass(Reduce.class);
            TextInputFormat.setInputPaths(conf,args[0]);
            HiveIgnoreKeyTextOutputFormat.setOutputPath(conf, new
Path(args[1]));

            JobClient.runJob(conf);
                //conf
                return 0;
        }
public static void main(String[] args) throws Exception {
            args = new String[]{"/user/hive/warehouse/ptest","/testout"};
            int res = ToolRunner.run(new Configuration(), new CustomMR(),
args);
            System.exit(res);
}
Could some one give me an example?Thanks!

RE: How to run or submit MapReduce Job to Hadoop in my own program?

Posted by pr...@nokia.com.
Hi there,
I think you got the run(String[] args) method right but in the main method you are not calling your run method but ToolRunner.run. You need to invoke your method in order to point to localhost:54310 otherwise it will read those properties from the default hadoop conf.

Praveen
________________________________
From: ext Felix.徐 [ygnhzeus@gmail.com]
Sent: Tuesday, May 17, 2011 6:47 AM
To: mapreduce-user@hadoop.apache.org
Subject: How to run or submit MapReduce Job to Hadoop in my own program?

Hi,all..How can I run a MR job though my own program instead of using console to submit a job to a real Hadoop env?
I write code like this, this program works fine but i don't think it ran in my Hadoop env,since nothing was produced in hadoop logs folder.
public int run(String[] args) throws Exception {

                Configuration config = new Configuration();
                config.set("fs.default.name<http://fs.default.name>", "hdfs://localhost:54310");
                config.set("mapred.job.tracker","localhost:54311");
                JobConf conf = new JobConf(config,CustomMR.class);
                conf.setJobName("custom aggregation");
                conf.setMapOutputKeyClass(Text.class);
                conf.setMapOutputValueClass(IntWritable.class);

            conf.setOutputFormat(HiveIgnoreKeyTextOutputFormat.class);

            conf.setMapperClass(MapClass.class);

            conf.setReducerClass(Reduce.class);
            TextInputFormat.setInputPaths(conf,args[0]);
            HiveIgnoreKeyTextOutputFormat.setOutputPath(conf, new Path(args[1]));

            JobClient.runJob(conf);
                //conf
                return 0;
        }
public static void main(String[] args) throws Exception {
            args = new String[]{"/user/hive/warehouse/ptest","/testout"};
            int res = ToolRunner.run(new Configuration(), new CustomMR(), args);
            System.exit(res);
}
Could some one give me an example?Thanks!