我使用Hadoop已有一段时间了。一段时间后,我意识到我需要链接Hadoop作业,并拥有某种类型的工作流。我决定使用Oozie,但找不到太多关于最佳实践的信息。我想听听更有经验的人的意见。最好的问候 最佳答案 学习oozie的最好方法是下载发行版附带的示例tar文件并运行它们中的每一个。它有一个mapreduce、pig、流式工作流示例以及示例协调器xml。首先运行正常的工作流,调试后,转为使用协调器运行工作流,以便您可以逐步执行。最后一个最佳实践是使工作流和协调器中的大部分变量可配置并通过component.properties文
我有一个mapReduce任务(https://github.com/flopezluis/testing-hadoop),它读取文件夹中的文件并将它们附加到zip。我需要永远运行这个任务,所以当它完成处理它们时,它应该再次运行。我正在阅读有关oozie的信息,但我不确定它是否最合适,因为它可能对我的问题来说太大了。如果oozie是最好的解决方案。如果我编写一个协调器每10分钟运行一次,如果任务耗时超过10分钟,协调器等待再次运行该任务会怎样?任务说明文件夹总是一样的。有不同的zip文件,一个是关键。这个想法是逐步创建zip文件。我认为这比处理完所有文件后创建zip文件要快。这些文件包
我有一个将调用shell文件的oozie工作流,Shell文件将进一步调用mapreduce作业的驱动程序类。现在我想将我的ooziejobId映射到MapreducejobId以供以后处理。有什么方法可以在工作流文件中获取ooziejobId,以便我可以将相同的as参数传递给我的驱动程序类以进行映射。以下是我的示例workflow.xml文件${jobTracker}${nameNode}mapred.job.queue.name${queueName}${jobScript}${fileLocation}${nameNode}${jobId}${jobScriptWithPath}
我有一个oozie工作流程。我正在提交所有配置单元操作mapred.job.queue.name${queueName}但是对于少数hiveactions,启动的作业不在指定的队列中;它在默认队列中被调用。请告诉我此行为和解决方案背后的原因。 最佳答案 A.Oozie细节Oozie将“常规”Hadoop属性传播到“常规”MapReduce操作。但对于其他类型的Action(Shell、Hive、Java等),Oozie在YARN中运行单个Mapper任务,它并不认为这是一个真正的MapReduce作业。因此它使用了一组不同未记录的属
我有以下shell脚本:DATE=date+"%d%b%y"-d"-1days"如何将DATE传递给Java操作? 最佳答案 您可以捕获shell脚本的输出并将其传递给java操作。在shell脚本中,回显类似“dateVariable=${DATE}”的属性并在shell操作中添加捕获输出元素。这将使您可以从shell脚本捕获dateVariable。在java操作中,您可以将捕获的变量作为参数传递为${wf:actionData('shellAction')['dateVariable']}其中shellAction是shell
我很好奇用Hadoop替换我的Oracle数据库,并且正在学习Hadoop生态系统。如果我要走这条路,我有很多PL/SQL脚本需要替换。我的印象是,通过一些努力,我能够将任何PL/SQL脚本转换/翻译成类似的PigLatin脚本。如果不仅仅是PigLatin,那么通过Oozie结合Hive和Pig。这是正确的吗? 最佳答案 虽然大多数SQL语句都可以翻译成等效的Pig和/或Hive语句,但hadoop文件系统固有的一些限制会传递给语言。主要限制是HDFS是一个一次写入,多次读取的系统。这意味着包含UPDATESQL命令或DELETE
我是Oozie和Hadoop的新手。我想问问我是否可以在Oozie中运行shell操作并将输出存储到Hadoop分布式文件系统上的文件中。 最佳答案 当然-使用以下作为shell操作的脚本:#!/bin/bashecho"foo">output.txthdfsdfs-moveFromLocaloutput.txt/your/path/in/hdfs 关于hadoop-Oozieshell操作可以在HDFS上创建输出文件吗?,我们在StackOverflow上找到一个类似的问题:
我对oozie有点陌生。我在我的服务器上安装了(使用cdh存储库)oozie(我遵循了CDH4文档[我的hadoop在cdh4中运行])。我已使用以下信息更新我的core-site.xml:hadoop.proxyuser.oozie.hosts*hadoop.proxyuser.oozie.groups*但是当我开始工作时:sudo-uoozieooziejob-ooziehttp://localhost:11000/oozie-configexamples/apps/sqoopList/job.properties-run我得到:job:0000004-13053017120389
这可能吗?我搜索了很多,我想说这是不可能的,但我认为没有预见到如此基础的功能太奇怪了。如果我有一个由3台机器组成的集群,其中1台是相对于更大进程的一部分(假设是Oozie的一个Action),我不能告诉Oozie只在节点X而不是在节点X上运行该作业其他节点? 最佳答案 我不认为你可以强制Oozie启动器映射器在特定节点上运行。 关于workflow-仅在选定的节点上运行某些Hadoop作业,而不在其他节点上运行,使用Oozie管理流程,我们在StackOverflow上找到一个类似的问题
我正在尝试在hadoop1.0.3上安装oozie3.3.2,我无法创建oozie.war。我正在按照中的说明进行操作http://venkatrequiescence.blogspot.in/2012/12/oozie-installation.html.When我执行以下命令我得到-不受支持的Hadoop版本支持的版本:0.20.1、0.20.2、0.20.104、0.20.200、0.23.x和2.x./$OOZIE_HOME/distro/target/oozie-3.3.2/oozie/bin/oozie-setup.sh-hadoop1.0.3/-extjs/Users/h