我可以复制一个数据在hdfs (hadoop)



我是hadoop (v2.6.0)的新手我的论文是在hadoop (Linux)中使用遗传算法完成的。我的问题:

1:我想复制文件输入(文本)在hdfs的位置为所有的slave(未分区的文件)例如,我有一个文件(200 Mb),我想把所有的文件发送到slave。(从1 200,从2 200…等等)这可能吗?如果这是可能的,关键是什么?

第二个问题:我有两个奴隶和一个主人…当我启动时,我的程序是否默认在所有从机上执行?或者hadoop决定哪个slave将执行程序?如果hadoop决定我如何使我的程序在所有的奴隶中执行,没有例外?我希望这是可能的。因为当我的程序启动时,我看到它只是在从属2中执行(而不是从属1)

用他的评论回答中的文本编辑1

感谢您提供的详细信息我的数据不能任意增长:如果我理解正确的话…如果我的数据中有200个人…它用这个算法对200个人进行了分类…

在算法中,如果我指定了30条染色体,那么算法将在每个节点上执行200个个体(在输入文件的数据库中),并且在执行中有30条染色体…这个参数将由我在开始我的代码之前指定。在我的算法中,它们不是一个可以任意增大的参数。

你能给我更多关于InputFormat的细节来启动我的算法吗?

用他的第二个评论-回答的文本编辑2

在本文档中您可以找到在c:相关工作的这一部分说:The existent literature proposes some parallel version of GAs using the MapReduce paradigm. The first is an extension, by adding a second Reducer, of MapReduce named “MRPGA” [6] based on .Net. In this implementation a coordinator client manages the executions of the parallel GA iterations. The chosen model is the island model in which each participating node computes GAs operations for a portion of the entire population. In the first phase, each Mapper node receives its own portion of population and computes the fitness value for each of its individuals. The Reducer nodes of the first reduce phase receive the individuals of the correspondent island and apply the selection function. The final Reducer computes the global selection and the other following GAs functions.

只在本文档中详细介绍了这种方法。这里的总体比例是指染色体数目的平均值。(一组被命名为人口的染色体,如果你决定用2000条染色体和5个奴隶工作,那么只需在代码中指定400条染色体,每个奴隶将只使用400条染色体(400*5 =2000)…这就是我的观点。因为如果你为一个节点指定了2000这将花费大量的时间来获得适合度。inderstood吗?我要分割的真正数据是染色体而不是输入文件的数据,我想使用大量的染色体因为当你使用大量的染色体时你会得到你需要的近似解

Hadoop并没有真正做你想让它做的事情。可能有一种方法可以定义您自己的InputFormat(也可能覆盖其他一些类)来强制它做您想做的事情,但我真的不建议这样做。

MapReduce的map()部分从根本上依赖于能够将问题分解为"独立的子任务,不需要子任务之间的通信/同步"。如果你的问题的输入数据是单个记录,可以任意增长,并且不能分解,MapReduce从根本上是错误的概念方法,因为你没有做任何分解。

我认为这可以分解的方式(如果你说的是正常的进化算法)是按记录(在这种情况下是个体)将其分解,并且你的文件将是记录的集合。然后可以按记录拆分文件。根据您的文件格式,如果有必要,您可以创建一个InputFormat,以便它知道如何拆分文件。这可能会导致相当大的记录,因此您可能希望将块大小调整为接近记录的平均大小,以获得更好的分布。

看起来其他人的代要么作为单独的作业,要么在reducer中完成,而不是像你提议的那样在mapper中完成。你可以看看这些关于这个话题的论文。

    基于Hadoop MapReduce的并行遗传算法自动生成JUnit测试套件- Linda Di Geronimo, Filomena Ferrucci, Alfonso Murolo, Federica Sarro
  • 使用Hadoop Map/Reduce的遗传算法并行化- Dino ke o, Abdulhamit subbasi
  • 基于Hadoop的遗传算法框架- Filomena Ferrucci, M-Tahar Kechadi, Pasquale Salza, Federica Sarro基于MapReduce的
  • 缩放遗传算法;Llora x;戈德堡,D.E.;坎贝尔,相对湿度

或者,您可以使用现有的框架。Apache Mahout Cookbook,第10章描述了如何在Mahout (Hadoop的机器学习库)中使用Watchmaker框架进行进化计算。

您可能还会发现Spark更适合您的需求,因为它具有更好的迭代计算,因为它保留更多的内存。甚至还为他们的机器学习库(MLlib)构建了对进化算法的本地支持。

希望这不会毁了你的论文。

相关内容

  • 没有找到相关文章

最新更新