2017-08-16 3 views
0

2つのほぼ同じCDH 5.8クラスタ、つまりLab & Productionがあります。私はLabで正常に動作するMapreduceジョブを持っていますが、Productionクラスタでは失敗します。私はすでにこれで10時間以上を費やしていました。私はまったく同じコードを実行していることを確認し、クラスタ間の構成も比較しました。私は違いを見つけることができませんでした。私が見ることができるmapreduceジョブに依存するJARファイルが見つかりません

唯一の違いは、私が制作中で実行したときに、私はこれらの警告を参照します

17/08/16 10:13:14 WARN util.MRApps: cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/commons-httpclient-3.1.jar conflicts with cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop/client/commons-httpclient-3.1.jar This will be an error in Hadoop 2.0 
17/08/16 10:13:14 WARN util.MRApps: cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop/client/hadoop-yarn-server-common.jar conflicts with cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop-yarn/hadoop-yarn-server-common.jar This will be an error in Hadoop 2.0 
17/08/16 10:13:14 WARN util.MRApps: cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop-yarn/lib/stax-api-1.0-2.jar conflicts with cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop/client/stax-api-1.0-2.jar This will be an error in Hadoop 2.0 
17/08/16 10:13:14 WARN util.MRApps: cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hbase/lib/snappy-java-1.0.4.1.jar conflicts with cache file (mapreduce.job.cache.files) file://null/opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/snappy-java-1.0.4.1.jar This will be an error in Hadoop 2.0 
17/08/16 10:13:14 INFO impl.YarnClientImpl: Submitted application application_1502835801144_0005 
17/08/16 10:13:14 INFO mapreduce.Job: The url to track the job: http://myserver.com:8088/proxy/application_1502835801144_0005/ 
17/08/16 10:13:14 INFO mapreduce.Job: Running job: job_1502835801144_0005 
17/08/16 10:13:15 INFO mapreduce.Job: Job job_1502835801144_0005 running in uber mode : false 
17/08/16 10:13:15 INFO mapreduce.Job: map 0% reduce 0% 
17/08/16 10:13:15 INFO mapreduce.Job: Job job_1502835801144_0005 failed with state FAILED due to: Application application_1502835801144_0005 failed 2 times due to AM Container for appattempt_1502835801144_0005_000002 exited with exitCode: -1000 
For more detailed output, check application tracking page:http://myserver.com:8088/proxy/application_1502835801144_0005/Then, click on links to logs of each attempt. 
Diagnostics: java.io.FileNotFoundException: File file:/var/cdr-ingest-mapreduce/lib/mail-1.4.7.jar does not exist 
Failing this attempt. Failing the application. 
17/08/16 10:13:15 INFO mapreduce.Job: Counters: 0 
17/08/16 10:13:16 INFO client.ConnectionManager$HConnectionImplementation: Closing zookeeper sessionid=0x25ba0c30a33ea46 
17/08/16 10:13:16 INFO zookeeper.ZooKeeper: Session: 0x25ba0c30a33ea46 closed 
17/08/16 10:13:16 INFO zookeeper.ClientCnxn: EventThread shut down 
:また

注意を、キャッシュされたファイルのパスが「//ヌル/ファイル」で始まります

わかりましたが、ジョブは開始しようとしますが、jarファイルが見つからないというエラーになります。 jarファイルが十分な権限を持つローカルfsに存在することを確認しました。私は、分散キャッシュにjarファイルをコピーしようとしたときに問題が発生したと考えています。何とか失敗します。

ここでMRジョブを開始私のシェルスクリプトです:私は瓶がキャッシュにコピーされなかったことを示すノードマネージャから

2017-08-16 18:34:28,438 ERROR org.apache.hadoop.yarn.server.nodemanager.NodeManager: RECEIVED SIGNAL 15: SIGTERM 
2017-08-16 18:34:28,551 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl is interrupted. Exiting. 
2017-08-16 18:34:31,638 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.AuxServices: The Auxilurary Service named 'mapreduce_shuffle' in the configuration is for class class org.apache.hadoop.mapred.ShuffleHandler which has a name of 'httpshuffle'. Because these are not the same tools trying to send ServiceData and read Service Meta Data may have issues unless the refer to the name in the config. 
2017-08-16 18:34:31,851 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.ContainerManagerImpl: container_1502835801144_0006_01_000001 has no corresponding application! 
2017-08-16 18:36:08,221 WARN org.apache.hadoop.yarn.server.nodemanager.containermanager.logaggregation.AppLogAggregatorImpl: rollingMonitorInterval is set as -1. The log rolling mornitoring interval is disabled. The logs will be aggregated after this application is finished. 
2017-08-16 18:36:08,364 WARN org.apache.hadoop.yarn.server.nodemanager.NMAuditLogger: USER=hdfs OPERATION=Container Finished - Failed TARGET=ContainerImpl RESULT=FAILURE DESCRIPTION=Container failed with state: LOCALIZATION_FAILED APPID=application_1502933671610_0001 CONTAINERID=container_1502933671610_0001_01_000001 

詳細ログ(:

#!/bin/bash 
LIBJARS=`ls -m /var/cdr-ingest-mapreduce/lib/*.jar |tr -d ' '|tr -d '\n'` 
LIBJARS="$LIBJARS,`ls -m /opt/cloudera/parcels/CDH/lib/hbase/lib/*.jar |tr -d ' '|tr -d '\n'`" 
LIBJARS="$LIBJARS,`ls -m /opt/cloudera/parcels/CDH/lib/hadoop/client/*.jar |tr -d ' '|tr -d '\n'`" 
LIBJARS="$LIBJARS,`ls -m /opt/cloudera/parcels/CDH/lib/hadoop-yarn/*.jar |tr -d ' '|tr -d '\n'`" 
LIBJARS="$LIBJARS,`ls -m /opt/cloudera/parcels/CDH/lib/hadoop-yarn/lib/*.jar |tr -d ' '|tr -d '\n'`" 
LIBJARS="$LIBJARS,`ls -m /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce/*.jar |tr -d ' '|tr -d '\n'`" 
job_start_timestamp='' 
if [ -n "$1" ]; then 
    job_start_timestamp="-overridedJobStartTimestamp $1" 
fi 

export HADOOP_CLASSPATH=`echo ${LIBJARS} | sed s/,/:/g` 
yarn jar `ls /var/cdr-ingest-mapreduce/cdr-ingest-mapreduce-core*.jar` com.blah.CdrIngestor \ 
-libjars ${LIBJARS} \ 
-zookeeper 44.88.111.216,44.88.111.220,44.88.111.211 \ 
-yarnResourceManagerHost 44.88.111.220 \ 
-yarnResourceManagerPort 8032 \ 
-yarnResourceManagerSchedulerHost 44.88.111.220 \ 
-yarnResourceManagerSchedulerPort 8030 \ 
-mrClientSubmitFileReplication 6 \ 
-logFile '/var/log/cdr_ingest_mapreduce/cdr_ingest_mapreduce' \ 
-hdfsTempOutputDirectory '/cdr/temp_cdr_ingest' \ 
-versions '3' \ 
-jobConfigDir '/etc/cdr-ingest-mapreduce' \ 
${job_start_timestamp} 

ノードマネージャのログメッセージの4番目のパラメータ「NULL」が何であるか不明です)。

2017-08-15 15:20:09,876 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService: Created localizer for container_1502835577753_0001_01_000001 
2017-08-15 15:20:09,876 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.container.Container: Container container_1502835577753_0001_01_000001 transitioned from LOCALIZING to LOCALIZATION_FAILED 
2017-08-15 15:20:09,877 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl: Container container_1502835577753_0001_01_000001 sent RELEASE event on a resource request { file:/var/cdr-ingest-mapreduce/lib/mail-1.4.7.jar, 1502740240000, FILE, null } not present in cache. 
2017-08-15 15:20:09,877 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl: Container container_1502835577753_0001_01_000001 sent RELEASE event on a resource request { file:/var/cdr-ingest-mapreduce/lib/commons-lang3-3.4.jar, 1502740240000, FILE, null } not present in cache. 
2017-08-15 15:20:09,877 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl: Container container_1502835577753_0001_01_000001 sent RELEASE event on a resource request { file:/var/cdr-ingest-mapreduce/lib/cdr-ingest-mapreduce-core-1.0.3-SNAPSHOT.jar, 1502740240000, FILE, null } not present in cache. 
2017-08-15 15:20:09,877 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.LocalResourcesTrackerImpl: Container container_1502835577753_0001_01_000001 sent RELEASE event on a resource request { file:/var/cdr-ingest-mapreduce/lib/opencsv-3.8.jar, 1502740240000, FILE, null } not present in cache. 
2017-08-15 15:20:09,877 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.localizer.ResourceLocalizationService: Failed to download resource { { file:/var/cdr-ingest-mapreduce/lib/dataplatform-common-1.0.7.jar, 1502740240000, FILE, null },pending,[(container_1502835577753_0001_01_000001)],31900834426583787,DOWNLOADING} 

何か助けていただければ幸いです。

答えて

0

基本的に、マッパー/レデューサーは、ノードマネージャのローカルファイルシステムから依存jarファイルを読み込もうとしていました。私は2つのクラスター間の構成を比較することでそれを確認しました。 "fs.defaultFS"の値は、動作していないクラスタの "file:///"に設定されていました。それは、私のmapreduceが起動されたサーバー(エッジサーバー)の/etc/hadoop/conf/core-site.xmlファイルから得られた値です。このエッジサーバーにサービス/役割が展開されていないため、このファイルには構成がありませんでした。エッジサーバーにHDFS/HttpFを展開し、クライアント構成をクラスタ全体に再展開しました。また、サーバー上にゲートウェイロールを展開して、ロールを実行せずに構成をプルすることもできます。先端の@ tk421に感謝します。これで/etc/hadoop/conf/core-site.xmlに内容が作成され、問題が修正されました。

エッジサーバーにサービス/役割を展開したくない人は、データノードの1つからファイルの内容をコピーできます。

私は、設定値を印刷するジョブを開始する前に、この小さなコードスニペットを追加しました:

for (Entry<String, String> entry : config) { 
    System.out.println(entry.getKey() + "-->" + entry.getValue()); 
} 

// Start and wait for the job to finish 
jobStatus = job.waitForCompletion(true); 
+0

をあなたはhttps://www.cloudera.com/documentation/enterprise/5-を参照してください(ゲートウェイの役割をご覧ください9-x/topics/cm_mc_managing_roles.html#xd_583c10bfdbd326ba-3ca24a24-13d80143249--7f3c__section_scv_ywt_cn)。これは、サービスのないホストにクライアント設定(/ etc/hadoop/conf/*など)を追加する標準的な方法です。 – tk421

+0

@ tk421が正しいです。ゲートウェイの役割が必要なすべての構成を引き出していました。私はHttpFsの必要性があったので、それは私のために働いた。 – Kamal

関連する問題