HDInsightでMapReduce処理を実行する
Microsoft.Hadoop.MapReduce.StreamingUnitクラスのおかげて、Hadoopサービスを使用しなくても、MapReduceの一連の処理がテストができます。今回は、テストデータをHDFS上に展開して、そのテストデータに対して、MapとReduce処理を行うアセンブリを作成し処理を行います。手順は以下の通りです。
- Jobを登録するクラスを作成します。
namespace test
{
public class LogCountJob : HadoopJob<LogMapper, LogReducer>
{
//HadoopJobのMapメソッドをオーバーライドする。
public override HadoopJobConfiguration Configure(ExecutorContext context)
{
//設定を返す。
var hdConfig = new HadoopJobConfiguration();
hdConfig.InputPath = "input/LogFiles";
hdConfig.OutputFolder = "output/LogFiles";
return hdConfig;
}
}
} - LogCountJob,LogMapper,LogReducerクラスをクラスライブラリでアセンブリにします。LogMapReduce.dllのアセンブリを生成します。
- MapReduceする対象のファイルをHDFSへ登録します。登録のコマンドは下記の通り。
hadoop fs -copyFromLocal "ログファイルまでのパス" input/LogFiles/inputText.txt上記の通り、HDFS上にinputText.txtが配置されたことが確認できます。
- クラスライブラリプロジェクトのmrlib配下でコマンドを実行します。コマンドは下記の通りです。
mrrunner -dll LogMapReduce.dll
※実行結果は上記の通りです。これで、Map処理およびReduce処理が完了しました。
Hadoop MapReduce Statusで確認すると、処理が完了したことが確認できます。
面白いですね。Hadoop。(あ、SQL Serverとの連携調べてないですね。)