概述
示例很简单,但是却有很多坑,如下先给出最终的配置示例以及运行结果,最后给出其中遇到过的问题以及解决方法。
安装用户
Hadoop安装在root用户下;
Oozie安装在wht用户下(一开始是安装在root用户下的,但是提交job会报错,因此将整个目录修改为了wht:wht)。
root@node1:/home# ll
total 582788
drwxr-xr-x 15 root root 4096 Nov 17 01:05 ./
drwxr-xr-x 22 root root 4096 Aug 28 03:38 ../
drwxr-xr-x 11 root root 4096 Sep 12 01:35 hadoop-2.5.2/ -------------hadoop安装目录
drwxr-xr-x 15 wht wht 4096 Nov 19 20:01oozie-4.1.0-cdh5.5.2/-------oozie安装目录
运行环境说明
Oozie部署在Hadoop的master节点,通过jps命令查看进程如下所示:
Master节点 | Slave-1节点 | Slave-2节点 |
22964 NameNode 23736 NodeManager 27773 JobHistoryServer 23117 DataNode 23278 SecondaryNameNode 28030 Jps 21870 Bootstrap 23439 ResourceManager | 9032 Jps 8089 NodeManager 7979 DataNode | 8504 Jps 7790 NodeManager 7679 DataNode |
1) 说明:Oozie需要从JobHistoryServer拉取M/R程序的执行结果日志,所以必须启动JobHistoryServer。
2) Bootstrap为Oozie的进程,该进程必须以Oozie的安装用户启动,而不能通过root用户启动,否则会造成鉴权失败的问题。
操作步骤
说明:本节的命令不特殊声明的化都是以oozie的安装用户wht来执行。
1. 解压example压缩包。
cd $OOZIE_HOME
tar -zxvf oozie-examples.tar.gz
解压后本地生产examples目录。
2. 解压oozie运行依赖库。
tar -zxvf oozie-sharelib-4.1.0-cdh5.5.2.tar.gz
解压后本地生产share目录。
3. 在hdfs上创建example和share目录。
hadoop fs -mkdirexamples share
该目录被创建在HDFS的/user/wht目录下,截图如下所示:
4. 配置MaperReduce示例的job文件。
cd /home/oozie-4.1.0-cdh5.5.2/examples/apps/map-reduce
修改job.properties文件,样例如下所示。
nadeNode:配置为Hadoop的core-site.xml中fs.defaultFS参数的值。
JobTracker:2.0之后的版本使用Yarn替代了jobtracker,因此,需要配置为yarn资源管理器的地址,配置为Hadoop的yarn-site.xml中yarn.resourcemanager.address参数的值。
其它参数保留默认值即可。
5 修改Hadoop的core-site.xml文件,样例如下所示。
本步骤需要以root用户进行操作。
上述配置文件中wht.groups的value也可以配置实际用户名wht;
wht.hosts的value也可以配置为实际的oozie安装节点名node-1.
6. 将解压后修改好的example和share目录下的文件上传到hdfs目录中。
hadoop fs -putexamples/* examples
hadoop fs -put share/* share
7. 运行自带的mr示例:
cd /home/oozie-4.1.0-cdh5.5.2/examples/apps/map-reduce
oozie job -oozie http://node1:11000/oozie -configjob.properties -run
8. 在命令行中根据jobid查看job状态:
9. 在Oozie自带的Web UI中查看执行结果:
上述记录中只有第一个是0000009-对应上述命令的job,其它的是之前由于配置错误等问题导致执行失败的。
Job Info如下:
Job DAG如下:
异常说明
故障场景一
报错信息:
E0501: Could not perform authorization operation, User: root isnot allowed to impersonate wht异常处理
原因分析:上述异常的字面意思是root不能冒充为wht,也就是说只有wht这个用户才可以调用hadoop,而root不可以。这个root是Oozie的启动用户(最开始将Oozie用root启动),而wht是在core-site中配置的用户组。
解决方法:以wht这个用户来启动Oozie,且修改hadoop的core-site.xml文件为如下样式:
故障场景二
报错信息:在Oozie界面上job一直处于RUNNING状态,而Action停留在了map-reduce阶段,且状态为START_MANUAL,查看oozie.log日志,可以看到一直在重试MR任务;达到重试次数之后,job状态变为SUSPENDED。
如下为oozie.log中的内容:
Caused by: java.net.ConnectException: Call Fromnode1/192.168.209.131 to node1:9001 failed on connection exception:java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
原因分析:从日志中可以看到Oozie去调用Hadoop的jobtrace,但是端口连接不通。在Hadoop的master节点上通过netstat命令查看确实没有监听9001端口,通过jps命令查看也没有jobtracker进程。通过查找资料了解到,在hadoop 2.0+版本后使用yarn替代了jobtracker,所以此处应该配置为yarn的资源管理器路径。
解决方法:将job.properties文件中jobtracker参数配置为yarn资源管理器的地址,配置为Hadoop的yarn-site.xml中yarn.resourcemanager.address参数的值。修改后还需要删除HDFS上的job.properties文件本重新将本地已修改过的上传。
故障场景三
报错信息:JA009:Permission denied: user=wht, access=EXECUTE,inode="/tmp":root:supergroup:drwx
原因分析:通过日志可以看出,是wht这个用户没有权限访问HDFS的/tmp目录导致的。
解决方法:修改HDFS上/tmp目录的权限。
hadoop fs -chown 777 /tmp
故障场景四
报错信息:在后台已经生成MR的output目录以及文件,即MR程序已经被成功调用执行,但是在Oozie界面上job的状态为SUSPENDED,MR action的状态为START_MANUAL。
原因分析:经过了解,Oozie需要调用Hadoop的JobHistoryServer来获取MR的结果日志,所以需要在Hadoop上手工启动JobHistoryServer。
解决方法:在Hadoop的master节点以root用户执行如下命令启动JobHistoryServer即可。mr-jobhistory-daemon.shstart historyserver
故障场景五
报错信息:无,当时未记录,后来找不到了。报错信息大致是说oozie没有权限调用java程序。
原因分析:作者将jdk安装在了/root目录下,由于oozie的安装用户wht没有该目录的访问权限,导致job执行失败。
解决方法:使用root用户修改/root目录的权限,不需要递归,只要将该目录的权限进行修改即可。
使用命令说明:
hadoop fs -put examples/* examples
hadoop fs -put share/* share
hadoop fs -rm <filepath>
hadoop fs -rmr <dirpath> 递归删除目录下的所有文件
oozie job -oozie http://node1:11000/oozie-config job.properties -run
oozie job -oozie http://node1:11000/oozie-info <jobid>
oozie job -oozie http://node1:11000/oozie-start <jobid>
参考:http://blog.csdn.net/zhu_xun/article/details/18604285
最后
以上就是欣慰香菇为你收集整理的Oozie自带MapReduce示例的运行的全部内容,希望文章能够帮你解决Oozie自带MapReduce示例的运行所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复