фрагмент кода для вас:
Configuration conf = new Configuration();
Job job = new Job(conf);
job.setMapperClass(MultithreadedMapper.class);
conf.set("mapred.map.multithreadedrunner.class", WebGraphMapper.class.getCanonicalName());
conf.set("mapred.map.multithreadedrunner.threads", "8");
job.setJarByClass(WebGraphMapper.class);
// rest ommitted
job.waitForCompletion(true);
Я думаю, это довольно понятно. Вы используете многопоточный маппер в качестве основного класса и затем настраиваете, какой класс (ваш настоящий маппер) он должен запускать.
Есть также эти удобные статические методы, которые делают эту настройку за вас. Вызов может выглядеть так:
MultithreadedMapper.setMapperClass(job, WebGraphMapper.class);
MultithreadedMapper.setNumberOfThreads(job, 8);