我是靠谱客的博主 欣慰香菇,最近开发中收集的这篇文章主要介绍Oozie自带MapReduce示例的运行,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

示例很简单,但是却有很多坑,如下先给出最终的配置示例以及运行结果,最后给出其中遇到过的问题以及解决方法。

安装用户

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示例的运行所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部