oozie常见问题
来源:互联网 发布:ppt图表数据不能修改 编辑:程序博客网 时间:2024/06/07 00:25
通过异常信息,可以猜测应该是在执行任务时,配置没有读到,所以使用了默认的0.0.0.0:8030地址。为了验证是否是这个原因造成的,我们可以修改oozie/conf目录下的log4j的日志级别为调试。
然后通过查看和跟踪hadoop的源代码,验证了猜想的正确性,由于oozie在提交job的时候,会读取oozie/conf/hadop-conf/core-site.xml中的配置,异常我们只要在这个配置文件中添加配置:
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
在使用上述版本的hadoop和oozie进行开发时,启动hadoop后,NN节点上的进程有NameNode,ResourceManager,DN节点的进程有DataNode,NodeManager,hadoop启动正常,在上面执行自己写的M/R程序也没问题,但是当使用oozie提交M/R任务时候,报了以下一个异常:
Caused by: com.google.protobuf.ServiceException: java.net.ConnectException: Call From slave4/10.95.3.65 to 0.0.0.0:10020 failed on connection exception: java.net.ConnectException: 拒绝连接; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused
at org.apache.hadoop.ipc.ProtobufRpcEngine$Invoker.invoke(ProtobufRpcEngine.java:212)
at com.sun.proxy.$Proxy28.registerApplicationMaster(Unknown Source)
at org.apache.hadoop.yarn.api.impl.pb.client.AMRMProtocolPBClientImpl.registerApplicationMaster(AMRMProtocolPBClientImpl.java:100)
... 12 more
10020这个端口是hadoop的 jobhistory的端口,对于oozie在提交job的时候为什么要去连接jobhistory不是很理解,在map-site.xml也配置了这个选项:
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
后来通过调试和跟踪hadoop源代码,发现oozie在提交任务后确实会去连接jobhistory,
开到debug模式后,在org.apache.hadoop.mapred.ClientCache,这个类的:
protected MRClientProtocol instantiateHistoryProxy()
throws IOException {
final String serviceAddr = conf.get(JHAdminConfig.MR_HISTORY_ADDRESS);
if (StringUtils.isEmpty(serviceAddr)) {
return null;
}
LOG.debug("Connecting to HistoryServer at: " + serviceAddr);
final YarnRPC rpc = YarnRPC.create(conf);
LOG.debug("Connected to HistoryServer at: " + serviceAddr);
UserGroupInformation currentUser = UserGroupInformation.getCurrentUser();
return currentUser.doAs(new PrivilegedAction<MRClientProtocol>() {
@Override
public MRClientProtocol run() {
return (MRClientProtocol) rpc.getProxy(HSClientProtocol.class,
NetUtils.createSocketAddr(serviceAddr), conf);
}
});
}
通过上面的代码可以知道确实连接了HistoryServer,因此我通过命令
mr-jobhistory-daemon.sh start historyserver 把这个服务启动,这样在NN上会启动JobHistoryServer进程,这个进程的监听端口就是10020,本以为这样这个问题就能解决了,没想到在oozie的log日志里还是报上面的错,唯一可能的原因是oozie没有读取到 jobhistory的配置, 因此我把这个配置:
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
又在oozie/conf/hadoop-conf/core-site.xml文件中又添加了一遍,上述错误就消失了,job也能正常跑起来了。
Error: E0509 : E0509: User [?] not authorized for Coord job [0000000-140806112151829-oozie-hado-C]
- oozie常见问题
- oozie使用中常见问题及解决方法
- Oozie
- Oozie
- OOZIE
- oozie
- oozie
- oozie
- oozie
- Oozie
- Oozie介绍
- Oozie简介
- oozie postgresql
- Oozie简介
- Oozie简介
- 什么是oozie
- 扩展Oozie
- oozie 常用命令
- Android内存分析和调优(下)
- 关于水王的题目——找到出现次数大于/等于数组长度一半的数
- Ant自动化打多渠道包,Android批量打包提速
- Listener 监听器&&Spring使用Log4jConfigListener配置Log4j日志
- Bmp学习
- oozie常见问题
- 在ACM中使用QuerySpec进行联合查询的示例
- Oracle 5种索引访问方式浅析
- php 读取xml的方法 (iconv解决中文乱码问题)
- 9.1.2 使用类型扩展追加成员
- oralce查看数据库表空间信息
- sql server转换时间函数 转成 xxx年xx月xx日格式
- android模拟器Genymotion 连接eclipse项目
- Linux创建、删除文件和文件夹命令