当前位置: 首页 > news >正文

oozie 安装过程总结

最近公司要使用hue这个软件来作为hadoop图形化用户界面。hue由我一个同事搭建成功,我发现使用hue来创建工作流(workflow)时需要oozie的支持,以前只知道oozie是一个hadoop任务调度器,但是一直没使用过,今天正好趁这个机会尝试一下。

环境说明

  1. CentOS release 6.6 (Final)

  2. hadoop 2.6.0

  3. oozie 4.1.0

  4. jdk 1.7.0_40

  5. maven 3.2.3

我这里使用的版本都是较新的版本。安装oozie的先决条件是hadoop已经成功部署.

还需要说明的是,oozie 本身 apache 只提供源码,需要自己编译,编译需要的软件在官方有说明:


Unix box (tested on Mac OS X and Linux)
Java JDK 1.6+
Maven 3.0.1+
Hadoop 0.20.2+
Pig 0.7+

我这里在安装时并没有安装pig也能成功编译。

安装步骤

1. maven安装

oozie使用maven构建,所以第一步就是安装maven,并把maven的bin目录加入到PATH中,这一步比较简单,这里不再赘述。

2. 编译oozie

首先去oozie官网下载,可以执行

wget http://mirrors.cnnic.cn/apache/oozie/4.1.0/oozie-4.1.0.tar.gz

解压该文件,这里需要修改下pom.xml文件中的几个property,首先是java版本,我这里用的1.7,它默认的是1.6,这里不能用1.8,否则会编译失败。

<targetJavaVersion>1.7</targetJavaVersion>

另一个需要改的property是hadoop.version,我这里用的是2.6.0,但是oozie本身只支持到2.3.0(大家可以去这里看看,截止到2015-5-7,只支持到hadoop2.3.0),所以这里改为

<hadoop.version>2.3.0</hadoop.version>

还有其他的像hive、hbase的版本,大家可以根据实际情况修改。

好,上面的都改完后,就可以编译了:

bin/mkdistro.sh -DskipTests -Dhadoop.version=2.3.0

编译使用oozie提供的mkdistro.sh脚本,需要注意的是,这里我们又一次指定了hadoop版本,我第一次没有指定,用的是貌似还是1.1.0,所以这里保险,大家在指定次吧。

编译时会去下载各种依赖jar包,这是就要看你的网速如何了。当你看到类似下面的信息时,恭喜你,编译成功了。

[INFO] Reactor Summary:
[INFO]
[INFO] Apache Oozie Main .................................. SUCCESS [  1.440 s]
[INFO] Apache Oozie Client ................................ SUCCESS [ 22.217 s]
[INFO] Apache Oozie Hadoop 1.1.1.oozie-4.1.0 .............. SUCCESS [  0.836 s]
[INFO] Apache Oozie Hadoop Distcp 1.1.1.oozie-4.1.0 ....... SUCCESS [  0.065 s]
[INFO] Apache Oozie Hadoop 1.1.1.oozie-4.1.0 Test ......... SUCCESS [  0.182 s]
[INFO] Apache Oozie Hadoop Utils 1.1.1.oozie-4.1.0 ........ SUCCESS [  0.784 s]
[INFO] Apache Oozie Hadoop 2.3.0.oozie-4.1.0 .............. SUCCESS [  4.803 s]
[INFO] Apache Oozie Hadoop 2.3.0.oozie-4.1.0 Test ......... SUCCESS [  0.254 s]
[INFO] Apache Oozie Hadoop Distcp 2.3.0.oozie-4.1.0 ....... SUCCESS [  0.066 s]
[INFO] Apache Oozie Hadoop Utils 2.3.0.oozie-4.1.0 ........ SUCCESS [  1.033 s]
[INFO] Apache Oozie Hadoop 0.23.5.oozie-4.1.0 ............. SUCCESS [  3.231 s]
[INFO] Apache Oozie Hadoop 0.23.5.oozie-4.1.0 Test ........ SUCCESS [  0.336 s]
[INFO] Apache Oozie Hadoop Distcp 0.23.5.oozie-4.1.0 ...... SUCCESS [  0.062 s]
[INFO] Apache Oozie Hadoop Utils 0.23.5.oozie-4.1.0 ....... SUCCESS [  0.878 s]
[INFO] Apache Oozie Hadoop Libs ........................... SUCCESS [  3.780 s]
[INFO] Apache Oozie Hbase 0.94.2.oozie-4.1.0 .............. SUCCESS [  0.338 s]
[INFO] Apache Oozie Hbase Libs ............................ SUCCESS [  0.692 s]
[INFO] Apache Oozie HCatalog 0.13.1.oozie-4.1.0 ........... SUCCESS [  0.919 s]
[INFO] Apache Oozie HCatalog Libs ......................... SUCCESS [  1.735 s]
[INFO] Apache Oozie Share Lib Oozie ....................... SUCCESS [ 13.552 s]
[INFO] Apache Oozie Share Lib HCatalog .................... SUCCESS [ 40.232 s]
[INFO] Apache Oozie Core .................................. SUCCESS [05:03 min]
[INFO] Apache Oozie Docs .................................. SUCCESS [01:07 min]
[INFO] Apache Oozie Share Lib Pig ......................... SUCCESS [01:38 min]
[INFO] Apache Oozie Share Lib Hive ........................ SUCCESS [ 12.927 s]
[INFO] Apache Oozie Share Lib Sqoop ....................... SUCCESS [  5.655 s]
[INFO] Apache Oozie Share Lib Streaming ................... SUCCESS [  4.577 s]
[INFO] Apache Oozie Share Lib Distcp ...................... SUCCESS [  1.900 s]
[INFO] Apache Oozie WebApp ................................ SUCCESS [02:26 min]
[INFO] Apache Oozie Examples .............................. SUCCESS [  3.762 s]
[INFO] Apache Oozie Share Lib ............................. SUCCESS [ 11.415 s]
[INFO] Apache Oozie Tools ................................. SUCCESS [ 10.718 s]
[INFO] Apache Oozie MiniOozie ............................. SUCCESS [  9.647 s]
[INFO] Apache Oozie Distro ................................ SUCCESS [ 27.966 s]
[INFO] Apache Oozie ZooKeeper Security Tests .............. SUCCESS [  7.040 s]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 13:32 min
[INFO] Finished at: 2015-05-07T14:51:39+08:00
[INFO] Final Memory: 139M/1329M
[INFO] ------------------------------------------------------------------------

Oozie distro created, DATE[2015.05.07-06:38:04GMT] VC-REV[unavailable], available at [/data/users/xigua/oozie-4.1.0/distro
/target]

编译后的文件在distro/target文件夹内,我这里文件名为oozie-4.1.0-distro.tar.gz

3. 安装oozie server

经过上面的编译,我们得到了二进制版的oozie,下面就可以部署server了,由此可见oozie使用的BS模式。
解压oozie-4.1.0-distro.tar.gz这个编译后的文件,进入改目录,创建个文件夹

mkdir libext

oozie server 需要用到一个js库,但是该js库官方给的链接已经失效了,我废了好大劲在网上找了个,传到了csdn上,大家下载后把ext-2.2.zip这个文件放的libext文件夹里。
然后,把hadoop的一些jar把也放到这个libext文件夹内,大家可参考下面这个命令

cp ${HADOOP_HOME}/share/hadoop/*/*.jar libext/
cp ${HADOOP_HOME}/share/hadoop/*/lib/*.jar libext/

这里有个大坑,oozie server默认使用tomcat 6.0.41,而hadoop也有内置的server,如果按照上面两个命令把hadoop依赖的jar包都拷贝过去,有可能出现冲突,这两个server使用的servlet、jsp版本很可能不一样。

这里需要把这几个jar包删除,不要放到libext中

jasper-compiler-5.5.23.jar
jasper-runtime-5.5.23.jar
jsp-api-2.1.jar

如果你用的hadoop版本不是2.6.0,那么这里的版本有可能不一样,但务必确保,把这三个jar删除。我当时找出这三个jar包,废了2个多小时,心情很是受打击。

oozie server还需要依赖个数据库,我这里用的是常用的mysql,所以需要把mysql的驱动jar包也放的libext中。

然后修改conf/oozie-site.xml这个配置文件,我这里只列举修改的部分

<property>
    <name>oozie.service.JPAService.create.db.schema</name>
    <value>true</value>
</property>
<property>
    <name>oozie.service.JPAService.jdbc.driver</name>
    <value>com.mysql.jdbc.Driver</value>
</property>
<property>
    <name>oozie.service.JPAService.jdbc.url</name>
    <value>jdbc:mysql://localhost:3306/oozie?createDatabaseIfNotExist=true</value>
</property>

<property>
    <name>oozie.service.JPAService.jdbc.username</name>
    <value>oozie</value>
</property>

<property>
    <name>oozie.service.JPAService.jdbc.password</name>
    <value>oozie</value>
</property>
<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
    <value>*=/opt/hadoop/etc/hadoop</value>
</property> 
<!-- 下面两个配置是hue用到的-->
<property>
    <name>oozie.service.ProxyUserService.proxyuser.hue.hosts</name>
    <value>*</value>
</property>

<property>
    <name>oozie.service.ProxyUserService.proxyuser.hue.groups</name>
    <value>*</value>
</property>

确保mysql中oozie用户有创建数据库的权限,如果不放心,我们可以先创建出来:

create database oozie;
grant all privileges on oozie.* to oozie@'%' identified by 'oozie';
FLUSH PRIVILEGES;

上面的配置中,指定了hadoop配置文件位置:*=/opt/hadoop/etc/hadoop,这里的*=不能少,你根据实际情况修改你的hadoop路径即可。

好,上面的步骤完成后,就可以生产server的war包了:

bin/oozie-setup.sh prepare-war

你会看到下面一系列输出:

  setting CATALINA_OPTS="$CATALINA_OPTS -Xmx1024m"

INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/activation-1.1.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/aopalliance-1.0.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/apacheds-i18n-2.0.0-M15.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/apacheds-kerberos-codec-2.0.0-M15.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/api-asn1-api-1.0.0-M20.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/api-util-1.0.0-M20.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/asm-3.2.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/avro-1.7.4.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/aws-java-sdk-1.7.4.jar
...
...
jar 包太多,我这里就忽略了
...
...
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/xz-1.0.jar
INFO: Adding extension: /opt/.versions/oozie-4.1.0/libext/zookeeper-3.4.6.jar

New Oozie WAR file with added 'ExtJS library, JARs' at /opt/.version/oozie-4.1.0/oozie-server/webapps/oozie.war


INFO: Oozie is ready to be started

好,看到这里说明server已经生成了。

在启动之前,我们还需要把执行下面的命令:

bin/oozie-setup.sh  sharelib  create -fs hdfs://<namenode-hostname>:8020

这把hadoop的一些jar包传到hdfs上,后面会用到。

到此为止,运行server的准备工作就都做好了,在开启server之前,我们还需要对hadoop的core-site.xml做如下修改:

<property>
   <name>hadoop.proxyuser.oozie.hosts</name>
   <value>*</value>
</property>
<property>
   <name>hadoop.proxyuser.oozie.groups</name>
   <value>*</value>
</property>

上面这两个配置是为oozie添加伪装功能(impersonation),关于伪装功能,我这里不在细说,大家可以看本篇文章最后参考文章中的第三篇。
添加伪装功能后,不需要重启hdfs与yarn,执行下面的命令即可:

hdfs dfsadmin -refreshSuperUserGroupsConfiguration
yarn rmadmin -refreshSuperUserGroupsConfiguration

最后,激动人心的时候就要到了,根据上面伪装功能的配置,我用oozie用户开启server:

bin/oozied.sh start

如果,你上面的步骤都正确,那么你应该能看到下面的页面(默认端口是:11000):
oozie server

参考文章:

  1. Oozie安装与部署

  2. Hadoop Oozie学习笔记(一) 自定义安装和启动

  3. Hadoop 2.0中用户安全伪装/模仿机制实现原理

相关文章:

  • Ossim中查看网络流量历史数据
  • linux下安装FFmpeg
  • XML处理类
  • Prototype属性
  • Modeless对话框如何响应快捷键
  • C# UDP(Socket)异步传输文件
  • leetcode 155 Min Stack
  • spring冲刺第二天
  • [转]太阳致敬式瑜伽
  • Linux环境Weblogic10g服务部署
  • ExecutorService生命周期(转)
  • Solr使用入门指南
  • 关于统计信息过期的性能落差
  • 线段树(单点更新)/树状数组 HDOJ 1166 敌兵布阵
  • git fetch和git pull之间的区别--转载
  • Angular数据绑定机制
  • ECMAScript6(0):ES6简明参考手册
  • JS题目及答案整理
  • Python语法速览与机器学习开发环境搭建
  • Theano - 导数
  • vue--为什么data属性必须是一个函数
  • 笨办法学C 练习34:动态数组
  • 检测对象或数组
  • 入门级的git使用指北
  • 什么软件可以剪辑音乐?
  • Java总结 - String - 这篇请使劲喷我
  • 如何用纯 CSS 创作一个货车 loader
  • ​马来语翻译中文去哪比较好?
  • ​水经微图Web1.5.0版即将上线
  • #每日一题合集#牛客JZ23-JZ33
  • (51单片机)第五章-A/D和D/A工作原理-A/D
  • (层次遍历)104. 二叉树的最大深度
  • (附源码)springboot社区居家养老互助服务管理平台 毕业设计 062027
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (力扣)循环队列的实现与详解(C语言)
  • (循环依赖问题)学习spring的第九天
  • .NET CF命令行调试器MDbg入门(一)
  • .NET/C# 编译期间能确定的相同字符串,在运行期间是相同的实例
  • .NET/C# 反射的的性能数据,以及高性能开发建议(反射获取 Attribute 和反射调用方法)
  • .net开源工作流引擎ccflow表单数据返回值Pop分组模式和表格模式对比
  • /usr/bin/perl:bad interpreter:No such file or directory 的解决办法
  • [100天算法】-x 的平方根(day 61)
  • [Android]How to use FFmpeg to decode Android f...
  • [HDU3710]Battle over Cities
  • [LeetCode]-283. 移动零-1089. 复写零
  • [luoguP3159] [CQOI2012]交换棋子(最小费用最大流)
  • [NHibernate]条件查询Criteria Query
  • [NKCTF 2024]web解析
  • [SDOI2005]区间
  • [Vue3] vue-router路由守卫进阶
  • [导入]对于adapter模式的类示配模式的java和c#的语法比较
  • [计算机网络]--五种IO模型和select
  • [继续八卦]微软CEO史蒂夫·鲍尔默学跳猴子舞
  • [坑]解决Spring利用注解@Value获取properties属性为null或@Autowired 注解为null