Недостаточно памяти в Hadoop - PullRequest
       1

Недостаточно памяти в Hadoop

58 голосов
/ 11 декабря 2011

Я попытался установить Hadoop после этого http://hadoop.apache.org/common/docs/stable/single_node_setup.html документа. Когда я попытался выполнить это

bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+' 

Я получаю следующее исключение

java.lang.OutOfMemoryError: Java heap space

Пожалуйста, предложите решение, чтобы я мог попробовать пример. Полное исключение указано ниже. Я новичок в Hadoop, возможно, я сделал что-то глупое. Любое предложение будет высоко оценено.

anuj@anuj-VPCEA13EN:~/hadoop$ bin/hadoop jar hadoop-examples-*.jar grep input output 'dfs[a-z.]+'
11/12/11 17:38:22 INFO util.NativeCodeLoader: Loaded the native-hadoop library
11/12/11 17:38:22 INFO mapred.FileInputFormat: Total input paths to process : 7
11/12/11 17:38:22 INFO mapred.JobClient: Running job: job_local_0001
11/12/11 17:38:22 INFO util.ProcessTree: setsid exited with exit code 0
11/12/11 17:38:22 INFO mapred.Task:  Using ResourceCalculatorPlugin : org.apache.hadoop.util.LinuxResourceCalculatorPlugin@e49dcd
11/12/11 17:38:22 INFO mapred.MapTask: numReduceTasks: 1
11/12/11 17:38:22 INFO mapred.MapTask: io.sort.mb = 100
11/12/11 17:38:22 WARN mapred.LocalJobRunner: job_local_0001
java.lang.OutOfMemoryError: Java heap space
    at org.apache.hadoop.mapred.MapTask$MapOutputBuffer.<init>(MapTask.java:949)
    at org.apache.hadoop.mapred.MapTask.runOldMapper(MapTask.java:428)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:372)
    at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:212)
11/12/11 17:38:23 INFO mapred.JobClient:  map 0% reduce 0%
11/12/11 17:38:23 INFO mapred.JobClient: Job complete: job_local_0001
11/12/11 17:38:23 INFO mapred.JobClient: Counters: 0
11/12/11 17:38:23 INFO mapred.JobClient: Job Failed: NA
java.io.IOException: Job failed!
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1257)
    at org.apache.hadoop.examples.Grep.run(Grep.java:69)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.hadoop.examples.Grep.main(Grep.java:93)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.ProgramDriver$ProgramDescription.invoke(ProgramDriver.java:68)
    at org.apache.hadoop.util.ProgramDriver.driver(ProgramDriver.java:139)
    at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:64)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:156)

Ответы [ 14 ]

0 голосов
/ 21 сентября 2017

Убедитесь, что у mapreduce.child.java.opts достаточно памяти, чтобы выполнить сопоставленное задание.Также убедитесь, что mapreduce.task.io.sort.mb должно быть меньше mapreduce.child.java.opts.

Пример:

 mapreduce.child.java.opts=Xmx2048m

 mapreduce.task.io.sort.mb=100

В противном случае вы столкнетесь с проблемой OOM, даже если HADOOP_CLIENT_OPTS в hadoop-env.sh будет достаточно памяти, если настроено.

0 голосов
/ 20 июля 2015

На прошлой неделе у меня возникла очень похожая проблема.У моего входного файла, который я использовал, была большая строка задницы, которую я не мог просмотреть.Эта строка составляла почти 95% моего размера файла (95% от 1 ГБ! Представьте себе!).Я бы посоветовал вам сначала взглянуть на ваши входные файлы.Возможно, у вас неправильный входной файл, который вы хотите просмотреть.Попробуйте увеличить пространство кучи после проверки входного файла.

0 голосов
/ 11 августа 2013

В Ubuntu с использованием установки DEB (по крайней мере, для Hadoop 1.2.1) существует символическая ссылка /etc/profile.d/hadoop-env.sh, созданная для /etc/hadoop/hadoop-env.sh, которая заставляет его загружаться каждый раз, когда вы входите в систему. По моему опыту это не обязательно, поскольку 1003 * обертка сама будет вызывать его (через /usr/libexec/hadoop-config.sh). В моей системе я удалил символическую ссылку, и у меня больше не возникает странных проблем при изменении значения -Xmx в HADOOP_CLIENT_OPTIONS (поскольку каждый раз, когда запускается сценарий hadoop-env.sh, переменная среды параметров клиента обновляется, хотя и сохраняется старое значение)

0 голосов
/ 01 июля 2013

Экспорт переменных с помощью следующей команды работал для меня:

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