關於ToolRunner.run()方法執行Hadoop程式原理分析
關於ToolRunner.run()方法執行Hadoop程式原理分析
文章開始把我喜歡的這句話送個大家:這個世界上還有什麼比自己寫的程式碼執行在一億人的電腦上更酷的事情嗎,如果有那就是讓這個數字再擴大十倍
一、相關的類及介面解釋
二.關於ToolRunner典型用法關於ToolRunner
ToolRunner與上圖中的類、介面無任何的繼承、實現關係,它只繼承了Object,沒實現任何介面。
ToolRunner可以方便的執行那些實現了Tool介面的類(呼叫其run(String[])方法,並通過GenericOptionsParser 可以方便的處理hadoop命令列引數。
它的典型用法即:
1、定義一個類(如上圖中的MyClass),繼承configured,實現Tool介面。
2、在main()方法中通過ToolRunner.run(...)方法呼叫上述類的run(String[]方法)
三.例子:
package org.apache.hadoop.util;
import java.io.PrintStream;
import org.apache.hadoop.conf.Configuration;
public class ToolRunner {
public static int run(Configuration conf, Tool tool, String[] args)
throws Exception{
if(conf == null) {
conf = new Configuration();
}
GenericOptionsParser parser = new GenericOptionsParser(conf, args);
tool.setConf(conf);
String[] toolArgs = parser.getRemainingArgs();
return tool.run(toolArgs);
}
public static int run(Tool tool, String[] args)
throws Exception{
return run(tool.getConf(), tool, args);
}
public static void printGenericCommandUsage(PrintStream out) {
GenericOptionsParser.printGenericCommandUsage(out);
}
}
加油吧,程式設計師!