Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

创建job出错 #19

Closed
LG-1 opened this issue Jun 20, 2017 · 14 comments
Closed

创建job出错 #19

LG-1 opened this issue Jun 20, 2017 · 14 comments

Comments

@LG-1
Copy link

LG-1 commented Jun 20, 2017

环境基本搭建好了,但是创建job的时候报了如下错误:

<workflow-app xmlns="uri:oozie:workflow:0.4" name="aaa">
    <start to="end"/>
    <kill name="fail">
        <message>Map/Reduce failed, error message[${wf:errorMessage(wf:lastErrorNode())}]</message>
    </kill>
    <end name="end"/>
</workflow-app>
[mkdirs]hdfs://master:9000/EML/oozie/APP-PATH-72385ded-559a-459b-b4d5-78182334a34b
E0504 : E0504: App directory [/EML/oozie/APP-PATH-72385ded-559a-459b-b4d5-78182334a34b] does not exist

########################
ps:
1、oozie能够单独运行job。
2、会不会是因为程序在HDFS上创建hdfs目录没有成功?在后台也确实找不到这个目录。可否指点如何解决这个问题。十分感谢。

@sinllychen
Copy link
Contributor

@LG-1 您好,您可以到tomcat下的logs目录查看一下相关日志,然后把错误日志给我们截个图吗?

@LG-1
Copy link
Author

LG-1 commented Jun 21, 2017

@sinllychen 您好,目前还没有配置tomcat服务

@LG-1
Copy link
Author

LG-1 commented Jun 21, 2017

@sinllychen 对不起,我再去后台看了一下,HDFS目录是有的,workflow.xml文件也写进去了。如下图。
可为什么还是会报路径不存在呢?
oozie-capture

@LG-1
Copy link
Author

LG-1 commented Jun 21, 2017

@sinllychen 具体错误返回日志

`[mkdirs]hdfs://master:9000/EML/oozie/APP-PATH-111
E0504 : E0504: App directory [/EML/oozie/APP-PATH-111] does not exist
	at org.apache.oozie.client.OozieClient.handleError(OozieClient.java:508)
	at org.apache.oozie.client.OozieClient$JobSubmit.call(OozieClient.java:591)
	at org.apache.oozie.client.OozieClient$JobSubmit.call(OozieClient.java:561)
	at org.apache.oozie.client.OozieClient$ClientCallable.call(OozieClient.java:479)
	at org.apache.oozie.client.OozieClient.run(OozieClient.java:655)
	at eml.studio.server.util.OozieUtil.submit(OozieUtil.java:48)
	at eml.studio.server.oozie.instance.OozieInstance.exec(OozieInstance.java:56)
	at eml.studio.server.rpc.JobServiceImpl.submit(JobServiceImpl.java:435)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:606)
	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:561)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processCall(RemoteServiceServlet.java:208)
	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:248)
	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362)
	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:729)
	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.handler.RequestLogHandler.handle(RequestLogHandler.java:49)
	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
	at org.mortbay.jetty.Server.handle(Server.java:324)
	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843)
	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:647)
	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
	at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488)`

@sinllychen
Copy link
Contributor

@LG-1 你的日志上显示hdfs地址是master:9000这个master是你自己配的吗?我们默认是hadoop-master

@sinllychen
Copy link
Contributor

@LG-1顺带问您一下你是在ubuntu下安装的docker,然后安装我们的集群吗?然后通过window系统访问吗?如果是这样的话,你的ubuntu需要配置host: 本机ip hadoop-master和mysql。并且你的windows系统上也需要配置host: ubuntu的ip hadoop-master和mysql

@LG-1
Copy link
Author

LG-1 commented Jun 21, 2017

@sinllychen 是的,整个后台我移植到自己搭建的环境了。联通性是没有问题的,我上传的数据已成功上传到HDFS。但job依然不能创建,提示路径找不到,而后台实际是有这个路径及配置文件的。
oozie-capture

@LG-1
Copy link
Author

LG-1 commented Jun 21, 2017

@sinllychen 您好,我没有安装docker,我是在ubuntu下安装虚拟机然后搭建的Hadoop+Spark集群。目前webapplication也放在集群中的master机器上的,所以用户的访问权限应该是没有问题的。
mysql目前也装在master机器上。数据交互应该也没有问题(因为上传数据upload data已经成功将源信息写入表中,数据文件存入HDFS中)。

@LG-1
Copy link
Author

LG-1 commented Jun 21, 2017

@sinllychen 在后台单独运行job也是没问题的。
oozie-capture1

oozie-capture2

@sinllychen
Copy link
Contributor

@LG-1 您好,您能点击到oozie web console中的任意一个failed任务,查看一下失败的日志吗?还有,您的hadoop的job history server启动了吗?

@LG-1
Copy link
Author

LG-1 commented Jun 23, 2017

@sinllychen 您好,创建job出错的问题已经解决了。谢谢。
总结一下原因:应该不是由于EML系统造成的。
应该是由于oozie本身配置的一些问题,依据报错信息,经过一些努力,在修改了yarn-site.xml、mapred-site.xml等配置文件后,从命令行可以成功创建job并不报错的情况下,在EML创建job也就不会报错了。
再次感谢。

@LG-1 LG-1 closed this as completed Jun 23, 2017
@nkxujun
Copy link
Contributor

nkxujun commented Jun 23, 2017

@LG-1 如果方便请总结一下对配置文件做了哪一些修改,这样遇到同样问题的人可以快点找到方案,谢谢!

@LG-1
Copy link
Author

LG-1 commented Jun 23, 2017

@nkxujun 确实。
我大概遇到了两个问题,都是关于oozie安装成功后跑job不成功的问题,弄了差不多两天。
Q1:JA017: Could not lookup launched hadoop Job ID
Q2:Error starting action [mr-node]. ErrorType [TRANSIENT], ErrorCode [JA009], Message [JA009: Unknown protocol,org.apache.oozie.action.ActionExecutorException: JA009: Unknown protocol: org.apache.hadoop.yarn.api.ApplicationClientProtocolPB

1、oozie安装参考:https://segmentfault.com/a/1190000002738484
2、我安装成功后便出现Q1,解决主要参考了:https://stackoverflow.com/search?q=org.apache.oozie.action.ActionExecutorException%3A+JA017%3A+Could+not+lookup+launched+hadoop+Job+ID+
3、之后又出现Q2,解决主要受启发于:https://kb.informatica.com/solution/23/Pages/51/303398.aspx
4、配置文件的修改过程可以参考:https://stackoverflow.com/questions/43426691/oozie-workflow-failed-due-to-error-ja017?noredirect=1
5、由于解决过程比较纠结,所以至今我依然没有锁定具体是那一个因子造成成了上述问题,只是知道大体范围就在上面的修改空间。下面我会附上我跑起来OK的配置文件内容,希望能有参考作用。

${HADOOP_HOME}/etc/hadoop/yarn-site.xml:


<configuration>

<!-- Site specific YARN configuration properties -->
<property>
	<name>yarn.nodemanager.aux-services</name>
	<value>mapreduce_shuffle</value>
</property>
<property>
	<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
	<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
    <name>yarn.log-aggregation-enable</name>
    <value>true</value>
</property>

<property>
	<name>yarn.resourcemanager.resource-tracker.address</name>
	<value>master:8025</value>
</property>
<property>
	<name>yarn.resourcemanager.scheduler.address</name>
	<value>master:8030</value>
</property>
<property>
	<name>yarn.resourcemanager.address</name>
	<value>master:8033</value>
</property>

</configuration>

${HADOOP_HOME}/etc/hadoop/mapred-site.xml:

<configuration>
    <property>  
        <name>mapreduce.framework.name</name>  
        <value>yarn</value>  
    </property>  

<property>
    <name>mapreduce.job.queuename</name>
    <value>default</value>
</property>

<property>
    <name>mapreduce.tasktracker.http.address</name>
    <value>0.0.0.0:50060</value>
</property>
<property>
    <name>mapreduce.tasktracker.report.address</name>
    <value>127.0.0.1:0</value>
</property>
    <property>  
        <name>mapreduce.jobtracker.http.address</name>  
        <value>master:50030</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.address</name>  
        <value>master:10020</value>  
    </property>  
    <property>  
        <name>mapreduce.jobhistory.webapp.address</name>  
        <value>master:19888</value>  
    </property>  

备注:以上,master是我的主机名,请自行修改,另外一个比较关键的是端口号的配置,具体配置什么端口号一般来说应该是固定的,但是也请注意查看自己机器具体启用的是哪个端口。

@LG-1
Copy link
Author

LG-1 commented Jun 28, 2017

补充两点:
[1],如果出现Unknown protocol: org.apache.hadoop.yarn.api.ApplicationClientProtocolPB。极有可能是因为yarn-site.xml中yarn.resourcemanager.address配置的端口号与job.properties中的jobTracker不一致。两者需要一致。
[2],如果出现java.lang.NoSuchFieldError: HADOOP_CLASSPATH。极有可能是因为安装的hadoop版本与oozie支持的版本不一致。请参考:https://stackoverflow.com/questions/41205447/oozie-example-map-reduce-job-fails-with-java-lang-nosuchfielderror-hadoop-class。亲测有效。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants