この項では、まずAPIを使用してコードを準備する方法について説明し、次にJob Analyzerの実行方法について説明します。
作業を開始する前に:
Job Analyzerを実行する前に、アプリケーション・コードでBalancerを呼び出します。コードを次のように更新し、再コンパイルします。Balancer
クラスをインポートします。
ジョブの終了後、Balancer.save()
を呼び出すこともできます。
Balancerを実行した場合、このオプション・メソッドにより、パーティション・ファイル・レポートがジョブ出力ディレクトリの_balancer
サブディレクトリに保存されます。JobAnalyzerレポートも書き込まれます。
次に例を示します。
... import oracle.hadoop.balancer.Balancer; ... <Configure your job> ... job.waitForCompletion(true); Balancer.save(job); ...
変更したアプリケーションをコンパイルした後、次の手順に従ってJob Analyzerを生成します。
下の例では、次の処理を行うスクリプトが実行されます。
必要な変数を設定します
Perfect Balanceを使用して、Job Analyzerでジョブを実行します(ロード・バランシングは行いません)。
デフォルトの場所にレポートを作成します。
HTMLバージョンのレポートをHDFSから/home/jdoe
ローカル・ディレクトリにコピーします。
レポートをブラウザで開きます
出力には警告が含まれますが、これは無視できます。
例5-2 Perfect Balanceを使用したJob Analyzerの実行
$ cat ja_nobalance.sh # set up perfect balance BALANCER_HOME=/opt/oracle/orabalancer-<version>-h2 export HADOOP_CLASSPATH=${BALANCER_HOME}/jlib/orabalancer-<version>.jar:${BALANCER_HOME}/jlib/commons-math-2.2.jar:${HADOOP_CLASSPATH} # run the job hadoop jar application_jarfile.jar ApplicationClass \ -D application_config_property \ -D mapreduce.input.fileinputformat.inputdir=jdoe_application/input \ -D mapreduce.output.fileoutputformat.outputdir=jdoe_nobal_outdir \ -D mapreduce.job.name=nobal \ -D mapreduce.job.reduces=10 \ -conf application_config_file.xml $ sh ja_nobalance.sh 14/04/14 14:52:42 INFO input.FileInputFormat: Total input paths to process : 5 14/04/14 14:52:42 INFO mapreduce.JobSubmitter: number of splits:5 14/04/14 14:52:42 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1397066986369_3478 14/04/14 14:52:43 INFO impl.YarnClientImpl: Submitted application application_1397066986369_3478 . . . File Input Format Counters Bytes Read=112652976 File Output Format Counters Bytes Written=384974202 $ hadoop fs -get jdoe_nobal_outdir/_balancer/jobanalyzer-report.html /home/jdoe $ cd /home/jdoe $ firefox jobanalyzer-report.html