Hadoop可以分发任务和代码库吗?

Los*_*oul 6 distributed hadoop hdfs

我开始玩hadoop(但是没有访问群集,所以只能在独立游戏中玩).我的问题是,一旦它在集群设置中,如何分配任务并将代码库转移到新节点?

理想情况下,我想运行大型批处理作业,如果我需要更多容量,可以向集群添加新节点,但我不确定是否必须复制本地运行的相同代码或执行特殊操作,以便批处理作业正在运行我可以添加容量.我以为我可以将我的代码库存储在HDFS上并在每次需要时将其拉到本地运行,但这仍然意味着我需要在服务器上使用某种初始脚本并且需要先手动运行它.

如果可能的话,任何建议或意见都会很棒!

谢谢.

Chr*_*ain 7

使用该hadoop jar命令安排mapreduce作业时,jobtracker将确定执行作业所需的映射器数量.这通常取决于输入文件中的块数,并且无论您拥有多少个工作节点,此数字都是固定的.然后,它将招募一个或多个任务执行者来执行您的工作.

应用程序jar(以及使用该-libjars参数指定的任何其他jar )将自动复制到运行用于执行jar的tasktrackers的所有计算机.所有这些都由Hadoop基础架构处理.

假设存在尚未安排的地图任务,添加额外的任务工具将增加工作的并行性. 它不会做的是自动重新分区输入以跨越额外的地图容量并行化.因此,如果您的地图容量为24(假设每个4个数据节点上有6个映射器),并且您有100个映射任务,前24个执行,并且您添加了另一个数据节点,则会获得一些额外的速度.如果您只有12个地图任务,添加计算机将无法帮助您.

最后,您需要了解数据引用位置.由于理想情况下应该在最初存储数据的相同机器上处理数据,因此添加新的任务跟踪器不一定会增加比例处理速度,因为数据最初不会在这些节点上本地,而是需要通过网络复制.

  • 来自http://hadoop.apache.org/common/docs/r0.15.2/streaming.html#Package+Files+With+Job+Submissions:"您可以指定任何可执行文件作为映射器和/或reducer.可执行文件不需要预先存在于集群中的计算机上;但是,如果它们不存在,则需要使用"-file"选项告诉框架将可执行文件打包为作业提交的一部分." 关于添加tasktrackers的所有内容也适用于流式传输. (2认同)