2014-12-26 2 views
6

Я установил oozie 4.1.0 на машине Linux, следуя инструкциям на http://gauravkohli.com/2014/08/26/apache-oozie-installation-on-hadoop-2-4-1/Ошибка на выполнения нескольких рабочих процессов в OOZIE-4.1.0

hadoop version - 2.6.0 
maven - 3.0.4 
pig - 0.12.0 

Настройка кластера -

MASTER NODE runnig - Namenode, Resourcemanager, proxyserver.

СЛАВЯННЫЙ УЗЕЛ, РАБОТАЮЩИЙ -Датанод, Nodemanager.

Когда я запускаю одно рабочее задание, это означает, что он преуспевает. Но когда я пытаюсь запустить более одного рабочего процесса работы, т.е. как рабочие места находятся в принятом состоянии enter image description here

инспектирующих журнал ошибок, я детализировать проблему, как,

014-12-24 21:00:36,758 [JobControl] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 172.16.***.***/172.16.***.***:8032. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 
2014-12-25 09:30:39,145 [communication thread] INFO org.apache.hadoop.ipc.Client - Retrying connect to server: 172.16.***.***/172.16.***.***:52406. Already tried 9 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 
2014-12-25 09:30:39,199 [communication thread] INFO org.apache.hadoop.mapred.Task - Communication exception: java.io.IOException: Failed on local exception: java.net.SocketException: Network is unreachable: no further information; Host Details : local host is: "SystemName/127.0.0.1"; destination host is: "172.16.***.***":52406; 
at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:764) 
at org.apache.hadoop.ipc.Client.call(Client.java:1415) 
at org.apache.hadoop.ipc.Client.call(Client.java:1364) 
at org.apache.hadoop.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:231) 
at $Proxy9.ping(Unknown Source) 
at org.apache.hadoop.mapred.Task$TaskReporter.run(Task.java:742) 
at java.lang.Thread.run(Thread.java:722) 
Caused by: java.net.SocketException: Network is unreachable: no further information 
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) 
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:701) 
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) 
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:529) 
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:493) 
at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:606) 
at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:700) 
at org.apache.hadoop.ipc.Client$Connection.access$2800(Client.java:367) 
at org.apache.hadoop.ipc.Client.getConnection(Client.java:1463) 
at org.apache.hadoop.ipc.Client.call(Client.java:1382) 
... 5 more 

Heart beat 
Heart beat 
. 
. 

В вышеуказанных бегущих рабочих мест , если я убью любую задачу запуска вручную. (hadoop job -kill <launcher-job-id>) означает, что все задания получаются успешно. Поэтому я думаю, что проблема заключается в более одного запуска, выполняемого одновременно, означает, что работа будет соответствовать тупику ..

Если кто-нибудь знает причину и решение проблемы выше. Пожалуйста, сделайте мне одолжение как можно скорее.

+0

У вас есть получилось ли налаживание сети? Если вы установили локальный кластер, не пытайтесь ли он подключиться к localhost? – miljanm

+0

Привет, спасибо за ответ .. Я установлен hadoop с двумя узловыми кластерными машинами, как, например, вышеупомянутая архитектура. –

+0

А также я нашел какое-то решение моей проблемы. Если я запустил два задания рабочего процесса, то две рабочие задания запускали его не получится. Но если я убью любую задачу запуска вручную, «job-job -kill ;»; то обе программы mapreduce получат успех. Но на сайте oozie он показывал, что убитый статус задания запуска был УБИЛ. Таким образом, точная проблема с моей ошибкой не может одновременно запускать две программы запуска. –

ответ

1

Проблема с очередью. Когда мы запускаем задание в SAME QUEUE (DEFAULT) с указанной выше настройкой кластера Resourcemanager несет ответственность за выполнение задания mapreduce в узле сальвера. Из-за нехватки ресурсов в подчиненном узле работа, выполняющаяся в очереди, встретится с Ситуация с тупиком.

Для того, чтобы преодолеть эту проблему, нам необходимо разделить работу Mapreduce с помощью запуска задания mapreduce в разных очередей.

enter image description here

вы можете сделать это, установив эту часть в действии свиней внутри oozie workflow.xml

<configuration> 
<property> 
    <name>mapreduce.job.queuename</name> 
    <value>launcher2</value> 
</property> 

Примечание: Этого решения только для малого кластера НАСТРОЙКИ

+0

Привет, karthi, Спасибо. Теперь он работает. Но мне нужно знать, что произойдет, если используемая память будет больше, чем полная память? (предположим, что я запускаю более 10 заданий одновременно) –

+0

Работа в очереди будет ждать памяти, это происходит, когда мы запускаем все задание в одной очереди. По этой причине вы должны запустить задание в другой очереди в соответствии с памятью. Как только мы запускаем в другой очереди, память будет автоматически выпущена после завершения задания в одной очереди. – karthik

2

Я попробовал под решение он отлично работает для меня.

1) Измените тип графика Hadoop от capacity scheduler до fair scheduler. Поскольку для небольшого кластера каждая очередь назначает некоторый объем памяти (2048 МБ) для завершения работы по уменьшению одиночной карты. Если более чем одна карта уменьшает выполнение задания в одиночной очереди, то она встречает тупик.

Решение: добавить ниже имущество пряжа.XML

<property> 
    <name>yarn.resourcemanager.scheduler.class</name> 
    <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value> 
    </property> 
    <property> 
    <name>yarn.scheduler.fair.allocation.file</name> 
    <value>file:/%HADOOP_HOME%/etc/hadoop/fair-scheduler.xml</value> 
    </property> 

2) По умолчанию Hadoop Общий объем памяти был отчислять в 8GB.

Так что если мы запустим две программы памяти памяти, используемые Hadoop, получим более 8 ГБ, чтобы встретить тупик.

Решение: Увеличение размера Общей памяти nodemanager, используя следующие свойства при пряжи site.xml

<property> 
    <name>yarn.nodemanager.resource.memory-mb</name> 
    <value>20960</value> 
    </property> 
    <property> 
    <name>yarn.scheduler.minimum-allocation-mb</name> 
    <value>1024</value> 
    </property> 
    <property> 
    <name>yarn.scheduler.maximum-allocation-mb</name> 
    <value>2048</value> 
    </property> 

Так что если пользователь попытаться запустить более двух программ MapReduce означает, что он нужен для увеличения nodemanager или ему нужно увеличить размер общей памяти Hadoop (примечание: увеличение размера уменьшит память использования системы. Над файлом свойств, способным запускать 10 карт, сокращает программу одновременно.)