我正在尝试使用 <java> 在 Oozie 工作流中执行 Map-Reduce 任务行动。
O'Reilley 的 Apache Oozie(Islam and Srinivasan 2015)指出:
While it’s not recommended, Java action can be used to run Hadoop MapReduce jobs because MapReduce jobs are nothing but Java programs after all. The main class invoked can be a Hadoop MapReduce driver and can call Hadoop APIs to run a MapReduce job. In that mode, Hadoop spawns more mappers and reducers as required and runs them on the cluster.
但是,我使用这种方法没有成功。
工作流中的 Action 定义如下所示:
<java>
<!-- Namenode etc. in global configuration -->
<prepare>
<delete path="${transformOut}" />
</prepare>
<configuration>
<property>
<name>mapreduce.job.queuename</name>
<value>default</value>
</property>
</configuration>
<main-class>package.containing.TransformTool</main-class>
<arg>${transformIn}</arg>
<arg>${transformOut}</arg>
<file>${avroJar}</file>
<file>${avroMapReduceJar}</file>
</java>
工具实现的 main()实现看起来像这样:
public static void main(String[] args) throws Exception {
int res = ToolRunner.run(new TransformTool(), args);
if (res != 0) {
throw new Exception("Error running MapReduce.");
}
}
工作流每次都会崩溃并出现上面的“Error running MapReduce”异常; 如何获取 MapReduce 的输出来诊断问题?使用这个有问题吗Tool运行 MapReduce 应用程序? 我是否使用了错误的 API 调用?
我非常不愿意使用 Oozie <map-reduce> Action ,因为工作流中的每个 Action 都依赖于几个单独版本化的 AVRO 模式。
这里有什么问题?我正在使用"new"mapreduce任务的 API。
感谢您的帮助。
最佳答案
> 我如何获得 MapReduce 的输出...
回到基础。
由于您不想提及您使用的是哪个版本的 Hadoop 和哪个版本的 Oozie,因此我假设是“最新”设置(例如 Hadoop 2.7 w/TimelineServer 和 Oozie 4.2)。由于您没有提到您使用的是哪种界面(命令行?原生 Oozie/Yarn UI?Hue?),我将举几个使用“旧”CLI 的示例。
> oozie jobs -localtime -len 10 -filter name=CrazyExperiment
显示“CrazyExperiment”工作流程的最后 10 次执行,以便您可以在接下来的命令中注入(inject)适当的“作业 ID”。
> oozie job -info 0000005-151217173344062-oozie-oozi-W
从 Oozie 的角度显示该执行的状态。如果您的 Java 操作卡在 PREP 模式,那么 Oozie 无法将其提交到 YARN;否则你会在“外部 ID”下找到类似 job_1449681681381_5858 的内容。但要小心! job 前缀是一个遗留的东西;实际的 YARN ID 是 application_1449681681381_5858。
> oozie job -log 0000005-151217173344062-oozie-oozi-W
如预期的那样显示 Oozie 日志。
> yarn logs -applicationId application_1449681681381_5858
显示 AppMaster(容器 #1)和 Java 操作启动器(容器 #2)的综合日志——执行结束后。 Launcher 的stdout 日志包含一大堆 Oozie 调试内容,真正的 stdout 在最底部。
如果您的 Java 操作成功生成了另一个 YARN 作业,并且您小心地显示了子“应用程序 ID”,您应该能够在那里检索它并针对它运行另一个 yarn logs 命令.
享受接下来 5 天的调试 ;-)
关于java - Oozie:从 Oozie <java> 操作启动 Map-Reduce?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344114/
我有一个对象has_many应呈现为xml的子对象。这不是问题。我的问题是我创建了一个Hash包含此数据,就像解析器需要它一样。但是rails自动将整个文件包含在.........我需要摆脱type="array"和我该如何处理?我没有在文档中找到任何内容。 最佳答案 我遇到了同样的问题;这是我的XML:我在用这个:entries.to_xml将散列数据转换为XML,但这会将条目的数据包装到中所以我修改了:entries.to_xml(root:"Contacts")但这仍然将转换后的XML包装在“联系人”中,将我的XML代码修改为
我真的很习惯使用Ruby编写以下代码:my_hash={}my_hash['test']=1Java中对应的数据结构是什么? 最佳答案 HashMapmap=newHashMap();map.put("test",1);我假设? 关于java-等价于Java中的RubyHash,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/22737685/
最近,当我启动我的Rails服务器时,我收到了一长串警告。虽然它不影响我的应用程序,但我想知道如何解决这些警告。我的估计是imagemagick以某种方式被调用了两次?当我在警告前后检查我的git日志时。我想知道如何解决这个问题。-bcrypt-ruby(3.1.2)-better_errors(1.0.1)+bcrypt(3.1.7)+bcrypt-ruby(3.1.5)-bcrypt(>=3.1.3)+better_errors(1.1.0)bcrypt和imagemagick有关系吗?/Users/rbchris/.rbenv/versions/2.0.0-p247/lib/ru
关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭8年前。Improvethisquestion在首页我有:汽车:VolvoSaabMercedesAudistatic_pages_spec.rb中的测试代码:it"shouldhavetherightselect"dovisithome_pathit{shouldhave_select('cars',:options=>['volvo','saab','mercedes','audi'])}end响应是rspec./spec/request
我使用Nokogiri(Rubygem)css搜索寻找某些在我的html里面。看起来Nokogiri的css搜索不喜欢正则表达式。我想切换到Nokogiri的xpath搜索,因为这似乎支持搜索字符串中的正则表达式。如何在xpath搜索中实现下面提到的(伪)css搜索?require'rubygems'require'nokogiri'value=Nokogiri::HTML.parse(ABBlaCD3"HTML_END#my_blockisgivenmy_bl="1"#my_eqcorrespondstothisregexmy_eq="\/[0-9]+\/"#FIXMEThefoll
我正在尝试使用boilerpipe来自JRuby。我看过guide从JRuby调用Java,并成功地将它与另一个Java包一起使用,但无法弄清楚为什么同样的东西不能用于boilerpipe。我正在尝试基本上从JRuby中执行与此Java等效的操作:URLurl=newURL("http://www.example.com/some-location/index.html");Stringtext=ArticleExtractor.INSTANCE.getText(url);在JRuby中试过这个:require'java'url=java.net.URL.new("http://www
我只想对我一直在思考的这个问题有其他意见,例如我有classuser_controller和classuserclassUserattr_accessor:name,:usernameendclassUserController//dosomethingaboutanythingaboutusersend问题是我的User类中是否应该有逻辑user=User.newuser.do_something(user1)oritshouldbeuser_controller=UserController.newuser_controller.do_something(user1,user2)我
什么是ruby的rack或python的Java的wsgi?还有一个路由库。 最佳答案 来自Python标准PEP333:Bycontrast,althoughJavahasjustasmanywebapplicationframeworksavailable,Java's"servlet"APImakesitpossibleforapplicationswrittenwithanyJavawebapplicationframeworktoruninanywebserverthatsupportstheservletAPI.ht
一、引擎主循环UE版本:4.27一、引擎主循环的位置:Launch.cpp:GuardedMain函数二、、GuardedMain函数执行逻辑:1、EnginePreInit:加载大多数模块int32ErrorLevel=EnginePreInit(CmdLine);PreInit模块加载顺序:模块加载过程:(1)注册模块中定义的UObject,同时为每个类构造一个类默认对象(CDO,记录类的默认状态,作为模板用于子类实例创建)(2)调用模块的StartUpModule方法2、FEngineLoop::Init()1、检查Engine的配置文件找出使用了哪一个GameEngine类(UGame
这篇文章是继上一篇文章“Observability:从零开始创建Java微服务并监控它(一)”的续篇。在上一篇文章中,我们讲述了如何创建一个Javaweb应用,并使用Filebeat来收集应用所生成的日志。在今天的文章中,我来详述如何收集应用的指标,使用APM来监控应用并监督web服务的在线情况。源码可以在地址 https://github.com/liu-xiao-guo/java_observability 进行下载。摄入指标指标被视为可以随时更改的时间点值。当前请求的数量可以改变任何毫秒。你可能有1000个请求的峰值,然后一切都回到一个请求。这也意味着这些指标可能不准确,你还想提取最小/