Algorithm 图上Hadoop作业的结构
我有一个算法,必须在一个可以并行化的图形上执行大量计算,我想我可以使用Hadoop将这些计算分配给映射器,然后在还原器上恢复结果,但我正在努力,并开始认为也许我使用Hadoop是为了一些我不应该使用Hadoop的东西(你知道,当你有锤子时,一切看起来都像钉子) 您可以在上查看该算法的ruby版本,但排序如下:Algorithm 图上Hadoop作业的结构,algorithm,hadoop,graph,Algorithm,Hadoop,Graph,我有一个算法,必须在一个可以并行化的图形上执行大量计算,我想我可以使用Hadoop将这些计算分配给映射器,然后在还原器上恢复结果,但我正在努力,并开始认为也许我使用Hadoop是为了一些我不应该使用Hadoop的东西(你知道,当你有锤子时,一切看起来都像钉子) 您可以在上查看该算法的ruby版本,但排序如下: 我们有一个图表 我们得到一个配置(节点和边的列表),这将帮助我们控制整个图形 我们去掉这个配置的一个(随机)节点,得到一系列可选配置,然后我们得到其中一个配置(随机)作为所选配置 对于每
- 我们有一个图表
- 我们得到一个配置(节点和边的列表),这将帮助我们控制整个图形
- 我们去掉这个配置的一个(随机)节点,得到一系列可选配置,然后我们得到其中一个配置(随机)作为所选配置
- 对于每个节点,我们计算它所选择的配置数量
- 我们有一个图表。(输入格式和读取器)
- 我们得到图形的每一条边
- 对于每个节点,我们计算它有多少条边(减速器)
Exception in thread "main" java.lang.NullPointerException
at org.apache.hadoop.mapreduce.split.JobSplitWriter.writeNewSplits(JobSplitWriter.java:132)
at org.apache.hadoop.mapreduce.split.JobSplitWriter.createSplitFiles(JobSplitWriter.java:79)
at org.apache.hadoop.mapreduce.JobSubmitter.writeNewSplits(JobSubmitter.java:603)
at org.apache.hadoop.mapreduce.JobSubmitter.writeSplits(JobSubmitter.java:614)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:492)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1296)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1293)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1628)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1293)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1314)
at jobs.SamplingAlgorithm.main(SamplingAlgorithm.java:29)
我一直在搜索关于非文件输入拆分的内容,但我唯一找到的是解释文件输入拆分的教程,所以我开始怀疑,我能用Hadoop做到这一点吗?还是我想用锤子来拧
谢谢
编辑:在我继续工作的过程中,我创建(并链接)了一个标记,这样你就可以在我发布问题时看到代码了尽管我没有合适的方法,但我已经找到了解决方法 我的解决方案是将第一步移出Hadoop流,并在Hadoop作业开始之前在我的作业类上执行它们 流程将是:
- 解析图形
- 获取第一个配置
- 将此配置保留在文件上
- 获取节点的随机列表,并将它们保存到另一个文件中
- 将此文件馈送到常规Hadoop作业