公司里负责的系统一直用oozie做调度, 之前这个oozie是由hadoop运维小组搭建的,近期他们工作调整, 不再维护这个oozie了, 于是我就决定自己去研究下,首先就安装oozie
     安装的oozie版本为 oozie-2.3.2-cdh3u3, 可以在https://ccp.cloudera.com/display/SUPPORT/CDH3+Downloadable+Tarballs 下载
     安装文档看这里
https://ccp.cloudera.com/display/CDHDOC/Oozie+Installation
     oozie的安装还是挺简单的, 根据安装文档一步步来就可以了.
     我在linux 系统上创建了 oozie组和oozie用户.  启动,停止oozie就由oozie用户去执行
     另外还创建了 cug_p_sdo_data 组和 p_sdo_data_01 用户, 这个用户是用来提交oozie作业的
     oozie安装完成就来运行下examples试试, 用p_sdo_data_01账户登录系统,提交oozie作业:

   
   
   
   
  1. [p_sdo_data_01@localhost ~]$ oozie job -oozie http://192.168.237.128:11000/oozie -config /opt/app/oozie-2.3.2-cdh3u3/examples/apps/map-reduce/job.properties -run 

 提交不成功, 出现如下异常:

   
   
   
   
  1. Error: E0902 : E0902: Exception occured: [org.apache.hadoop.ipc.RemoteException: User: oozie is not allowed to impersonate p_sdo_data_01] 

这里补充下, 我的oozie的examples在hdfs放置路径是:

   
   
   
   
  1. [p_sdo_data_01@localhost ~]$ hadoop fs -ls /group/p_sdo_data/oozie  
  2. Found 2 items  
  3. drwxr-xr-x   - p_sdo_data_01 cug_p_sdo_data          0 2012-02-26 05:10 /group/p_sdo_data/oozie/examples  
  4. drwxr-xr-x   - p_sdo_data_01 cug_p_sdo_data          0 2012-02-25 04:48 /group/p_sdo_data/oozie/share  
  5. [p_sdo_data_01@localhost ~]$  

上面的异常信息大概就是说oozie用户不允许仿冒p_sdo_data_01用户.
遂上google搜索一把,确实有很多该异常信息
http://mail-archives.apache.org/mod_mbox/incubator-oozie-users/201111.mbox/%3CCAKFPOX8e6=UtcKe5-MQqbrk3AE2CvTzTKN7WXhuEp50zwQggKw@mail.gmail.com%3E

文中都提到需要在 hadoop配置中增加如下配置项

   
   
   
   
  1. <property> 
  2.    <name>hadoop.proxyuser.***.hostsname> 
  3.    <value>***value> 
  4. property> 
  5. <property> 
  6.    <name>hadoop.proxyuser.***.groupsname> 
  7.    <value>***value> 
  8. property> 

OK, 那就增加试试, 根据我的实际情况,在hadoop的core-site.xml中增加如下配置:

   
   
   
   
  1. <property> 
  2.    <name>hadoop.proxyuser.oozie.hostsname> 
  3.    <value>192.168.237.128value> 
  4. property> 
  5. <property> 
  6.    <name>hadoop.proxyuser.oozie.groupsname> 
  7.    <value>cug_p_sdo_datavalue> 
  8. property> 

需要特别注意: 我是用oozie账户启动oozie的, 而oozie作业是用p_sdo_data_01用户提交的(p_sdo_data_01用户的组是 cug_p_sdo_data), 故要把oozie用户的组代理设置成p_sdo_data_01用户的组cug_p_sdo_data, 这样oozie才有权限执行p_sdo_data_01提交的作业.

  增加配置后重新启动hadoop. 用p_sdo_data_01用户提交作业试试

   
   
   
   
  1. [p_sdo_data_01@localhost ~]$ oozie job -oozie http://192.168.237.128:11000/oozie -config /opt/app/oozie-2.3.2-cdh3u3/examples/apps/map-reduce/job.properties -run  
  2. job: 0000001-120226054133632-oozie-oozi-W 

OK, 这次没有异常了,看下oozie web界面:http://192.168.237.128:11000/oozie/

oozie安装 及 解决Error: E0902 错误_第1张图片

作业成功执行.
安装过程中最大的体会就是权限问题^_^