Oozie4.2 安装部署、以及example测试
编译:
使用的环境是: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
oozie job -oozie http://centos01:11000/oozie -log 0000001-150804235314037-oozie-root-W
参考网站:
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测试的更多相关文章
- Flume NG安装部署及数据采集测试
转载请注明出处:http://www.cnblogs.com/xiaodf/ Flume作为日志收集工具,监控一个文件目录或者一个文件,当有新数据加入时,采集新数据发送给消息队列等. 1 安装部署Fl ...
- solr安装部署、solr测试创建core、用solrj 访问solr(索引和搜索)
一.安装solr4.8: 1.把apache-solr-4.8.1\example\webapps下的solr.war文件拷贝到Tomcat下的Tomcat7.0\webapps目录下,tomcat启 ...
- Hive安装部署及简单测试 网页《一》
1.首先关闭机器上之前配置的分布式Hadoop 命令: (在hadoop的安装目录中) sbin/stop-dfs.sh 关闭: yarn 命令: sbin/stop ...
- Redis安装部署(一主二从三哨兵)
需求:根据当前客户的生产环境,模拟安装部署Redis的测试环境,方便后续的功能测试. 1.准备工作 2.安装编译Redis 3.Redis运行环境配置 4.Redis启动和关闭 1.准备工作 Redi ...
- Hive_初步见解,安装部署与测试
一.hive是什么东东 1. 个人理解 hive就是一个基于hdfs运行于MapReduce上的一个java项目, 这个项目封装了jdbc,根据hdfs编写了处理数据库的DDL/DML,自带的 二进制 ...
- qemu-kvm和openvswitch安装部署-qemu-kvm和openvswitch原型环境部署和基本测试 (1)
qemu-kvm和openvswitch安装部署 本文包含两个部分: qemu-kvm的安装部署 openvswitch的安装部署 参考文档: kvm官网:http://www.linux-kvm.o ...
- redis cluster安装部署(测试环境)
redis 应用于web前端,做缓存和数据存取的速度是挺可观的,最近看了一些资料,手痒了,就弄了一个测试环境,两台方案,试用一下. ##Redis 集群部署## 一,方案调研: 参考博客: http: ...
- 测试环境docker-swarm安装部署
测试环境swarm安装部署 部署前增加监听docker2375端口 centos 增加tcp监听端口 修改/lib/systemd/system/docker.service sed -i ‘s/Ex ...
- Oracle安装部署,版本升级,应用补丁快速参考
一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...
随机推荐
- How do I fix a “Unknown configuration key `foreign-architecture' found in your `dpkg' configuration files.” error?
My /etc/dpkg/dpkg.cfg.d/multiarch contained: foreign-architecture i386 I deleted the file. I then is ...
- java 图片与base64相互转化
CreateTime--2017年12月4日17:38:44 Author:Marydon 需要导入: import java.io.FileInputStream; import java.io ...
- 〖Android〗scp替换脚本
有些手机没有scp命令行,考虑到我们在脚本中常常需要使用scp来复制文件,于是写个脚本代替scp: scp_from(){ local rfile=${##*:} local remote=${%%: ...
- Eclipse和MyEclipse使用技巧--Eclipse各版本介绍
进入eclipse的下载官网 http://www.eclipse.org/downloads/ 发现,会有多种版本提供下载. 对于刚接触Java开发的初学者,在下载eclipse时,对官网上面提 ...
- Inno Setup入门(六)——在程序目录下创建文件夹
创建文件夹可以使用[dirs]段实现,代码如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:\TES ...
- BigDecimal去除末尾多余的0
Java有自带的 stripTrailingZeros() 方法用于去除末尾多余的0 BigDecimal num = new BigDecimal("100.000"); Big ...
- 【已解决】mysql连接出错:ERROR 1040 (HY000): Too many connections
连接mysql,结果出错: ? 1 ERROR 1040 (HY000): Too many connections 去修改mysql的配置文件,然后添加: ? 1 2 3 4 5 6 7 8 9 1 ...
- oracle加密-des 简单举例.
Declare v_seed Raw(128); v_key_1 Raw(64); v_key_2 Raw(64); v_Text_for_encrypted Raw(64); v_mw ...
- JavaScript 函数入门略解
1.JavaScript 函数语法函数就是包裹在花括号中的代码块,前面使用了关键词 function: function functionname() { 这里是要执行的代码 } 当调用该函数时,会执 ...
- iOS应用之间的跳转
app应用跳转的原理解析 如何实现两个app应用之间的跳转 如何实现两个app之间跳转到指定界面 二.应用跳转原理 相信从一个应用跳转到另一个应用大家并不陌生,最常见的莫过于第三方登录,支付宝支付等等 ...