我正在尝试从java应用程序调用mapreduce作业。在以前的hadoop版本(1.x)中,我创建了一个Configuration对象和一个Job对象,在Configuration中设置mapred.job.tracker和fs.default.name并运行Job。
现在,在hadoop 2。x作业跟踪器不再存在,也不存在关于如何以编程方式运行MR作业的任何文档。什么好主意吗?
我正在寻找的是一个解释,在这里给出:从java程序调用mapreduce
你需要三样东西:
// this should be like defined in your yarn-site.xml
conf.set("yarn.resourcemanager.address", "yarn-manager.com:50001");
// framework is now "yarn", should be defined like this in mapred-site.xm
conf.set("mapreduce.framework.name", "yarn");
// like defined in hdfs-site.xml
conf.set("fs.default.name", "hdfs://namenode.com:9000");
Hadoop 2.2.0文档中有更详细的解释
需要编写Driver类,扩展org.apache.hadoop.conf.Configuration,实现org.apache.hadoop.util.Tool。
下面是Driver类的示例实现。请注意,在类路径中需要有hdfs-site.xml和其他配置文件。
@Override
public int run(String[] args) throws Exception {
Configuration conf = super.getConf();
Job job = new Job(conf);
.....
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
conf.addResource("core-site.xml");
conf.addResource("hdfs-site.xml");
conf.addResource("hive-site.xml");
int res = ToolRunner.run(conf, new EtlTool(), args);
System.exit(res);
}