복붙노트

[HADOOP] OOZIE-4.1.0에서 다중 워크 플로우 실행시 오류

HADOOP

OOZIE-4.1.0에서 다중 워크 플로우 실행시 오류

Linux 머신에 oozie 4.1.0을 설치하는 방법은 다음과 같습니다. http://gauravkohli.com/2014/08/26/apache-oozie-installation-on-hadoop-2-4-1/

hadoop version - 2.6.0 
maven - 3.0.4 
pig - 0.12.0

클러스터 설정 -

마스터 노드 runnig - Namenode, Resourcemanager, proxyserver.

SLAVE NODE 실행 중 -Datanode, Nodemanager.

단일 워크 플로 작업을 실행하면 성공할 수 있습니다. 하지만 둘 이상의 워크 플로 작업을 실행하려고하면 두 작업이 모두 수락 된 상태가됩니다.

오류 로그를 검사하여 문제를 드릴 다운합니다.

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 작업 -kill <실행 프로그램 - 작업 ID>) 모든 작업이 성공하게됩니다. 그래서 문제는 하나 이상의 런처 작업이 동시에 실행되면 평균 작업이 교착 상태를 만회 할 것이라고 생각합니다.

누구든지 위의 문제에 대한 이유와 해결책을 알고 있다면. 가능한 한 빨리 부탁을 들어주세요.

해결법

  1. ==============================

    1.문제는 대기열에 있습니다. 위의 클러스터 설정과 동일한 대기열 (기본값)에서 작업을 실행하면 ResourceManager가 salve 노드에서 mapreduce 작업을 실행할 책임이 있습니다. 슬레이브 노드의 자원 부족으로 대기열에서 실행중인 작업이 교착 상태를 만회합니다.

    문제는 대기열에 있습니다. 위의 클러스터 설정과 동일한 대기열 (기본값)에서 작업을 실행하면 ResourceManager가 salve 노드에서 mapreduce 작업을 실행할 책임이 있습니다. 슬레이브 노드의 자원 부족으로 대기열에서 실행중인 작업이 교착 상태를 만회합니다.

    이 문제를 해결하기 위해 MapRoutce 작업을 다른 대기열에서 트리거하는 방법으로 Mapreduce 작업을 분할해야합니다.

    oozie workflow.xml 안의 pig 작업에서이 부분을 설정하면됩니다.

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

    참고 :이 솔루션은 소규모 클러스터 설정에서만 사용할 수 있습니다.

  2. ==============================

    2.나는 완벽하게 나를 위해 작동하는 솔루션 아래에 노력했다.

    나는 완벽하게 나를 위해 작동하는 솔루션 아래에 노력했다.

    1) 용량 스케줄러에서 공정한 스케줄러로 Hadoop 스케줄 유형을 변경하십시오. 작은 클러스터의 경우 각 큐가 단일 맵 축소 작업을 완료하기 위해 일부 메모리 크기 (2048MB)를 할당하기 때문입니다. 둘 이상의 맵이 단일 큐에서 작업 실행을 줄이면 교착 상태에 도달했음을의 L합니다.

    해결책 : yarn-site.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에서 사용하는 두 개의 mapreduce 프로그램 메모리를 실행하면 8GB가 넘습니다. 따라서 교착 상태에 빠졌습니다.

    해결책 : yarn-site.xml에서 다음 등록 정보를 사용하여 nodemanager의 총 메모리 크기를 늘립니다.

    <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 프로그램을 실행하려고하면 노드 관리자를 늘리거나 Hadoop의 전체 메모리 크기를 늘려야합니다 (참고 : 크기를 늘리면 시스템 사용 메모리가 줄어 듭니다.) 위의 속성 파일은 10 개의 맵을 실행할 수 있습니다. 동시에 프로그램 줄이기.)

  3. from https://stackoverflow.com/questions/27653937/error-on-running-multiple-workflow-in-oozie-4-1-0 by cc-by-sa and MIT license