По умолчанию hasoop запускает только локальную работу. Почему? - PullRequest
6 голосов
/ 16 марта 2012

Я написал свою собственную программу hadoop, и я могу работать в режиме псевдораспределения на своем ноутбуке, однако, когда я помещаю программу в кластер, который может запустить пример jar of hadoop, он по умолчанию запускает локальное задание, хотя яуказать путь к файлу hdfs, ниже вывод, дать предложения?

./hadoop -jar MyRandomForest_oob_distance.jar  hdfs://montana-01:8020/user/randomforest/input/genotype1.txt hdfs://montana-01:8020/user/randomforest/input/phenotype1.txt hdfs://montana-01:8020/user/randomforest/output1_distance/ hdfs://montana-01:8020/user/randomforest/input/genotype101.txt hdfs://montana-01:8020/user/randomforest/input/phenotype101.txt 33 500 1
12/03/16 16:21:25 INFO jvm.JvmMetrics: Initializing JVM Metrics with processName=JobTracker, sessionId=
12/03/16 16:21:25 WARN mapred.JobClient: Use GenericOptionsParser for parsing the arguments. Applications should implement Tool for the same.
12/03/16 16:21:25 INFO mapred.JobClient: Running job: job_local_0001
12/03/16 16:21:25 INFO mapred.MapTask: io.sort.mb = 100
12/03/16 16:21:25 INFO mapred.MapTask: data buffer = 79691776/99614720
12/03/16 16:21:25 INFO mapred.MapTask: record buffer = 262144/327680
12/03/16 16:21:25 WARN mapred.LocalJobRunner: job_local_0001
java.io.FileNotFoundException: File /user/randomforest/input/genotype1.txt does not exist.
    at org.apache.hadoop.fs.RawLocalFileSystem.getFileStatus(RawLocalFileSystem.java:361)
    at org.apache.hadoop.fs.FilterFileSystem.getFileStatus(FilterFileSystem.java:245)
    at org.apache.hadoop.fs.ChecksumFileSystem$ChecksumFSInputChecker.<init>(ChecksumFileSystem.java:125)
    at org.apache.hadoop.fs.ChecksumFileSystem.open(ChecksumFileSystem.java:283)
    at org.apache.hadoop.fs.FileSystem.open(FileSystem.java:356)
    at Data.Data.loadData(Data.java:103)
    at MapReduce.DearMapper.loadData(DearMapper.java:261)
    at MapReduce.DearMapper.setup(DearMapper.java:332)
    at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:142)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:621)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:305)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:177)
12/03/16 16:21:26 INFO mapred.JobClient:  map 0% reduce 0%
12/03/16 16:21:26 INFO mapred.JobClient: Job complete: job_local_0001
12/03/16 16:21:26 INFO mapred.JobClient: Counters: 0
Total Running time is: 1 secs

Ответы [ 3 ]

10 голосов
/ 22 марта 2012

LocalJobRunner был выбран, поскольку ваша конфигурация, скорее всего, имеет свойство mapred.job.tracker, установленное на local, или не было задано вообще (в этом случае по умолчанию используется значение local). Чтобы проверить, перейдите в «где бы вы ни распаковали / установили hadoop» / etc / hadoop / и посмотрите, существует ли файл mapred-site.xml (для меня его не было, там был файл mapped-site.xml.template). В этом файле (или создайте его, если он не существует) убедитесь, что он имеет следующее свойство:

<configuration>
<property>  
 <name>mapreduce.framework.name</name>  
 <value>yarn</value>  
 </property>
</configuration>
  • См. Источник для org.apache.hadoop.mapred.JobClient.init(JobConf)

Каково значение этого свойства конфигурации в конфигурации hadoop на машине, с которой вы отправляете это? Также убедитесь, что исполняемый файл hadoop, на котором вы работаете, ссылается на эту конфигурацию (и что у вас 2+ установки не настроены по-разному) - введите which hadoop и отследите любые символические ссылки, с которыми вы столкнулись.

В качестве альтернативы вы можете переопределить это при отправке работы, если вы знаете хост и номер порта JobTracker, используя опцию -jt:

hadoop jar MyRandomForest_oob_distance.jar -jt hostname:port hdfs://montana-01:8020/user/randomforest/input/genotype1.txt hdfs://montana-01:8020/user/randomforest/input/phenotype1.txt hdfs://montana-01:8020/user/randomforest/output1_distance/ hdfs://montana-01:8020/user/randomforest/input/genotype101.txt hdfs://montana-01:8020/user/randomforest/input/phenotype101.txt 33 500 1
4 голосов
/ 10 ноября 2013

Если вы используете Hadoop 2, и ваша работа выполняется локально, а не в кластере, убедитесь, что у вас настроено mapred-site.xml, чтобы оно содержало свойство mapreduce.framework.name со значением yarn. Вам также необходимо настроить вспомогательный сервис в yarn-site.xml

Ознакомьтесь с блогом по миграции оператора Cloudera Hadoop 2 для получения дополнительной информации.

2 голосов
/ 14 марта 2013

У меня была та же проблема, что каждая задача mapreduce v2 (mrv2) или пряжи выполнялась только с mapred.LocalJobRunner

INFO mapred.LocalJobRunner: Starting task: attempt_local284299729_0001_m_000000_0

Resourcemanager и Nodemanagers были доступны, а для mapreduce.framework.name было установлено значение yarn.

Установка HADOOP_MAPRED_HOME перед выполнением задания устранила проблему для меня.

export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce

веселит дан

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...