在cdh3u3版本上安装后,按照官方文档的配置方法,轻松搞定。
http://incubator.apache.org/oozie/QuickStart.html
其中,要注意以下几点:
1,运行命令:
bin/oozie-setup.sh -hadoop 0.20.2 ${HADOOP_HOME} -extjs /tmp/ext-2.2.zip时,首先
版本号用的是0.20.2。
2,ext-2.2.zip的版本一定是2.2的,且不是Ext-2.2.zip,一定用小写的那个包。(google code啥样下载的那个Ext-2.2.zip不行)
使用bigtop方式安装的hadoop和oozie,
1,应该用service方法启动oozie,sudo service oozie start
2,访问oozie页面遇到404错误时,需要进行如下操作。
For 20.2, you can follow these steps:
1. From oozie-default.xml, copy the property "oozie.services" including all the values into
your oozie-site.xml.
2. In oozie-site.xml, one of the service name is "KerberosHadoopAccessorService". Remove only
"Kerberos" which will make it "HadoopAccessorService".
3. Restart Oozie.
(http://mail-archives.apache.org/mod_mbox/incubator-oozie-users/201204.mbox/%
[email protected]%3E)
然后,就ok了。
--------------
补充下,无论哪个版本的hadoop,oozie默认都是开启kerberos权限管理的,
需要关闭,并替换成hadoop自身的权限管理,这样才能运行。
具体方法参见:https://github.com/yahoo/oozie/wiki/FAQ
其实,就和上面那个讲的一样,
1,把oozie-default.xml里面的oozie.services属性值全部复制到oozie-site.xml里面。
2,删去其中的org.apache.oozie.service.KerberosHadoopAccessorService值;
3,增加一个值:org.apache.oozie.service.HadoopAccessorService。
(其实就是上面的修改,呵呵)
然后重启oozie就ok。
执行job时会遇到诡异的报错。
------
刚开始使用,可能会遇到些基础概念性的问题。
1,job.properties文件是整个工作流的入口,一个工作流最初的配置信息就在这里面。
2,工作流的实际工作内容和相应的库是放在hdfs中的。(这个路径地址在job.properties里面指定)
3,然后就是执行了,目前还没有碰到啥特别的。
--------
哦,对了,要注意一个问题。
再最开始执行时,一直报错:oozie HTTP error code: 500 : Internal Server Error.
而且最诡异的是,这个错误不会往oozie.log或者catalina.out里面记录任何错误信息。
折腾了好久,发现错误会记录在localhost.2012-05-14.log文件里面,错误内容如下:
May 14, 2012 5:39:51 PM org.apache.catalina.core.StandardWrapperValve invoke
SEVERE: Servlet.service() for servlet v1jobs threw exception
java.lang.NoClassDefFoundError: org/apache/hadoop/thirdparty/guava/common/collect/LinkedListMultimap
at org.apache.hadoop.hdfs.SocketCache.<init>(SocketCache.java:48)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:240)
at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:208)
at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:89)
at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1563)
at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:67)
at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:1597)
at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1579)
at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:228)
at org.apache.oozie.service.KerberosHadoopAccessorService$3.run(KerberosHadoopAccessorService.java:203)
at org.apache.oozie.service.KerberosHadoopAccessorService$3.run(KerberosHadoopAccessorService.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:396)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1157)
at org.apache.oozie.service.KerberosHadoopAccessorService.createFileSystem(KerberosHadoopAccessorService.java:195)
at org.apache.oozie.service.AuthorizationService.authorizeForApp(AuthorizationService.java:288)
at org.apache.oozie.servlet.BaseJobServlet.checkAuthorizationForApp(BaseJobServlet.java:188)
at org.apache.oozie.servlet.BaseJobsServlet.doPost(BaseJobsServlet.java:92)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
at org.apache.oozie.servlet.JsonRestServlet.service(JsonRestServlet.java:284)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
at java.lang.Thread.run(Thread.java:619)
找不到这个类:org/apache/hadoop/thirdparty/guava/common/collect/LinkedListMultimap。
研究发现,发现这个类是在$HADOOP_HOME/lib/guava-r09-jarjar.jar中,
而在oozie-setup.sh后生成的oozie.war包中,没有包含这个jar包。
无奈只能在这个war包中oozie.war\WEB-INF\lib下,添加上guava-r09-jarjar.jar,
然后就ok了。
我的添加方法比较山寨,在win下用winRAR打开,然后添加进去的。不知道有没有更好的方法。
又来新问题
------------
执行例子程序各种报错,原因和上面一样,缺少各种jar包,
所以,按照上面的方法添加jar包到war包中,我添加了以下jar包后,暂时没有问题。
jackson-core-asl-1.5.2.jar
jackson-mapper-asl-1.5.2.jar
log4j-1.2.15.jar
slf4j-api-1.4.3.jar
slf4j-log4j12-1.4.3.jar
commons-configuration-1.6.jar
要是再有新问题,可能还需要添加其他jar包。
真不知道有没有更好的解决办法,给webapp添加个classpath什么的。
暂时搞定,唉。