公司里负责的系统一直用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作业:
- [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
提交不成功, 出现如下异常:
- Error: E0902 : E0902: Exception occured: [org.apache.hadoop.ipc.RemoteException: User: oozie is not allowed to impersonate p_sdo_data_01]
这里补充下, 我的oozie的examples在hdfs放置路径是:
- [p_sdo_data_01@localhost ~]$ hadoop fs -ls /group/p_sdo_data/oozie
- Found 2 items
- drwxr-xr-x - p_sdo_data_01 cug_p_sdo_data 0 2012-02-26 05:10 /group/p_sdo_data/oozie/examples
- drwxr-xr-x - p_sdo_data_01 cug_p_sdo_data 0 2012-02-25 04:48 /group/p_sdo_data/oozie/share
- [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配置中增加如下配置项
- <property>
- <name>hadoop.proxyuser.***.hosts</name>
- <value>***</value>
- </property>
- <property>
- <name>hadoop.proxyuser.***.groups</name>
- <value>***</value>
- </property>
OK, 那就增加试试, 根据我的实际情况,在hadoop的core-site.xml中增加如下配置:
- <property>
- <name>hadoop.proxyuser.oozie.hosts</name>
- <value>192.168.237.128</value>
- </property>
- <property>
- <name>hadoop.proxyuser.oozie.groups</name>
- <value>cug_p_sdo_data</value>
- </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用户提交作业试试
- [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
- job: 0000001-120226054133632-oozie-oozi-W
OK, 这次没有异常了,看下oozie web界面:http://192.168.237.128:11000/oozie/
作业成功执行.
安装过程中最大的体会就是权限问题^_^