4

サンドボックス Hadoop (Cloudera5.1/Hortonworks2.1) 上の R (ビルド 1060) で同様の問題を抱えている人はいますか? CDH5.0では動作するので、新しいR/Hadoopの問題と思われます。

コード:

Sys.setenv(HADOOP_CMD="/usr/bin/hadoop")
Sys.setenv(HADOOP_STREAMING="/usr/lib/hadoop-mapreduce/hadoop-streaming.jar")
Sys.setenv(JAVA_HOME="/usr/java/jdk1.7.0_55-cloudera")
library(rhdfs)
library(rmr2)
hdfs.init()

## space and word delimiter
map <- function(k,lines) {
  words.list <- strsplit(lines, '\\s')
  words <- unlist(words.list)
  return( keyval(words, 1) )
}
reduce <- function(word, counts) {
  keyval(word, sum(counts))
}
wordcount <- function (input, output=NULL) {
  mapreduce(input=input, output=output, input.format="text", map=map, reduce=reduce)
}

## variables
hdfs.root <- '/user/cloudera'
hdfs.data <- file.path(hdfs.root, 'scenario_1')
hdfs.out <- file.path(hdfs.root, 'out')

## run mapreduce job
##out <- wordcount(hdfs.data, hdfs.out)
system.time(out <- wordcount(hdfs.data, hdfs.out))

エラー:

> system.time(out <- wordcount(hdfs.data, hdfs.out))
packageJobJar: [] [/usr/lib/hadoop-mapreduce/hadoop-streaming-2.3.0-cdh5.1.0.jar] /tmp/streamjob8497498354509963133.jar tmpDir=null
14/09/17 01:49:38 INFO client.RMProxy: Connecting to ResourceManager at quickstart.cloudera/127.0.0.1:8032
14/09/17 01:49:38 INFO client.RMProxy: Connecting to ResourceManager at quickstart.cloudera/127.0.0.1:8032
14/09/17 01:49:39 INFO mapred.FileInputFormat: Total input paths to process : 1
14/09/17 01:49:39 INFO mapreduce.JobSubmitter: number of splits:2
14/09/17 01:49:39 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1410940439997_0001
14/09/17 01:49:40 INFO impl.YarnClientImpl: Submitted application application_1410940439997_0001
14/09/17 01:49:40 INFO mapreduce.Job: The url to track the job: http://quickstart.cloudera:8088/proxy/application_1410940439997_0001/
14/09/17 01:49:40 INFO mapreduce.Job: Running job: job_1410940439997_0001
14/09/17 01:49:54 INFO mapreduce.Job: Job job_1410940439997_0001 running in uber mode : false
14/09/17 01:49:54 INFO mapreduce.Job:  map 100% reduce 100%
14/09/17 01:49:55 INFO mapreduce.Job: Job job_1410940439997_0001 failed with state KILLED due to: MAP capability required is more than the supported max container capability in the cluster. Killing the Job. mapResourceReqt: 4096 maxContainerCapability:1024
Job received Kill while in RUNNING state.
REDUCE capability required is more than the supported max container capability in the cluster. Killing the Job. **reduceResourceReqt: 4096 maxContainerCapability:1024**

14/09/17 01:49:55 INFO mapreduce.Job: Counters: 2
    Job Counters 
        Total time spent by all maps in occupied slots (ms)=0
        Total time spent by all reduces in occupied slots (ms)=0
14/09/17 01:49:55 ERROR streaming.StreamJob: Job not Successful!
Streaming Command Failed!
Error in mr(map = map, reduce = reduce, combine = combine, vectorized.reduce, : hadoop streaming failed with error code 1
Timing stopped at: 3.681 0.695 20.43 

問題は reduceResourceReqt: 4096 maxContainerCapability:1024 にあるようです。yarn-site.xml を変更しようとしましたが、役に立ちませんでした。:(

助けてください...

4

1 に答える 1

6

私はRHadoopを使用していません。ただし、クラスターで非常によく似た問題が発生しました。この問題は MapReduce にのみ関連しているようです。

このログの maxContainerCapability は、構成のプロパティを参照してyarn.scheduler.maximum-allocation-mbますyarn-site.xml。これは、任意のコンテナで使用できるメモリの最大量です。

ログのmapResourceReqtreduceResourceReqtmapreduce.map.memory.mbは、構成のおよびmapreduce.reduce.memory.mbプロパティを参照しmapred-site.xmlます。mapreduce で Mapper または Reducer 用に作成されるコンテナーのメモリ サイズです。

Reducer のコンテナーのサイズが より大きい値に設定されてyarn.scheduler.maximum-allocation-mbいる場合 (ここではそのようです)、コンテナーに大量のメモリを割り当てることは許可されていないため、ジョブは強制終了されます。

http://[your-resource-manager]:8088/confで設定を確認してください。通常はこれらの値を見つけて、これが事実であることを確認してください。

新しい環境では、これらの値が 4096 Mb に設定されている可能性があります (これは非常に大きく、Hadoop 2.7.1 のデフォルトは 1024 です)。

解決

値を 1024 まで下げるか、mapreduce.[map|reduce].memory.mb大量のメモリがあり巨大なコンテナーが必要な場合は、yarn.scheduler.maximum-allocation-mb値を 4096 に上げてください。そうしないと、MapReduce はコンテナーを作成できません。

これが役立つことを願っています。

于 2015-09-24T10:22:56.337 に答える