Oozie

Oozie

在使用oozie 做sqoop导入时候报了一个错误

回复

存在 发起了问题 1 人关注 0 个回复 1368 次浏览 2018-03-12 19:02 来自相关话题

在安装oozie时遇到的问题

xfyan 回复了问题 2 人关注 4 个回复 2297 次浏览 2016-09-26 18:36 来自相关话题

使用oozie执行sqoop hive import报错

wangxiaolei 回复了问题 2 人关注 1 个回复 2826 次浏览 2016-05-25 19:10 来自相关话题

oozie E0701错误

fish 回复了问题 3 人关注 7 个回复 6164 次浏览 2016-01-03 22:38 来自相关话题

oozie 做sqoop导入报错

fish 回复了问题 3 人关注 1 个回复 6686 次浏览 2015-12-06 03:08 来自相关话题

oozie 重新提交作业

cenyuhai 发表了文章 0 个评论 1669 次浏览 2015-09-11 14:35 来自相关话题

  在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决了才可以重新运行作业。重新运行作业分两种情况,suspe ...查看全部
  在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决了才可以重新运行作业。重新运行作业分两种情况,suspend状态和killed状态的,这两种状态是要通过不同的处理方式来处理的。
  (1)suspend状态的我们可以用resume方式来在挂起的地方恢复作业,重新运行,或者是先杀掉它,让它进入killed状态,再进行重新运行。
  
    public static void resumeJob(String jobId) {
try {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
wc.resume(jobId);
} catch (OozieClientException e) {
log.error(e);
}
}
public static void killJob(String jobId) {
try {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
wc.kill(jobId);
} catch (OozieClientException e) {
log.error(e);
}
}


  (2)killed状态的重新运行方法和它不一样,下面先贴出代码。
  
    public static void reRunJob(String jobId, Properties conf) {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
try {
Properties properties = wc.createConfiguration();
properties.setProperty("nameNode", "hdfs://192.168.1.133:9000");
properties.setProperty("queueName", "default");
properties.setProperty("examplesRoot", "examples");
properties
.setProperty("oozie.wf.application.path",
"${nameNode}/user/cenyuhai/${examplesRoot}/apps/map-reduce");
properties.setProperty("outputDir", "map-reduce");
properties.setProperty("jobTracker", "http://192.168.1.133:9001");
properties.setProperty("inputDir",
"/user/cenyuhai/examples/input-data/text");
properties.setProperty("outputDir",
"/user/cenyuhai/examples/output-data/map-reduce");
properties.setProperty("oozie.wf.rerun.failnodes", "true");
//这两个参数只能选一个,第一个是重新运行失败的节点,第二个是需要跳过的节点
// properties.setProperty("oozie.wf.rerun.skip.nodes", ":start:");
wc.reRun(jobId, properties);
} catch (OozieClientException e) {
log.error(e);
}
}


  好,现在开始讲解,重新运行作业,除了需要原有流程的id之外,还需要重新配置作业属性,它可以和原来的属性不一样,这里面有两个属性是必须要注意的,它们是重新提交作业必须具备的属性,如果不存在就会报错的,它们分别是oozie.wf.rerun.failnodes和oozie.wf.rerun.skip.nodes。这两个必须必须存在一个,第一个是自动运行失败的流程节点,第二个是需要跳过的节点,通过设置这个属性的话,如果已经运行成功的节点不在这个属性里面的话就可以让已经运行成功的节点再运行一遍了,爽吧!
  好啦,就到这吧,oozie貌似就这么多东西了,目前貌似一直都没有看到它的事务机制,它的定时作业不太想研究,看着就费劲儿,还不如自己写一个定时作业呢。。。
 

oozie java api提交作业

cenyuhai 发表了文章 0 个评论 1907 次浏览 2015-09-11 14:31 来自相关话题

=medium今晚试验用java的api来提交代码,由于代码是在我机器上写的,然后提交到我的虚拟机集群当中去,所以中间产生了一个错误。。要想在任意一台机器上向oozie提交作业的话,需要对hadoop的core-site.xml文件进行设置,复制到所有机器上, ...查看全部
=medium今晚试验用java的api来提交代码,由于代码是在我机器上写的,然后提交到我的虚拟机集群当中去,所以中间产生了一个错误。。要想在任意一台机器上向oozie提交作业的话,需要对hadoop的core-site.xml文件进行设置,复制到所有机器上,然后重启hadoop集群。
=medium设置如下:
 
hadoop.proxyuser.cenyuhai.hosts
*


hadoop.proxyuser.cenyuhai.groups
*



=medium这里都设置成星号,则为任意机器,任意账号。cenyuhai是我的本机账户。
=medium然后就开始啦,用本机提交代码到oozie。代码如下:
 
        OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie"); 
Properties conf = wc.createConfiguration();
//conf.setProperty(OozieClient.APP_PATH,"hdfs://192.168.1.133:9000" + appPath);
conf.setProperty("nameNode", "hdfs://192.168.1.133:9000");
conf.setProperty("queueName", "default");
conf.setProperty("examplesRoot", "examples");
conf.setProperty("oozie.wf.application.path", "${nameNode}/user/cenyuhai/${examplesRoot}/apps/map-reduce");
conf.setProperty("outputDir", "map-reduce");
conf.setProperty("jobTracker", "http://192.168.1.133:9001");
conf.setProperty("inputDir", input);
conf.setProperty("outputDir", output);

try {
String jobId = wc.run(conf);
return jobId;
} catch (OozieClientException e) {
log.error(e);
}



=medium代码非常简单,先new一个OozieClient出来,然后创建一个配置文件Properties类,然后把我们用文件的Job.Properties里面写的所有参数都设置进去就行啦,然后调用run方法就打完收工了,简单吧。提交完了之后发现作业还是失败了,没关系,查看了一下详细的失败原因,发现不是因为workflow.xml设置输入输出目录的时候使用了账户的原因,没关系啦,随便它,反正提交是成功啦。
 

oozie 客户端常用命令

cenyuhai 发表了文章 0 个评论 1806 次浏览 2015-09-11 14:31 来自相关话题

=medium1.提交作业,作业进入PREP状态 oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -submit jo ...查看全部
=medium1.提交作业,作业进入PREP状态
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -submit
job: 14-20090525161321-oozie-joe

2.执行已提交的作业
oozie job -oozie=medium=mediumhttp://localhost:11000/oozie=medium -start 14-20090525161321-oozie-joe
 
=medium3.直接运行作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -run
 
=medium4.挂起作业,挂起前状态(RUNNING , RUNNIINGWITHERROR or PREP状态)
workflow job will be in SUSPENDED status.
 
=medium5.杀死作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -kill 14-20090525161321-oozie-joe
 
=medium6.改变作业参数,不能修改killed状态的作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -change 14-20090525161321-oozie-joe -value endtime=2011-12-01T05:00Z;concurrency=100;2011-10-01T05:00Z
=medium7.重新运行作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -rerun 14-20090525161321-oozie-joe
000000-130817230824019-oozie-ceny-W
Rerunning a Coordinator Action or Multiple Actions
$oozie job -rerun [-nocleanup] [-refresh]
[-action 1, 3-4, 7-40] (-action or -date is required to rerun.)
[-date 2009-01-01T01:00Z::2009-05-31T23:59Z, 2009-11-10T01:00Z, 2009-12-31T22:00Z]
Rerunning a Bundle Job
oozie job -rerun [-nocleanup] [-refresh]
[-coordinator c1, c3, c4] (-coordinator or -date is required to rerun.)
[-date 2009-01-01T01:00Z::2009-05-31T23:59Z, 2009-11-10T01:00Z, 2009-12-31T22:00Z]
(if neither -coordinator nor -date is given, the exception will be thrown.)
 
=medium8.检查作业状态
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -info 14-20090525161321-oozie-joe
=mediumoozie job -oozie =mediumhttp://localhost:11000/oozie=medium -info 0000001-111219170928042-oozie-para-W@mr-node -verbose
 
=medium9.查看日志
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -log 14-20090525161321-oozie-joe
oozie job -log [-action 1, 3-4, 7-40] (-action is optional.)
 
=medium10.检查xml文件是否合规
oozie validate myApp/workflow.xml
 
=medium11.提交pig作业
oozie pig -oozie =mediumhttp://localhost:11000/oozie=medium -file pigScriptFile -config job.properties -X -param_file params
 
=medium12.提交MR作业
oozie mapreduce -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties
 
 
=mediumusage:
the env variable 'OOZIE_URL' is used as default value for the '-oozie' option
the env variable 'OOZIE_TIMEZONE' is used as default value for the '-timezone' option
custom headers for Oozie web services can be specified using '-Dheader:NAME=VALUE' oozie help : display usage
.
oozie version : show client version
.
oozie job : job operations
-action coordinator rerun on action ids (requires -rerun); coordinator log retrieval on action ids (requires -log)
-auth select authentication type [SIMPLE|KERBEROS]
-change change a coordinator/bundle job
-config job configuration file '.xml' or '.properties'
-D set/override value for given property
-date coordinator/bundle rerun on action dates (requires -rerun)
-definition job definition
-doas doAs user, impersonates as the specified user
-dryrun Dryrun a workflow (since 3.3.2) or coordinator (since 2.0) job without actually executing it
-info info of a job
-kill kill a job
-len number of actions (default TOTAL ACTIONS, requires -info)
-localtime use local time (same as passing your time zone to -timezone).
Overrides -timezone option
-log job log
-nocleanup do not clean up output-events of the coordinator rerun actions
(requires -rerun)
-offset job info offset of actions (default '1', requires -info)
-oozie Oozie URL
-refresh re-materialize the coordinator rerun actions (requires -rerun)
-rerun rerun a job (coordinator requires -action or -date; bundle requires -coordinator or -date)
-resume resume a job
-run run a job
-start start a job
-submit submit a job
-suspend suspend a job
-timezone use time zone with the specified ID (default GMT).
See 'oozie info -timezones' for a list
-value new endtime/concurrency/pausetime value for changing a
coordinator job; new pausetime value for changing a bundle job
-verbose verbose mode
.
oozie jobs : jobs status
-auth select authentication type [SIMPLE|KERBEROS]
-doas doAs user, impersonates as the specified user.
-filter user=;name=;group=;status=;...
-jobtype job type ('Supported in Oozie-2.0 or later versions ONLY - coordinator' or 'wf' (default))
-len number of jobs (default '100')
-localtime use local time (same as passing your time zone to -timezone). Overrides -timezone option
-offset jobs offset (default '1')
-oozie Oozie URL
-timezone use time zone with the specified ID (default GMT). See 'oozie info -timezones' for a list
-verbose verbose mode
.
oozie admin : admin operations
-auth select authentication type [SIMPLE|KERBEROS]
-doas doAs user, impersonates as the specified user.
-oozie Oozie URL
-queuedump show Oozie server queue elements
-status show the current system status
-systemmode Supported in Oozie-2.0 or later versions ONLY. Change oozie
system mode [NORMAL|NOWEBSERVICE|SAFEMODE]
-version show Oozie server build version
.
oozie validate : validate a workflow XML file
.
oozie sla : sla operations (Supported in Oozie-2.0 or later)
-auth select authentication type [SIMPLE|KERBEROS]
-len number of results (default '100', max limited by oozie server setting which defaults to '1000')
-offset start offset (default '0')
-oozie Oozie URL
-filter jobid=\;appname=
.
oozie pig -X : submit a pig job, everything after '-X' are pass-through parameters to pig
-auth select authentication type [SIMPLE|KERBEROS]
-doas doAs user, impersonates as the specified user.
-config job configuration file '.properties'
-D set/override value for given property
-file Pig script
-oozie Oozie URL
.
oozie info : get more detailed info about specific topics
-timezones display a list of available time zones

oozie 运行demo

cenyuhai 发表了文章 0 个评论 2232 次浏览 2015-09-11 14:30 来自相关话题

=medium昨晚装好了oozie,能启动了,并且配置了mysql作为数据库,好了,今天要执行oozie自带的demo了,好家伙,一执行就报错!报错很多,就不一一列举了,就说我最后解决的方法吧。 oozie job -oozie http://lo ...查看全部
=medium昨晚装好了oozie,能启动了,并且配置了mysql作为数据库,好了,今天要执行oozie自带的demo了,好家伙,一执行就报错!报错很多,就不一一列举了,就说我最后解决的方法吧。
oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties –run
这句话需要在oozie的目录里面执行,然后在网上查了很多资料,最后搞定了,需要修改三个配置文件。
在说修改配置文件之前,还漏了一些东西,先补上,首先我们需要解压目录下面的oozie-examples.tar.gz,oozie-client-3.3.2.tar.gz,
oozie-sharelib-3.3.2.tar.gz,然后把examples和share目录上传到fs上面去。
hadoop fs -put examples examples
hadoop fs -put share share
然后在/etc/profile配置oozie-client的环境变量。
接下来说怎么解决的oozie的吧。
1.修改oozie的conf目录下的oozie-site.xml
增加以下内容:
 

  
oozie.services

org.apache.oozie.service.SchedulerService,
org.apache.oozie.service.InstrumentationService,
org.apache.oozie.service.CallableQueueService,
org.apache.oozie.service.UUIDService,
org.apache.oozie.service.ELService,
org.apache.oozie.service.AuthorizationService,
org.apache.oozie.service.MemoryLocksService,
org.apache.oozie.service.DagXLogInfoService,
org.apache.oozie.service.SchemaService,
org.apache.oozie.service.LiteWorkflowAppService,
org.apache.oozie.service.JPAService,
org.apache.oozie.service.StoreService,
org.apache.oozie.service.CoordinatorStoreService,
org.apache.oozie.service.SLAStoreService,
org.apache.oozie.service.DBLiteWorkflowStoreService,
org.apache.oozie.service.CallbackService,
org.apache.oozie.service.ActionService,
org.apache.oozie.service.ActionCheckerService,
org.apache.oozie.service.RecoveryService,
org.apache.oozie.service.PurgeService,
org.apache.oozie.service.CoordinatorEngineService,
org.apache.oozie.service.BundleEngineService,
org.apache.oozie.service.DagEngineService,
org.apache.oozie.service.CoordMaterializeTriggerService,
org.apache.oozie.service.StatusTransitService,
org.apache.oozie.service.PauseTransitService,
org.apache.oozie.service.HadoopAccessorService


All services to be created and managed by Oozie Services singleton.
Class names must be separated by commas.




oozie.service.ProxyUserService.proxyuser.cenyuhai.hosts
*

List of hosts the '#USER#' user is allowed to perform 'doAs'
operations.

The '#USER#' must be replaced with the username o the user who is
allowed to perform 'doAs' operations.

The value can be the '*' wildcard or a list of hostnames.

For multiple users copy this property and replace the user name
in the property name.




oozie.service.ProxyUserService.proxyuser.cenyuhai.groups
*

List of groups the '#USER#' user is allowed to impersonate users
from to perform 'doAs' operations.

The '#USER#' must be replaced with the username o the user who is
allowed to perform 'doAs' operations.

The value can be the '*' wildcard or a list of groups.

For multiple users copy this property and replace the user name
in the property name.

View Code
 
2.修改oozie-env.sh,增加以下内容
?
export
OOZIE_CONF=${OOZIE_HOME}/conf 

export
OOZIE_DATA=${OOZIE_HOME}/data 

export
OOZIE_LOG=${OOZIE_HOME}/logs 

export
CATALINA_BASE=${OOZIE_HOME}/oozie-server 

export
CATALINA_TMPDIR=${OOZIE_HOME}/oozie-server/temp 

export
CATALINA_OUT=${OOZIE_LOG}/catalina.out

 
3.修改所有节点的hadoop的配置文件core-site.xml,
 
hadoop.proxyuser.cenyuhai.hosts
hadoop.Master


hadoop.proxyuser.cenyuhai.groups
cenyuhai


然后重启就可以执行了,里面的cenyuhai是我的本机账号。
 
补充:在进行完上述配置之后,作业可以提交了,但是提交了MR作业之后,在web页面中查看,遇到了一个错误:
JA006: Call to localhost/127.0.0.1:9001 failed on connection exception: java.net.ConnectException: Connection refused
这个问题排查了很久,都没有得到解决 ,最后通过修改job.properties,把jobTracker从localhost:9001改成下面的全称才行,这个可能跟我的hadoop的
jobTracker设置有关,所以遇到有这方面问题的童鞋可以试试。
nameNode=hdfs://192.168.1.133:9000
jobTracker=http://192.168.1.133:9001
接下来我们接着运行hive的demo,运行之前记得修改hive的demo的job.properties,改为上面写的那样。
然后提交,提交成功了,但是在web页面上查看状态为KILLED,被干掉了。。。
错误代码:JA018,错误消息:org/apache/hadoop/hive/cli/CliDriver
然后我就想着可能是jar包的问题,删掉share目录下的hive目录里的所有jar包,然后把自己机器上的hive的所有jar包复制到该目录下。
然后上传到共享目录上:
hadoop fs -put share share
再次提交,就可以查看到成功的状态啦!
oozie job -oozie http://localhost:11000/oozie -config examples/apps/hive/job.properties -run
但是这个坑爹的玩意儿,其实是把数据插入到了Derby中。。。无语了,虽然现实成功了,但是没有用。。。因为我们配置了外置的mysql数据库,那怎么办呢?
需要修改workflow.xml,把其中的configuration的配置节改成下面的样子。



mapred.job.queue.name
${queueName}


hive.metastore.local
true


javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.1.133:3306/hive?createDatabaseIfNotExist=true


javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver


javax.jdo.option.ConnectionUserName
hive


javax.jdo.option.ConnectionPassword
mysql


hive.metastore.warehouse.dir
/user/hive/warehouse

View Code
然后提交之后,在hive中就可以查询到你所建立的表啦,oh,yeah!

oozie 安装过程详解

cenyuhai 发表了文章 0 个评论 1501 次浏览 2015-09-11 14:30 来自相关话题

1.从apache的官网下载oozie3.3.2 2.编译oozie,以下命令用root来执行吧,它不做任何的测试的,因为一测试就会出错的 官网估计也知道,所以顺便也提供了一个跳过参数的命令。。。 bin/mkdistro. ...查看全部
1.从apache的官网下载oozie3.3.2
2.编译oozie,以下命令用root来执行吧,它不做任何的测试的,因为一测试就会出错的
官网估计也知道,所以顺便也提供了一个跳过参数的命令。。。
bin/mkdistro.sh -DskipTests
编译完成之后的实际可运行程序位于oozie/distro/target/oozie-3.3.2-distro/ 目录下
我好不容易找到了这个目录,我把它已到了/usr目录下面
3.在oozie的目录下建立一个libext文件件,然后把hadoop的jar加进去,因为3.3.2默认是支持1.1.1的,用以下这句命令
bin/oozie-setup.sh prepare-war hadoop 1.1.2 /usr/hadoop/
这个命令其实是在oozie-server/webapps里面生成一个可以部署的包的,但是最后它会出错,说有jar包没找到,没关系不影响。
4.配置oozie存储数据用mysql
首先添加mysql连接的jar包和ext-2.2.zip添加到oozie里面的libext目录下,
bin/oozie-setup.sh prepare-war
就这句命令就行,它会自动把libext目录下的所有包自动添加到目标的war包当中,我就碰到mysql报错,oozie的web的查看不了的问题,出问题就在这一步,
网上根本找不到资料,试了好多办法都解决不了,最后再认真细看了官方文档才知道这个诀窍,之前添加hadoop的jar包那一步不成功,可能的原因就是因为默认支持的版本不一样吧,oozie3.3.2默认支持1.1.1的,我的是1.1.2的,它要查找的包在我的版本已经没了。。。所以导致最后生成war包不成功。
貌似这一步是把jar包加到它的war包里面的此外我们还要把这个jar包放到libext里面
修改conf下面的oozie-site.xml设置mysql的属性,修改为以下内容

 
oozie.service.JPAService.jdbc.driver
com.mysql.jdbc.Driver

JDBC driver class.




oozie.service.JPAService.jdbc.url
jdbc:mysql://localhost:3306/oozie

JDBC URL.



oozie.service.JPAService.jdbc.username
oozie

DB user name.

View Code

手动建库
mysql> create database oozie;
Query OK, 1 row affected (0.03 sec)
mysql> grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie';
Query OK, 0 rows affected (0.03 sec)
mysql> grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie';
Query OK, 0 rows affected (0.03 sec)
mysql> exit
执行以下脚本建表
bin/ooziedb.sh create -sqlfile oozie.sql -run
启动oozie,为了方便bin/oozied.sh start 这个加到了开机启动脚本里面
后台运行命令:
$ bin/oozied.sh start
前台运行命令:
$ bin/oozied.sh run
启动成功,oh,yeah,这只是第一步,好吧,到此为止吧,晚上00:22分了。
下面这个命令是用来检查oozie的健康状况的
$ bin/oozie admin -oozie http://localhost:11000/oozie -status

oozie 启动报错,sharelib 加载问题

回复

VanquisherCsn 发起了问题 1 人关注 0 个回复 2798 次浏览 2015-09-09 15:27 来自相关话题

oozie3.3.2和hadoop2.2.0遇到的IPC问题

zp0824 回复了问题 2 人关注 2 个回复 2434 次浏览 2015-08-27 09:38 来自相关话题

Error: E0901 : E0901: Namenode [master.hadoop:9000] not allowed, not in Oozies whitelist

回复

封尘 发起了问题 1 人关注 0 个回复 4465 次浏览 2015-08-27 09:32 来自相关话题

在使用oozie 做sqoop导入时候报了一个错误

回复

存在 发起了问题 1 人关注 0 个回复 1368 次浏览 2018-03-12 19:02 来自相关话题

在安装oozie时遇到的问题

回复

xfyan 回复了问题 2 人关注 4 个回复 2297 次浏览 2016-09-26 18:36 来自相关话题

使用oozie执行sqoop hive import报错

回复

wangxiaolei 回复了问题 2 人关注 1 个回复 2826 次浏览 2016-05-25 19:10 来自相关话题

oozie E0701错误

回复

fish 回复了问题 3 人关注 7 个回复 6164 次浏览 2016-01-03 22:38 来自相关话题

oozie 做sqoop导入报错

回复

fish 回复了问题 3 人关注 1 个回复 6686 次浏览 2015-12-06 03:08 来自相关话题

oozie 启动报错,sharelib 加载问题

回复

VanquisherCsn 发起了问题 1 人关注 0 个回复 2798 次浏览 2015-09-09 15:27 来自相关话题

oozie3.3.2和hadoop2.2.0遇到的IPC问题

回复

zp0824 回复了问题 2 人关注 2 个回复 2434 次浏览 2015-08-27 09:38 来自相关话题

Error: E0901 : E0901: Namenode [master.hadoop:9000] not allowed, not in Oozies whitelist

回复

封尘 发起了问题 1 人关注 0 个回复 4465 次浏览 2015-08-27 09:32 来自相关话题

oozie 重新提交作业

cenyuhai 发表了文章 0 个评论 1669 次浏览 2015-09-11 14:35 来自相关话题

  在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决了才可以重新运行作业。重新运行作业分两种情况,suspe ...查看全部
  在oozie的运行过程当中可能会出现错误,比如数据库连接不上,或者作业执行报错导致流程进入suspend或者killed状态,这个时候我们就要分析了,如果确实是数据或者是网络有问题,我们比如把问题解决了才可以重新运行作业。重新运行作业分两种情况,suspend状态和killed状态的,这两种状态是要通过不同的处理方式来处理的。
  (1)suspend状态的我们可以用resume方式来在挂起的地方恢复作业,重新运行,或者是先杀掉它,让它进入killed状态,再进行重新运行。
  
    public static void resumeJob(String jobId) {
try {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
wc.resume(jobId);
} catch (OozieClientException e) {
log.error(e);
}
}
public static void killJob(String jobId) {
try {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
wc.kill(jobId);
} catch (OozieClientException e) {
log.error(e);
}
}


  (2)killed状态的重新运行方法和它不一样,下面先贴出代码。
  
    public static void reRunJob(String jobId, Properties conf) {
OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie");
try {
Properties properties = wc.createConfiguration();
properties.setProperty("nameNode", "hdfs://192.168.1.133:9000");
properties.setProperty("queueName", "default");
properties.setProperty("examplesRoot", "examples");
properties
.setProperty("oozie.wf.application.path",
"${nameNode}/user/cenyuhai/${examplesRoot}/apps/map-reduce");
properties.setProperty("outputDir", "map-reduce");
properties.setProperty("jobTracker", "http://192.168.1.133:9001");
properties.setProperty("inputDir",
"/user/cenyuhai/examples/input-data/text");
properties.setProperty("outputDir",
"/user/cenyuhai/examples/output-data/map-reduce");
properties.setProperty("oozie.wf.rerun.failnodes", "true");
//这两个参数只能选一个,第一个是重新运行失败的节点,第二个是需要跳过的节点
// properties.setProperty("oozie.wf.rerun.skip.nodes", ":start:");
wc.reRun(jobId, properties);
} catch (OozieClientException e) {
log.error(e);
}
}


  好,现在开始讲解,重新运行作业,除了需要原有流程的id之外,还需要重新配置作业属性,它可以和原来的属性不一样,这里面有两个属性是必须要注意的,它们是重新提交作业必须具备的属性,如果不存在就会报错的,它们分别是oozie.wf.rerun.failnodes和oozie.wf.rerun.skip.nodes。这两个必须必须存在一个,第一个是自动运行失败的流程节点,第二个是需要跳过的节点,通过设置这个属性的话,如果已经运行成功的节点不在这个属性里面的话就可以让已经运行成功的节点再运行一遍了,爽吧!
  好啦,就到这吧,oozie貌似就这么多东西了,目前貌似一直都没有看到它的事务机制,它的定时作业不太想研究,看着就费劲儿,还不如自己写一个定时作业呢。。。
 

oozie java api提交作业

cenyuhai 发表了文章 0 个评论 1907 次浏览 2015-09-11 14:31 来自相关话题

=medium今晚试验用java的api来提交代码,由于代码是在我机器上写的,然后提交到我的虚拟机集群当中去,所以中间产生了一个错误。。要想在任意一台机器上向oozie提交作业的话,需要对hadoop的core-site.xml文件进行设置,复制到所有机器上, ...查看全部
=medium今晚试验用java的api来提交代码,由于代码是在我机器上写的,然后提交到我的虚拟机集群当中去,所以中间产生了一个错误。。要想在任意一台机器上向oozie提交作业的话,需要对hadoop的core-site.xml文件进行设置,复制到所有机器上,然后重启hadoop集群。
=medium设置如下:
 
hadoop.proxyuser.cenyuhai.hosts
*


hadoop.proxyuser.cenyuhai.groups
*



=medium这里都设置成星号,则为任意机器,任意账号。cenyuhai是我的本机账户。
=medium然后就开始啦,用本机提交代码到oozie。代码如下:
 
        OozieClient wc = new OozieClient("http://192.168.1.133:11000/oozie"); 
Properties conf = wc.createConfiguration();
//conf.setProperty(OozieClient.APP_PATH,"hdfs://192.168.1.133:9000" + appPath);
conf.setProperty("nameNode", "hdfs://192.168.1.133:9000");
conf.setProperty("queueName", "default");
conf.setProperty("examplesRoot", "examples");
conf.setProperty("oozie.wf.application.path", "${nameNode}/user/cenyuhai/${examplesRoot}/apps/map-reduce");
conf.setProperty("outputDir", "map-reduce");
conf.setProperty("jobTracker", "http://192.168.1.133:9001");
conf.setProperty("inputDir", input);
conf.setProperty("outputDir", output);

try {
String jobId = wc.run(conf);
return jobId;
} catch (OozieClientException e) {
log.error(e);
}



=medium代码非常简单,先new一个OozieClient出来,然后创建一个配置文件Properties类,然后把我们用文件的Job.Properties里面写的所有参数都设置进去就行啦,然后调用run方法就打完收工了,简单吧。提交完了之后发现作业还是失败了,没关系,查看了一下详细的失败原因,发现不是因为workflow.xml设置输入输出目录的时候使用了账户的原因,没关系啦,随便它,反正提交是成功啦。
 

oozie 客户端常用命令

cenyuhai 发表了文章 0 个评论 1806 次浏览 2015-09-11 14:31 来自相关话题

=medium1.提交作业,作业进入PREP状态 oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -submit jo ...查看全部
=medium1.提交作业,作业进入PREP状态
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -submit
job: 14-20090525161321-oozie-joe

2.执行已提交的作业
oozie job -oozie=medium=mediumhttp://localhost:11000/oozie=medium -start 14-20090525161321-oozie-joe
 
=medium3.直接运行作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -run
 
=medium4.挂起作业,挂起前状态(RUNNING , RUNNIINGWITHERROR or PREP状态)
workflow job will be in SUSPENDED status.
 
=medium5.杀死作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -kill 14-20090525161321-oozie-joe
 
=medium6.改变作业参数,不能修改killed状态的作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -change 14-20090525161321-oozie-joe -value endtime=2011-12-01T05:00Z;concurrency=100;2011-10-01T05:00Z
=medium7.重新运行作业
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties -rerun 14-20090525161321-oozie-joe
000000-130817230824019-oozie-ceny-W
Rerunning a Coordinator Action or Multiple Actions
$oozie job -rerun [-nocleanup] [-refresh]
[-action 1, 3-4, 7-40] (-action or -date is required to rerun.)
[-date 2009-01-01T01:00Z::2009-05-31T23:59Z, 2009-11-10T01:00Z, 2009-12-31T22:00Z]
Rerunning a Bundle Job
oozie job -rerun [-nocleanup] [-refresh]
[-coordinator c1, c3, c4] (-coordinator or -date is required to rerun.)
[-date 2009-01-01T01:00Z::2009-05-31T23:59Z, 2009-11-10T01:00Z, 2009-12-31T22:00Z]
(if neither -coordinator nor -date is given, the exception will be thrown.)
 
=medium8.检查作业状态
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -info 14-20090525161321-oozie-joe
=mediumoozie job -oozie =mediumhttp://localhost:11000/oozie=medium -info 0000001-111219170928042-oozie-para-W@mr-node -verbose
 
=medium9.查看日志
oozie job -oozie =mediumhttp://localhost:11000/oozie=medium -log 14-20090525161321-oozie-joe
oozie job -log [-action 1, 3-4, 7-40] (-action is optional.)
 
=medium10.检查xml文件是否合规
oozie validate myApp/workflow.xml
 
=medium11.提交pig作业
oozie pig -oozie =mediumhttp://localhost:11000/oozie=medium -file pigScriptFile -config job.properties -X -param_file params
 
=medium12.提交MR作业
oozie mapreduce -oozie =mediumhttp://localhost:11000/oozie=medium -config job.properties
 
 
=mediumusage:
the env variable 'OOZIE_URL' is used as default value for the '-oozie' option
the env variable 'OOZIE_TIMEZONE' is used as default value for the '-timezone' option
custom headers for Oozie web services can be specified using '-Dheader:NAME=VALUE' oozie help : display usage
.
oozie version : show client version
.
oozie job : job operations
-action coordinator rerun on action ids (requires -rerun); coordinator log retrieval on action ids (requires -log)
-auth select authentication type [SIMPLE|KERBEROS]
-change change a coordinator/bundle job
-config job configuration file '.xml' or '.properties'
-D set/override value for given property
-date coordinator/bundle rerun on action dates (requires -rerun)
-definition job definition
-doas doAs user, impersonates as the specified user
-dryrun Dryrun a workflow (since 3.3.2) or coordinator (since 2.0) job without actually executing it
-info info of a job
-kill kill a job
-len number of actions (default TOTAL ACTIONS, requires -info)
-localtime use local time (same as passing your time zone to -timezone).
Overrides -timezone option
-log job log
-nocleanup do not clean up output-events of the coordinator rerun actions
(requires -rerun)
-offset job info offset of actions (default '1', requires -info)
-oozie Oozie URL
-refresh re-materialize the coordinator rerun actions (requires -rerun)
-rerun rerun a job (coordinator requires -action or -date; bundle requires -coordinator or -date)
-resume resume a job
-run run a job
-start start a job
-submit submit a job
-suspend suspend a job
-timezone use time zone with the specified ID (default GMT).
See 'oozie info -timezones' for a list
-value new endtime/concurrency/pausetime value for changing a
coordinator job; new pausetime value for changing a bundle job
-verbose verbose mode
.
oozie jobs : jobs status
-auth select authentication type [SIMPLE|KERBEROS]
-doas doAs user, impersonates as the specified user.
-filter user=;name=;group=;status=;...
-jobtype job type ('Supported in Oozie-2.0 or later versions ONLY - coordinator' or 'wf' (default))
-len number of jobs (default '100')
-localtime use local time (same as passing your time zone to -timezone). Overrides -timezone option
-offset jobs offset (default '1')
-oozie Oozie URL
-timezone use time zone with the specified ID (default GMT). See 'oozie info -timezones' for a list
-verbose verbose mode
.
oozie admin : admin operations
-auth select authentication type [SIMPLE|KERBEROS]
-doas doAs user, impersonates as the specified user.
-oozie Oozie URL
-queuedump show Oozie server queue elements
-status show the current system status
-systemmode Supported in Oozie-2.0 or later versions ONLY. Change oozie
system mode [NORMAL|NOWEBSERVICE|SAFEMODE]
-version show Oozie server build version
.
oozie validate : validate a workflow XML file
.
oozie sla : sla operations (Supported in Oozie-2.0 or later)
-auth select authentication type [SIMPLE|KERBEROS]
-len number of results (default '100', max limited by oozie server setting which defaults to '1000')
-offset start offset (default '0')
-oozie Oozie URL
-filter jobid=\;appname=
.
oozie pig -X : submit a pig job, everything after '-X' are pass-through parameters to pig
-auth select authentication type [SIMPLE|KERBEROS]
-doas doAs user, impersonates as the specified user.
-config job configuration file '.properties'
-D set/override value for given property
-file Pig script
-oozie Oozie URL
.
oozie info : get more detailed info about specific topics
-timezones display a list of available time zones

oozie 运行demo

cenyuhai 发表了文章 0 个评论 2232 次浏览 2015-09-11 14:30 来自相关话题

=medium昨晚装好了oozie,能启动了,并且配置了mysql作为数据库,好了,今天要执行oozie自带的demo了,好家伙,一执行就报错!报错很多,就不一一列举了,就说我最后解决的方法吧。 oozie job -oozie http://lo ...查看全部
=medium昨晚装好了oozie,能启动了,并且配置了mysql作为数据库,好了,今天要执行oozie自带的demo了,好家伙,一执行就报错!报错很多,就不一一列举了,就说我最后解决的方法吧。
oozie job -oozie http://localhost:11000/oozie -config examples/apps/map-reduce/job.properties –run
这句话需要在oozie的目录里面执行,然后在网上查了很多资料,最后搞定了,需要修改三个配置文件。
在说修改配置文件之前,还漏了一些东西,先补上,首先我们需要解压目录下面的oozie-examples.tar.gz,oozie-client-3.3.2.tar.gz,
oozie-sharelib-3.3.2.tar.gz,然后把examples和share目录上传到fs上面去。
hadoop fs -put examples examples
hadoop fs -put share share
然后在/etc/profile配置oozie-client的环境变量。
接下来说怎么解决的oozie的吧。
1.修改oozie的conf目录下的oozie-site.xml
增加以下内容:
 

  
oozie.services

org.apache.oozie.service.SchedulerService,
org.apache.oozie.service.InstrumentationService,
org.apache.oozie.service.CallableQueueService,
org.apache.oozie.service.UUIDService,
org.apache.oozie.service.ELService,
org.apache.oozie.service.AuthorizationService,
org.apache.oozie.service.MemoryLocksService,
org.apache.oozie.service.DagXLogInfoService,
org.apache.oozie.service.SchemaService,
org.apache.oozie.service.LiteWorkflowAppService,
org.apache.oozie.service.JPAService,
org.apache.oozie.service.StoreService,
org.apache.oozie.service.CoordinatorStoreService,
org.apache.oozie.service.SLAStoreService,
org.apache.oozie.service.DBLiteWorkflowStoreService,
org.apache.oozie.service.CallbackService,
org.apache.oozie.service.ActionService,
org.apache.oozie.service.ActionCheckerService,
org.apache.oozie.service.RecoveryService,
org.apache.oozie.service.PurgeService,
org.apache.oozie.service.CoordinatorEngineService,
org.apache.oozie.service.BundleEngineService,
org.apache.oozie.service.DagEngineService,
org.apache.oozie.service.CoordMaterializeTriggerService,
org.apache.oozie.service.StatusTransitService,
org.apache.oozie.service.PauseTransitService,
org.apache.oozie.service.HadoopAccessorService


All services to be created and managed by Oozie Services singleton.
Class names must be separated by commas.




oozie.service.ProxyUserService.proxyuser.cenyuhai.hosts
*

List of hosts the '#USER#' user is allowed to perform 'doAs'
operations.

The '#USER#' must be replaced with the username o the user who is
allowed to perform 'doAs' operations.

The value can be the '*' wildcard or a list of hostnames.

For multiple users copy this property and replace the user name
in the property name.




oozie.service.ProxyUserService.proxyuser.cenyuhai.groups
*

List of groups the '#USER#' user is allowed to impersonate users
from to perform 'doAs' operations.

The '#USER#' must be replaced with the username o the user who is
allowed to perform 'doAs' operations.

The value can be the '*' wildcard or a list of groups.

For multiple users copy this property and replace the user name
in the property name.

View Code
 
2.修改oozie-env.sh,增加以下内容
?
export
OOZIE_CONF=${OOZIE_HOME}/conf 

export
OOZIE_DATA=${OOZIE_HOME}/data 

export
OOZIE_LOG=${OOZIE_HOME}/logs 

export
CATALINA_BASE=${OOZIE_HOME}/oozie-server 

export
CATALINA_TMPDIR=${OOZIE_HOME}/oozie-server/temp 

export
CATALINA_OUT=${OOZIE_LOG}/catalina.out

 
3.修改所有节点的hadoop的配置文件core-site.xml,
 
hadoop.proxyuser.cenyuhai.hosts
hadoop.Master


hadoop.proxyuser.cenyuhai.groups
cenyuhai


然后重启就可以执行了,里面的cenyuhai是我的本机账号。
 
补充:在进行完上述配置之后,作业可以提交了,但是提交了MR作业之后,在web页面中查看,遇到了一个错误:
JA006: Call to localhost/127.0.0.1:9001 failed on connection exception: java.net.ConnectException: Connection refused
这个问题排查了很久,都没有得到解决 ,最后通过修改job.properties,把jobTracker从localhost:9001改成下面的全称才行,这个可能跟我的hadoop的
jobTracker设置有关,所以遇到有这方面问题的童鞋可以试试。
nameNode=hdfs://192.168.1.133:9000
jobTracker=http://192.168.1.133:9001
接下来我们接着运行hive的demo,运行之前记得修改hive的demo的job.properties,改为上面写的那样。
然后提交,提交成功了,但是在web页面上查看状态为KILLED,被干掉了。。。
错误代码:JA018,错误消息:org/apache/hadoop/hive/cli/CliDriver
然后我就想着可能是jar包的问题,删掉share目录下的hive目录里的所有jar包,然后把自己机器上的hive的所有jar包复制到该目录下。
然后上传到共享目录上:
hadoop fs -put share share
再次提交,就可以查看到成功的状态啦!
oozie job -oozie http://localhost:11000/oozie -config examples/apps/hive/job.properties -run
但是这个坑爹的玩意儿,其实是把数据插入到了Derby中。。。无语了,虽然现实成功了,但是没有用。。。因为我们配置了外置的mysql数据库,那怎么办呢?
需要修改workflow.xml,把其中的configuration的配置节改成下面的样子。



mapred.job.queue.name
${queueName}


hive.metastore.local
true


javax.jdo.option.ConnectionURL
jdbc:mysql://192.168.1.133:3306/hive?createDatabaseIfNotExist=true


javax.jdo.option.ConnectionDriverName
com.mysql.jdbc.Driver


javax.jdo.option.ConnectionUserName
hive


javax.jdo.option.ConnectionPassword
mysql


hive.metastore.warehouse.dir
/user/hive/warehouse

View Code
然后提交之后,在hive中就可以查询到你所建立的表啦,oh,yeah!

oozie 安装过程详解

cenyuhai 发表了文章 0 个评论 1501 次浏览 2015-09-11 14:30 来自相关话题

1.从apache的官网下载oozie3.3.2 2.编译oozie,以下命令用root来执行吧,它不做任何的测试的,因为一测试就会出错的 官网估计也知道,所以顺便也提供了一个跳过参数的命令。。。 bin/mkdistro. ...查看全部
1.从apache的官网下载oozie3.3.2
2.编译oozie,以下命令用root来执行吧,它不做任何的测试的,因为一测试就会出错的
官网估计也知道,所以顺便也提供了一个跳过参数的命令。。。
bin/mkdistro.sh -DskipTests
编译完成之后的实际可运行程序位于oozie/distro/target/oozie-3.3.2-distro/ 目录下
我好不容易找到了这个目录,我把它已到了/usr目录下面
3.在oozie的目录下建立一个libext文件件,然后把hadoop的jar加进去,因为3.3.2默认是支持1.1.1的,用以下这句命令
bin/oozie-setup.sh prepare-war hadoop 1.1.2 /usr/hadoop/
这个命令其实是在oozie-server/webapps里面生成一个可以部署的包的,但是最后它会出错,说有jar包没找到,没关系不影响。
4.配置oozie存储数据用mysql
首先添加mysql连接的jar包和ext-2.2.zip添加到oozie里面的libext目录下,
bin/oozie-setup.sh prepare-war
就这句命令就行,它会自动把libext目录下的所有包自动添加到目标的war包当中,我就碰到mysql报错,oozie的web的查看不了的问题,出问题就在这一步,
网上根本找不到资料,试了好多办法都解决不了,最后再认真细看了官方文档才知道这个诀窍,之前添加hadoop的jar包那一步不成功,可能的原因就是因为默认支持的版本不一样吧,oozie3.3.2默认支持1.1.1的,我的是1.1.2的,它要查找的包在我的版本已经没了。。。所以导致最后生成war包不成功。
貌似这一步是把jar包加到它的war包里面的此外我们还要把这个jar包放到libext里面
修改conf下面的oozie-site.xml设置mysql的属性,修改为以下内容

 
oozie.service.JPAService.jdbc.driver
com.mysql.jdbc.Driver

JDBC driver class.




oozie.service.JPAService.jdbc.url
jdbc:mysql://localhost:3306/oozie

JDBC URL.



oozie.service.JPAService.jdbc.username
oozie

DB user name.

View Code

手动建库
mysql> create database oozie;
Query OK, 1 row affected (0.03 sec)
mysql> grant all privileges on oozie.* to 'oozie'@'localhost' identified by 'oozie';
Query OK, 0 rows affected (0.03 sec)
mysql> grant all privileges on oozie.* to 'oozie'@'%' identified by 'oozie';
Query OK, 0 rows affected (0.03 sec)
mysql> exit
执行以下脚本建表
bin/ooziedb.sh create -sqlfile oozie.sql -run
启动oozie,为了方便bin/oozied.sh start 这个加到了开机启动脚本里面
后台运行命令:
$ bin/oozied.sh start
前台运行命令:
$ bin/oozied.sh run
启动成功,oh,yeah,这只是第一步,好吧,到此为止吧,晚上00:22分了。
下面这个命令是用来检查oozie的健康状况的
$ bin/oozie admin -oozie http://localhost:11000/oozie -status