运行oozie自带mapreduce例子

上传examples文件夹到hdfs


当然,首先得找到oozei自带的examples文件夹,我这里的目录在:/usr/hdp/2.6.0.3-8/oozie/doc/,如下图:

运行oozie自带mapreduce例子_第1张图片

这里要说的就是,examples文件夹是由oozie-examples.tar.gz解压出来的(安装好oozie就自动解压了)。

上传命令:hadoop fs -put examples examples

第一个examples是上图中的examples文件,而第二个examples是上传到hdfs文件中对应的用户下面;这里需要说明的是hdfs用户是根据当前kerberos缓存用户来确定的(当然前提是启用了kerberos服务),我这里缓存的是oozie kerberos用户,也就是最终文件会上传到hdfs oozie用户下,如图:

运行oozie自带mapreduce例子_第2张图片

mapreduce例子相关配置


这里我们看看oozie对应的mapreduce例子的相关配置,目录在examples/apps /map-reduce下,下图是所有文件:

运行oozie自带mapreduce例子_第3张图片

首先,查看job.properties

运行oozie自带mapreduce例子_第4张图片

主要修改nameNode和jobTracker既可,当然job-with-config-class.properties里对应的配置也要修改。


再查看workflow.xml

运行oozie自带mapreduce例子_第5张图片

运行作业


#oozie job -oozie http://slave1:11000/oozie-config examples/apps/map-reduce/job.properties -run

examples/apps/map-reduce/job.properties是本地文件系统中的配置,所以把job.properties中相关url也要统一修改。

查看作业状态:

#ooziejob -oozie http://slave1:11000/oozie -info JOB_ID

如下图:

运行oozie自带mapreduce例子_第6张图片

也可以用hue查看:

运行oozie自带mapreduce例子_第7张图片

结果运行了一段时间后,发现还没有停止(一般这种任务3分钟左右就完成了),我打开yarn资源管理界面:

运行oozie自带mapreduce例子_第8张图片

发现提交的oozie作业已经完成了,去查看output输出目录:

运行oozie自带mapreduce例子_第9张图片

也已经有了结果,但是作业就是没有完成,最后还报错了:

SERVER[slave1] USER[oozie] GROUP[-] TOKEN[]APP[map-reduce-wf] JOB[0000017-170906113838106-oozie-oozi-W]ACTION[0000017-170906113838106-oozie-oozi-W@mr-node] Exception while executingcheck(). Error Code [JA017], Message[JA017: Could notlookup launched hadoop Job ID [job_1504669004863_0026] which was associatedwith  action[0000017-170906113838106-oozie-oozi-W@mr-node]. Failing this action!]

org.apache.oozie.action.ActionExecutorException:JA017: Could not lookup launched hadoop Job ID [job_1504669004863_0026] whichwas associated with  action[0000017-170906113838106-oozie-oozi-W@mr-node]. Failing this action!


报找不到对应的job_id,因为提交的是mapreduce任务,而且yarn那边是成功执行了的,所以猜想是不是mapreduce那边有错误,所以查看mapreduce日志,发现报错:

Error while trying to scan the directoryhdfs://master:8020/mr-history/tmp/oozie

org.apache.hadoop.security.AccessControlException: Permission denied: user=mapred, access=READ_EXECUTE,inode="/mr-history/tmp/oozie":oozie:hadoop:drwxrwx---

  atorg.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319)

  atorg.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:219)

  atorg.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkDefaultEnforcer(RangerHdfsAuthorizer.java:380)

  atorg.apache.ranger.authorization.hadoop.RangerHdfsAuthorizer$RangerAccessControlEnforcer.checkPermission(RangerHdfsAuthorizer.java:288)


这里看到的是hdfs用户mapred没有权限访问/mr-history/tmp/oozie目录

所以要改变mapred用户的访问权限,这里我通过ranger对mapred用户进行hdfs的权限管理,让mapred可以访问所有的目录,如下图:

运行oozie自带mapreduce例子_第10张图片

当然也可以通过hdfs命令来进行权限管理。

然后再运行任务,可以看到作业运行成功,如下:


到这里,运行oozie自带mapreduce作业也就完成了

你可能感兴趣的:(oozie)