OOZIE系统成功在hadoop-2.7.3版本…

来源:互联网 发布:世界人工智能大会 北京 编辑:程序博客网 时间:2024/06/05 07:12
  先上图:
OOZIE系统成功在hadoop-2.7.3版本跑通其examples样例程序shell和mapreduce
  可以发现oozie和yarn与jobhistory里面的东西是一一对应的。
  这玩意整起来真是够呛,首先编译安装就会遇到一大堆问题。之前网上看到有推荐将maven转换为中国源可以加速依赖包的下载,结果实验发现这个中国的源居然是无法访问的……Orz只能老实从美国源龟速下载啦……Orz囧。之后又得在hadoop和oozie里面两头跑来回配置,简直要崩溃。被ubuntu系统该死的127.0.0.1的host整得成天出错,又被所需要的具体服务有哪些没说清楚所困扰。而网上的资料大多只对应其配置的系统本身,而非通用配置,不是name出错就是host出错,然后错误提示又模棱两可。

一、首先,安装过程:OOZIE系统遇到的各种问题解决
  
明确一点,安装需要:
得装mysql(oozie所有的作业流历史都存放在这个数据库里面。当然可以配置其他数据库,但mysql比较常用)
得装maven(这个尤其重要)

二、启动过程:
直接sbin/start-all.sh启动所有hadoop服务(虽然此命令已经过时)
记得启动jobhistory:Linux命令$ sbin/mr-jobhistory-daemon.sh starthistoryserver
【可能需要在hadoop文件系统中配置yarn和jobhistory需要使用的文件夹】
然后启动oozie。推荐用run启动,这样可以查看tomcat是否一直在运行(需要图形界面开另外一个终端)。

三、配置过程:

1、安装完后,得配置hadoop代理,使得oozie能够访问hadoop。(详细)

2、ActionExecutorException: JA017: Could not lookup launchedhadoop Job ID问题!(对就是这个,蛋碎不已)解决办法:OOZIE系统遇到的各种问题解决2 (页面最下面):
经过详细对比oozie-site.xml的配置,发现有些不同,修改了以下部分:
将原来的
   <property> 
      <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
      <value>*=/home/master2/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0/conf/hadoop/</value> 
  </property>
修改为
   <property> 
      <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
      <value>*=/home/master2/hadoop-2.7.3/etc/hadoop/</value> 
  </property>
并添加如下
   <property> 
      <name>oozie.service.HadoopAccessorService.action.configurations</name> 
      <value>*=/home/master2/hadoop-2.7.3/etc/hadoop/</value> 
  </property>
有效地解决了找不到hadoop jobid的问题


3、NoSuchFieldError: HADOOP_CLASSPATH问题出现,job的状态一直是PREP:
【解决】将oozie_server中的所有hadoop2.6.0版本 jar文件拷贝到一个隐藏目录里面(或者删掉)
【原因】2.6.0的包跟2.7.3的包冲突了。
【受到启发的链接】stackoverflow

4、调整完HADOOP_CLASSPATH问题后,运行oozie给的mapreduce样例workflow出错。此时已经能在yarn管理器中(ooziehost:8088)查看提交任务的状态了:
Error: Could not find or load main classorg.apache.hadoop.mapreduce.v2.app.MRAppMaster
【解决】配置mapred-site.xml,考虑添加路径
<property>
  <name>mapreduce.application.classpath</name>
  <value>
      /home/master2/hadoop-2.7.3/etc/hadoop,
      /home/master2/hadoop-2.7.3/share/hadoop/common/*,
      /home/master2/hadoop-2.7.3/share/hadoop/common/lib/*,
      /home/master2/hadoop-2.7.3/share/hadoop/hdfs/*,
      /home/master2/hadoop-2.7.3/share/hadoop/hdfs/lib/*,
      /home/master2/hadoop-2.7.3/share/hadoop/mapreduce/*,
      /home/master2/hadoop-2.7.3/share/hadoop/mapreduce/lib/*,
      /home/master2/hadoop-2.7.3/share/hadoop/yarn/*,
      /home/master2/hadoop-2.7.3/share/hadoop/yarn/lib/*
  </value>
</property>
【原因分析】可能hadoop自己知道自己的library在哪里,但是oozie不知道,所以才需要配置。毕竟之前单独实验mapreduce程序,是可以运行的。后期分离式配置的时候,可以考虑将hadoop中的jar单独考出来,存放到oozie所安装的主机里面,同时修改相应配置文件目录的指向,这样估计就OK了。
【参考】在windows远程提交任务给Hadoop集群(Hadoop 2.6)

5、ConnectException: Call From ubuntu/127.0.1.1 to0.0.0.0:10020 failed on connectionexception问题。按照步骤4修改完后,不会再提醒找不到MRAppMaster问题了,但是这里出现了链接问题。
【解决步骤1】终归是再也无法忍受127.0.1.1这样奇葩的地址了,修改/etc/hosts文件,把ubuntu指向实际的ip地址192.168.136.131后,问题迎刃而解。
【解决步骤2】如果没有迎刃而解,可以参考如下配置:
修改${HADOOP_DIR}/etc/Hadoop/mapred-site.xml,添加
<property>
  <name>mapreduce.jobhistory.address</name>
   <!--{namenode}替换为实际的主机名和端口-->
  <value>{namenode}:10020</value>
</property>
并启动jobhistory服务
Linux命令$ sbin/mr-jobhistory-daemon.shstart historyserver
修改${HADOOP_DIR}/etc/Hadoop/mapred-env.sh
增加HADOOP_JOB_HISTORYSERVER_HEAPSIZE大小到2000
【参考】Hadoop 任务运行中 java.net.ConnectException: to 0.0.0.0:10020failed



0 0
原创粉丝点击