監視プログラム用のPythonスクリプトを実行するコマンドを見つけるHiBench:
UID PID PPID C STIME TTY TIME CMD ルート 32614 1 0 16:02のpts / 0 00:00:00 python2 /home/cf/app/HiBench-master/bin/functions/monitor.py HadoopSort 32331 /ホーム/ CF /アプリ/ HiBenchマスター/レポート/ ソート /hadoop/conf/../monitor.log /ホーム/ CF /アプリ/ Hの ルート 32621 32331 0 16:02のpts / 0 00:00:00python2 /home/cf/app/HiBench-master/bin/functions/execute_with_log.py /ホーム/ CF /アプリ/ HiBench-マスター/レポート/ ソート /hadoop/conf/../bench.logは/ opt / Clouderaの/小包/ CD
Run.shは、ファイルの内容を表示します。
17 current_dir = ` dirnameは " $ 0 " ` 18 current_dir = `CD " $のcurrent_dir "。PWD ` 19 ROOT_DIR = $ {current_dir} /../../../../../ 20 workload_config = $ {ROOT_DIR} / confに/ワークロード/マイクロ/ ソートの.conf 21。" $ {ROOT_DIR} /bin/functions/load_bench_config.sh " 22 23 enter_bench HadoopSort $ {workload_config} $ {current_dir} 24 開始show_bannar 25 26 rmr_hdfs $ OUTPUT_HDFS ||を 真の 27 28 SIZE =`dir_size $ INPUT_HDFS` 29 START_TIME = ` timestamp` 30 run_hadoop_jobの $ {HADOOP_EXAMPLES_JAR} ソート -outKey org.apache.hadoop.io.Text -outValue org.apache.hadoop.io.Text - のR $ {NUM_REDS} $ {} INPUT_HDFS $ {OUTPUT_HDFS} 31 32 END_TIME = `timestamp` 33 gen_report $ {START_TIME} $ {END_TIME} $ {SIZE} 34 show_bannarは終了 35 leave_benchを
run_hadoop_job()メソッドが呼び出されるstart_monitorを見つけrun.shファイルで:
関数run_hadoop_job(){ ENABLE_MONITOR = 1 なら [ " $ 1 " = " --without-モニタ" ]。次いで ENABLE_MONITOR = 0 、シフト 1 Fiの ローカルjob_jar = $ 1 シフト ローカルJOB_NAME = $ 1 シフト ローカルtail_argumentsは = $ @ ローカルCMD = " $ {HADOOP_EXECUTABLE} --config $ {HADOOP_CONF_DIR}ジャー$ job_jar $ JOB_NAME $ tail_arguments " エコー -e "$ {BGreen}のMapReduceジョブの送信:$ {緑} $ CMD $ {Color_Off} 」 であれば [$ {ENABLE_MONITOR} = 1 ]; その後、 MONITOR_PID = ` start_monitor ` Fiの execute_withlog $ {CMDは} なる?= $を 場合は、[$ {ENABLE_MONITOR } = 1 ]; 次に stop_monitor $ { MONITOR_PID } Fiの 場合は [$結果-ne 0 ]; 次に、 エコー -e "$ {}育ちのエラー$ {Color_Off}:Hadoopのジョブは$ {BYellow} $ {job_jar} $ {JOB_NAME} $ {Color_Off}は正常に実行に失敗しました。" エコー -e " $ {BBlueは} $ {Color_Off}ヒント:詳細なログをチェックすることができます後藤$ {BYellow} $ {WORKLOAD_RESULT_FOLDER} /bench.log$ {Color_Off}を\ nOpeningあなたのための尾を記録:。\ nを" テール $ {WORKLOAD_RESULT_FOLDER} / bench.log 退出$結果 Fiを }
定義start_monitor方法を参照してください。
関数start_monitor(){ MONITOR_PID = '$ {workload_func_bin} /monitor.py $ {HIBENCH_CUR_WORKLOAD_NAME} $$ $ {WORKLOAD_RESULT_FOLDER} /monitor.log $ {WORKLOAD_RESULT_FOLDER} /bench.log $ {WORKLOAD_RESULT_FOLDER} /monitor.html $ {} SLAVES &` #は エコー " モニターを起動してしまった子のpid:$ {MONITOR_PID} " >は/ dev / stderrの エコー$ {MONITOR_PID} }
そこstop_monitorメソッドの定義:
関数stop_monitor(){ MONITOR_PID = $ 1は $アサート1 " モニタが欠落のpid " #は エコー " 殺す、モニターを停止$ {MONITOR_PID} " >の/ dev / stderrを 殺す$ {MONITOR_PID} }
そしてexecute_withlogメソッドを定義します:
関数execute_withlog(){ CMD = " $ @を" もし [-t 1 ]。その後、 #ターミナルは、出力を美化します。 $ {} workload_func_bin /execute_with_log.py $ {WORKLOAD_RESULT_FOLDER} / bench.log $ CMD 他 #パイプは、行いません何も。 $ CMD Fiを }