我在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。
从节点运行-数据节点,节点管理器。
当我运行单个工作流作业时,意味着它成功了。但是当我尝试运行多个工作流作业时,即两个作业都处于接受状态
检查错误日志,我深入问题,
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>)
意味着所有的工作都成功了。所以我认为问题是多个启动器作业同时运行意味着作业将遇到死锁。。
如果有人知道上述问题的原因和解决方法。请尽快帮我个忙。
2条答案
按热度按时间xcitsw881#
问题是在队列中,当我们使用上述集群设置在同一队列(默认)中运行作业时,resourcemanager负责在salve节点中运行mapreduce作业。由于从节点资源不足,队列中运行的作业会出现死锁情况。
为了解决这个问题,我们需要通过在不同的队列中触发mapreduce作业来拆分mapreduce作业。
您可以通过在oozie workflow.xml中的pig操作中设置此部分来实现这一点
注意:此解决方案仅适用于小型群集设置
ymdaylpp2#
我试过下面的解决方案,它对我非常有效。
1) 将hadoop调度类型从capacity scheduler更改为fair scheduler。因为对于小型集群,每个队列分配一些内存大小(2048mb)来完成单个map reduce作业。如果在单个队列中运行多个map reduce作业,则表示它遇到死锁。
解决方案:将以下属性添加到yarn-site.xml
2) 默认情况下,hadoop的总内存大小被分配为8gb。
因此,如果我们运行两个mapreduce程序,hadoop使用的内存就会超过8gb,这样就遇到了死锁。
解决方案:使用yarn-site.xml中的以下属性增加nodemanager的总内存大小
因此,如果用户尝试运行两个以上的mapreduce程序,就意味着他需要增加nodemanager或者他需要增加hadoop的总内存大小(注意:增加大小会减少系统内存的使用)。以上属性文件可以同时运行10个map reduce程序。)