Oozie自带MapReduce示例的运行
来源:互联网 发布:超图软件股票怎么样 编辑:程序博客网 时间:2024/05/21 19:14
示例很简单,但是却有很多坑,如下先给出最终的配置示例以及运行结果,最后给出其中遇到过的问题以及解决方法。
安装用户
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自带示例的运行
- oozie自带示例的运行
- 运行oozie自带mapreduce例子
- 运行Spring-security自带的示例
- Eclipse下运行hadoop自带的mapreduce程序--wordcount
- 编译运行NDK自带的代码示例
- 编译运行AspectJ自带的tracing示例
- MapReduce自带wordcount的实现
- oozie中运行mapreduce node-action时的常见异常解决方法
- hadoop 自带示例wordcount 详细运行步骤
- hadoop基础----hadoop实战(三)-----hadoop运行MapReduce---对单词进行统计--经典的自带例子wordcount
- oozie fork多mapreduce任务并行处理示例
- Gtk/Glade自带的示例代码
- SAP系统自带的示例程序
- VS2008中自带的示例
- SAP系统自带的示例程序
- Visual Studio 2008自带的示例
- 【USACO题库】1.1.4 Broken Necklace破碎的项链
- 1. 河内之塔
- 深度学习资源
- Python爬虫浅述
- template新特性:可变参数模板,(传入参数个数未知)
- Oozie自带MapReduce示例的运行
- java-15-基本数据类型对象包装类
- 【Shiro权限管理】11.Shiro多 Realm 验证
- hbase scan filter使用样例
- 894AQAQ
- leetcode-455. Assign Cookies
- nodejs操作mysql实现增删改查数据操作
- 20171120主要内容
- IOS 应用出现上下黑边问题