编译:

使用的环境是:Hadoop2.6.0、Spark1.4.0、Hive0.13.1、Sqoop1.4.4

编译Oozie的命令:./mkdistro.sh -Phadoop-2 -Dhadoop.auth.version=2.6.0 -Ddistcp.version=2.6.0 -Dsqoop.version=1.4.4 -Dhive.version=0.13.1 -Dpig.version=0.15.0

(突然发现,编译时没有指定Spark的版本)

经过艰难漫长的编译过程,最后得到了oozie-4.2.0-distro.tar.gz。

Oozie4.2 Server安装

所需环境:

Unix (tested in Linux and Mac OS X)

Java 1.6+

Hadoop(tested with 1.0.0 & 0.23.1)

ExtJS library (可选, 用于Oozie webconsole,本文档中使用)

MySQL(可选,本文档中使用)

开始安装:

将编译好的oozie-4.2.0-distro.tar.gz解压到/opt下

1、修改环境变量

vim /etc/profile,加入OOZIE_HOME这个环境变量,并在PATH中加入$OOZIE_HOME/bin,保存退出,然后执行source  /etc/profile

2、修改/opt/oozie-4.2.0/conf下的 oozie-site.xml文件,在oozie-site.xml中增加以下配置信息:

<!--mysql作为元数据存放的数据库-->
<property>
<name>oozie.service.JPAService.jdbc.driver</name>
<value>com.mysql.jdbc.Driver</value>
<description>
JDBC driver class.
</description>
</property>
<property>
<name>oozie.service.JPAService.jdbc.url</name>
<value>jdbc:mysql://192.168.127.11:3306/oozie</value>
<description>
JDBC URL.
</description>
</property>
<property>
<name>oozie.service.JPAService.jdbc.username</name>
<value>root</value>
<description>
DB user name.
</description>
</property>
<property>
<name>oozie.service.JPAService.jdbc.password</name>
<value>123456</value>
<description>
DB user password.
IMPORTANT: if password is emtpy leave a 1 space string, the service trims the value,
if empty Configuration assumes it is NULL.
</description>
</property>
<!--设置Hadoop的配置文件的路径-->
<property>
<name>oozie.service.HadoopAccessorService.hadoop.configurations</name>
<value>*=/opt/hadoop-2.6.0/etc/hadoop</value>
<description>
Comma separated AUTHORITY=HADOOP_CONF_DIR, where AUTHORITY is the HOST:PORT of
the Hadoop service (JobTracker, YARN, HDFS). The wildcard '*' configuration is
used when there is no exact match for an authority. The HADOOP_CONF_DIR contains
the relevant Hadoop *-site.xml files. If the path is relative is looked within
the Oozie configuration directory; though the path can be absolute (i.e. to point
to Hadoop client conf/ directories in the local filesystem.
</description>
</property>
<!--设置Spark的配置文件的路径-->
<property>
<name>oozie.service.SparkConfigurationService.spark.configurations</name>
<value>*=/opt/spark-1.4.0-bin-hadoop2.6-hive/conf</value>
<description>
Comma separated AUTHORITY=SPARK_CONF_DIR, where AUTHORITY is the HOST:PORT of
the ResourceManager of a YARN cluster. The wildcard '*' configuration is
used when there is no exact match for an authority. The SPARK_CONF_DIR contains
the relevant spark-defaults.conf properties file. If the path is relative is looked within
the Oozie configuration directory; though the path can be absolute. This is only used
when the Spark master is set to either "yarn-client" or "yarn-cluster".
</description>
</property>
<!--
设置系统库存放在hdfs中,注意只有在job.properties中将设置oozie.use.system.libpath=true才会引用系统库
。注意,下面ns1是namenode的逻辑名称,根据自己集群的情况进行更改即可
-->
<property>
<name>oozie.service.WorkflowAppService.system.libpath</name>
<value>hdfs://ns1/user/${user.name}/share/lib</value>
<description>
System library path to use for workflow applications.
This path is added to workflow application if their job properties sets
the property 'oozie.use.system.libpath' to true.
</description>
</property>

3、在Hadoop配置文件的core-site.xml中增加如下配置信息。注意:修改完后,需要重启hadoop。

    <!--
<property>
<name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
<value>[OOZIE_SERVER_HOSTNAME]</value>
</property>
<property>
<name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
<value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
</property>
其中[OOZIE_SERVER_USER]是安装使用oozie server的用户
[OOZIE_SERVER_HOSTNAME]是安装oozie server的主机名
[USER_GROUPS_THAT_ALLOW_IMPERSONATION]是用户的所属组
以上汉字纯属个人见解,如有问题欢迎指正
-->
<!-- OOZIE -->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>centos01</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>root</value>
</property>

注意:在hadoop.proxyuser.root.groups的值改成*,也是可以运行的。

4、在/opt/oozie-4.2.0目录下创建一个libext目录,并在/opt/hadoop-2.6.0目录下使用以下命令将Hadoop下的所有jar包复制到libext目录中:find -name *.jar |xargs  -t -i cp {} /opt/oozie-4.2.0/libext。注意:需要将libext中的hsqldb-2.0.0.jar删掉,否则会引起jar包冲突。

5、将下载好的ext-2.2.zip以及mysql驱动包(例如:mysql-connector-java-5.1.35.jar)复制到libext目录下。

6、执行下面的命令,将ext2.2.0.zip、hadoop的相关jar包、以及mysql-connector-java-<版本>.jar、htrace-core-<版本>.jar、avro-<版本>.jar 打进新war包里:

bin/addtowar.sh -inputwar oozie.war  -outputwar oozie-server/webapps/oozie.war -hadoop 2.6.0 /opt/hadoop-2.6.0/ -extjs libext/ext-2.2.zip -jars /opt/oozie-4.2.0/libext/mysql-connector-java-5.1.35.jar:/opt/oozie-4.2.0/libext/htrace-core-3.0.4.jar:/opt/oozie-4.2.0/libext/avro-1.7.4.jar

注意:

1) htrace-core和avro这两个jar包不加的话,后面提交job时会出错!并且执行了上面这句后,就不能再执行bin/oozie-setup.sh prepare-war 了,否则替换掉oozie-server/webapps/中已经生成的oozie.war。

2)在ubuntu上执行上面命令时遇到zip:command not found;Failed:Creating new Oozie WAR的问题。这是因为没有安装Zip导致的。装上即可。

7、如果还没有安装mysql,那么需要安装一个mysql。安装好后吗,在mysql数据库中创建名为oozie的数据库(注意:oozie-site.xml中有个配置项oozie.service.JPAService.create.db.schema,默认值为false,表示非自动创建数据库,所以我们需要自己创建oozie数据库),并进行访问授权,然后在/opt/oozie-4.2.0/下执行:

bin/ooziedb.sh create -sqlfile oozie.sql -run

查看oozie数据库,如果产生了以下的表,就说明该步骤OK

8、安装oozie-sharelib。

1) 在oozie-4.2.0目录下有一个 oozie-sharelib-4.2.0.tar.gz。使用tar -zxvf oozie-sharelib-4.2.0.tar.gz将它解压。解压出后是一个share目录

2)进入到share/lib/sqoop中。将sqoop-1.4.6-hadoop100.jar去掉(我这边改成sqoop-1.4.6-hadoop100.jar.bak)

注意:之所以要将sqoop-1.4.6-hadoop100.jar去掉,是因为我发现,在不去掉的情况下,运行Sqoop的例子会报错。这个错误可能是sqoop-1.4.6-hadoop100和sqoop-1.4.4-hadoop200.jar中的类冲突导致的。去掉之后,就可以成功运行了。

3)将mysql-connector-java-5.1.35.jar复制到/opt/oozie-4.2.0/share/lib/sqoop目录中。如果没有这个jar,将不能从mysql将数据导入或导出。

3)将这个share上传到hdfs上:

hdfs dfs -put  /opt/oozie-4.2.0/share  /user/root

注意,与oozie-site.xml中的oozie.service.WorkflowAppService.system.libpath的值保持一致,所以必须放到/user/root这个目录下。

9、使用以下命令启动oozie服务:

bin/oozie-start.sh

这时在/opt/oozie-4.2.0/oozie-server/webapps目录下多了oozie这个目录。如果缺少jar包或者jar包冲突了可以对

/opt/oozie-4.2.0/oozie-server/webapps/oozie/WEB-INF/lib中的进行添加或删除jar包


10、使用以下命令验证服务是否启动成功,

oozie admin -oozie http://localhost:11000/oozie -status

如果是System model:Normal,表明启动成功,否则失败。
11、查看是否可以通过浏览器访问web页面:

http://192.168.127.11:11000/oozie/

12、在运行job之前,最好开启Hadoop的jobhistory。它可以帮助你查看job调度时产生的日志。启动命令:

mr-jobhistory-daemon.sh start historyserver

使用jps命令查看是否启动成功,如果出现了 JobHistoryServer进程,表示启动成功。

(如果在第3步中hadoop还没有重启,需要重启下,否则后面的job可能会运行失败)

Oozie4.2 Client安装

Oozie server 安装中已经包括了Oozie client。如果想要在其他机子上也使用Oozie,那么只要在那些机子上安装Oozei的client即可。

所需环境:

Unix (tested in Linux and Mac OS X)

Java 1.6+

开始安装

1、Oozie4.2中有一个oozie-client-4.2.0.tar.gz,将它复制到需要安装oozie client的机子上

2、解压:

tar zxvf /data/insallers/oozie-client-4.2.0.tar.gz -C /opt

这时在/opt下有一个 oozie-client-4.2.0

3、添加环境变量:

注意:上面还可以添加一个环境变量,export OOZIE_URL=http://centos01:11000/oozie这样在后面的oozie job这个命令中就不需要加 -oozie了

4、然后可以直接使用oozie来操作了,例如:

可以使用oozie job -oozie http://centos01:11000/oozie -config /data/installers/examples/apps/sqoop/job.properties -run 这样的命令来操作了。

Oozie Examples

1、在/opt/oozie-4.2.0下有一个oozie-examples.tar.gz 。将它进行解压,解压之后生成一个examples目录。在该目录的apps中有一些简单的例子:

2、在运行这些例子之前,需要对这些例子进行一些修改,例如我们运行shell这个例子。

先来查看一下job.properties的内容:

这些例子中JobTracker 都是localhost:8021,NameNode 都是hdfs://localhost:8020 。这是hadoop1的端口。我们需要根据自己集群的情况,对它做相应的修改。我现在的hadoop集群是2.6.0版本的。并且NameNode和ResourceManager都是HA的。所以我的配置是:

注意:这里ns1 是hadoop中hdfs-site.xml中的dfs.nameservices。rm1,rm2是yarn-site.xml中的yarn.resourcemanager.ha.rm-ids(如下2图)。如果ResourceManager不采用HA,采用的是单点,那么将8021这个端口改成8032端口(yarn.resourcemanager.address)。例如:ResourceManager所在的主机名centos03,那么改成jobTracker=centos03:8032即可。

3、将examples这个文件上传到hdfs中的/user/${user.name} 中,我采用的是root这个用户,所以是/user/root

4、执行以下命令运行
oozie  job  -oozie  http://centos01:11000/oozie  -config  /data/installers/examples/apps/shell/job.properties  -run
注意: -oozie 后面跟的是oozie server的地址,-config后面跟的是执行的脚本,除了在hdfs上要有一份examples,在本地也需要一份。这个命令中的/data/installers/examples/apps/shell/job.properties 是本地路径的job.properties,不是hdfs上的。
5、根据上面的job Id ,可以使用下列命令进行查看
 oozie job -oozie http://centos01:11000/oozie -info 0000001-150804235314037-oozie-root-W
6、根据上面的job Id ,可以使用下列命令进行日志

oozie job -oozie http://centos01:11000/oozie -log 0000001-150804235314037-oozie-root-W

7、可以访问http://centos01:11000/oozie 查看提交的job的情况:

参考网站:

https://hadooptutorial.info/oozie-share-lib-does-not-exist-error/#javaioFileNotFoundException_File_userusersharelib_does_not_exist
http://blog.csdn.net/teddeyang/article/details/16339533
http://oozie.apache.org/docs/4.2.0/AG_Install.html
http://www.cloudera.com/content/cloudera/en/documentation/cdh4/v4-2-0/CDH4-Installation-Guide/cdh4ig_topic_17_6.html

http://stackoverflow.com/questions/11555344/sqoop-export-fail-through-oozie

以下主要是我在安装使用oozie时遇到的一些问题,如果按照上面的步骤安装使用,可能就不会出现下面的问题了,可以忽略不看!

1、关于addtower命令:

2、遇到过的问题:

1)编译时出现,解决方法:手动下载maven-clean-plugin插件的jar

2)编译时出现,解决方法:mvn dependency::tree

3)编译时出现,解决方法:手动下载依赖

4)安装时出现。解决方法:移除libext中的hsqldb-2.0.0.jar

5) 安装时出现,使用“bin/addtowar.sh -inputwar oozie.war  -outputwar oozie-server/webapps/oozie.war -hadoop 2.6.0 /opt/hadoop-2.6.0/ -extjs libext/ext-2.2.zip”命令替代“bin/oozie-setup.sh prepare-war”这个命令来解决。原因可能是后面的命令会将libext中杂七杂八的jar包放入到oozie-server/webapps/oozie/WEB-INF/lib/ 中,引起jar包冲突等问题。

6)有时出现无法启动或关闭oozie服务时,尝试将/opt/oozie-4.2.0/oozie-server/temp下的除了safeToDelete.tmp文件的其他文件删掉,即可(即只保留safeToDelete.tmp)。

7) oozie服务启动失败:


在/opt/oozie-4.2.0/logs中查看catalina.out这个日志,根据提示信息,应该是没有mysql驱动的原因。

将mysql驱动包复制到oozie-server/webapps/oozie/WEB-INF/lib/下:

cp libext/mysql-connector-java-5.1.35.jar  oozie-server/webapps/oozie/WEB-INF/lib/ 
重新执行第9和第10步,现在oozie服务已经成功启动了:

8)、提交job时出现“Error:HTTP error code:500:Internal Server Error”的问题

发现在localhost.2015-08-03.log这个日志文件中记录了这个错误:

解决方法:往oozie-server/webapps/oozie/WEB-INF/lib/ 中加入htrace-core-3.0.4.jar

9)、job执行完成后出现。解决方法:往oozie-server/webapps/oozie/WEB-INF/lib/ 中加入avro-1.7.4.jar

10)、执行sqoop相关jab后出现。解决方法:去掉share/lib/sqoop中的sqoop-1.4.6-hadoop100.jar

Oozie4.2 安装部署、以及example测试的更多相关文章

  1. Flume NG安装部署及数据采集测试

    转载请注明出处:http://www.cnblogs.com/xiaodf/ Flume作为日志收集工具,监控一个文件目录或者一个文件,当有新数据加入时,采集新数据发送给消息队列等. 1 安装部署Fl ...

  2. solr安装部署、solr测试创建core、用solrj 访问solr(索引和搜索)

    一.安装solr4.8: 1.把apache-solr-4.8.1\example\webapps下的solr.war文件拷贝到Tomcat下的Tomcat7.0\webapps目录下,tomcat启 ...

  3. Hive安装部署及简单测试 网页《一》

    1.首先关闭机器上之前配置的分布式Hadoop 命令: (在hadoop的安装目录中)  sbin/stop-dfs.sh              关闭: yarn   命令:  sbin/stop ...

  4. Redis安装部署(一主二从三哨兵)

    需求:根据当前客户的生产环境,模拟安装部署Redis的测试环境,方便后续的功能测试. 1.准备工作 2.安装编译Redis 3.Redis运行环境配置 4.Redis启动和关闭 1.准备工作 Redi ...

  5. Hive_初步见解,安装部署与测试

    一.hive是什么东东 1. 个人理解 hive就是一个基于hdfs运行于MapReduce上的一个java项目, 这个项目封装了jdbc,根据hdfs编写了处理数据库的DDL/DML,自带的 二进制 ...

  6. qemu-kvm和openvswitch安装部署-qemu-kvm和openvswitch原型环境部署和基本测试 (1)

    qemu-kvm和openvswitch安装部署 本文包含两个部分: qemu-kvm的安装部署 openvswitch的安装部署 参考文档: kvm官网:http://www.linux-kvm.o ...

  7. redis cluster安装部署(测试环境)

    redis 应用于web前端,做缓存和数据存取的速度是挺可观的,最近看了一些资料,手痒了,就弄了一个测试环境,两台方案,试用一下. ##Redis 集群部署## 一,方案调研: 参考博客: http: ...

  8. 测试环境docker-swarm安装部署

    测试环境swarm安装部署 部署前增加监听docker2375端口 centos 增加tcp监听端口 修改/lib/systemd/system/docker.service sed -i ‘s/Ex ...

  9. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

随机推荐

  1. eclipse/STS 提升注解提示速度

    window -- preference -- 输入content -- java -- editor -- content Assist --auto delay 选项 改为100或者更低  提示速 ...

  2. 【Zookeeper】源码分析之持久化(一)之FileTxnLog

    一.前言 前一篇已经分析了序列化,这篇接着分析Zookeeper的持久化过程源码,持久化对于数据的存储至关重要,下面进行详细分析. 二.持久化总体框架 持久化的类主要在包org.apache.zook ...

  3. Android学习笔记九:Service

    一:Service是什么 Service,服务.一般用于提供需要在后台长期运行的服务(如复杂计算.下载等等耗时任务),其特点是长生命周期的.没有用户界面.在后台运行的. 二:Service的生命周期方 ...

  4. C# Linq to Entity Lamda方式分组并求和求平均值

    1.单字段分组并求和: var list = data.GroupBy(g => g.GoodsId).Select(e => new { GoodsId = e.Key, Qty = e ...

  5. Java RSA (SHA1withRSA)签名和验签

    static { try { SIGNATURE = Signature.getInstance("SHA1withRSA", "BC"); } catch ( ...

  6. SpringCloud stream连接RabbitMQ收发信息

    百度上查的大部分都是一些很简单的单消费者或者单生产者的例子,并且多是同一个服务器的配置,本文的例子为多服务器配置下的消费生产和消费者配置. 参考资料:https://docs.spring.io/sp ...

  7. python模块之HTMLParser抓页面上的所有URL链接

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #python模块之HTMLParser抓页面上的所有URL链接 import urllib #MyParse ...

  8. VS编译 x64版本zlib库

    编译的过程倒也不是很难.我把编译的源码和脚本及说明都放在gitee上了. 详细的可以见这里 https://gitee.com/solym/zlib-1.2.11.git 可以参考这些文章 win10 ...

  9. Replace和ReplaceAll的差别

    先澄清几个误区 1.CharSequence 不是 Char :有些小朋友依据參数的类型选择Replace或ReplaceAll方法 2.Replace 和 ReplaceAll :并非有些小朋友想象 ...

  10. PHP通过soap调用c#的WebService

    1:C# Contact public class Contact { private int _Id; private string _Name; public int id { get { ret ...