如果我使用Oozie运行MapReduce作业,是否有一个特定的数字表示将启动多少个映射器? 是吗:
答案 0 :(得分:3)
以上答案集中在有多少地图并减少了mapreduce工作需求。然而,当您特别询问oozie时,我将通过Oozie分享我在mapreduce(猪)中的经验。
当您启动oozie工作流程时,您需要1个纱线应用程序。我不确定逻辑是什么,但似乎这些应用程序通常需要1个映射,偶尔需要2个。
除了上述内容之外,您还需要相同数量的映射器和缩减器才能完成实际工作,就好像您没有使用oozie一样。 (如果您看到的数字与预期不同,这可能是因为您在地图上传递了特定参数或在调用脚本时减少了属性。)
以上意味着,如果您有100个可用容器,并启动了100个工作流程(例如,通过启动过去100天开始的日常工作),工作流程很可能会占用所有可用容器容器,实际工作无限期暂停。
答案 1 :(得分:2)
简短回答: Oozie通过向名为Oozie启动器的群集提交一个 maponly作业来启动mapreduce作业。 同意@Dennis Jaheruddin。
我研究后的详细答案:Oozie的执行模式
Oozie的执行模式不同于 用户运行Hadoop作业的默认方法。当一个用户 从Hadoop边缘节点调用Hadoop,Hive或Pig CLI工具 相应的客户端可执行文件在配置的节点上运行 联系并向Hadoop集群提交作业。当同样的工作 通过Oozie工作流程动作定义和提交,事情有效 不同。
假设您正在使用Oozie CLI提交工作流作业 边缘节点。 Oozie客户端实际上将工作流程提交给Oozie 服务器,通常在不同的节点上运行。无论在哪里 它运行,这是Oozie服务器的责任提交和运行 Hadoop集群上的基础MapReduce作业。 Oozie没有这样做 通过使用Oozie本地安装的标准客户端工具 服务器节点。相反,它首先提交一个名为的MapReduce作业 “启动器工作”,反过来运行Hadoop,Hive或Pig工作 适当的客户端API 。
Imp注意: Oozie启动器基本上是运行单个映射器的仅限地图的作业 在Hadoop集群上。此地图作业知道如何处理特定的 应该运行的操作并使用执行相应的操作 Hadoop,Pig等的库。这将导致其他 根据需要旋转MapReduce作业。这些Oozie工作被称为 Oozie用语中的“异步操作”。 Oozie没有运行这些 在自己的服务器中执行操作,但在Hadoop集群上启动它们 使用启动器作业。 Oozie服务器“外包”的原因 启动Hadoop集群是为了保护自己免受意外 工作负载以及将用户代码与其自身服务隔离开来。后 所有,Oozie都可以访问一个很棒的分布式系统 Hadoop集群。
来Mapreduce操作你可以设置maptasks的数量但是没有保证,它将取决于如下所述。
地图数量通常由输入的总大小驱动, 也就是输入文件的总块数。
映射数通常由输入文件中的DFS块数驱动。虽然这会导致人们调整他们的DFS块大小来调整地图的数量。地图的正确并行度似乎大约是10到100个地图/节点,尽管我们已经将它达到300左右,用于非常cpu-light地图任务。任务设置需要一段时间,因此最好是地图至少需要一分钟才能执行
答案 2 :(得分:-1)
映射器的数量取决于逻辑输入拆分的数量,它不依赖于块的数量。您可以通过程序控制输入拆分的数量。
有关输入拆分如何影响映射器数量以及如何创建输入拆分的详细信息,请参阅此https://hadoopi.wordpress.com/2013/05/27/understand-recordreader-inputsplit/。