giraph作业始终以本地模式运行

ht4b089n  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(468)

我在hadoop2.6.0上运行了giraph1.1.0。mapredsite.xml如下所示

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. <description>The runtime framework for executing MapReduce jobs. Can be one of
  6. local, classic or yarn.</description>
  7. </property>
  8. <property>
  9. <name>mapreduce.map.memory.mb</name>
  10. <value>4096</value>
  11. <name>mapreduce.reduce.memory.mb</name>
  12. <value>8192</value>
  13. </property>
  14. <property>
  15. <name>mapreduce.map.java.opts</name>
  16. <value>-Xmx3072m</value>
  17. <name>mapreduce.reduce.java.opts</name>
  18. <value>-Xmx6144m</value>
  19. </property>
  20. <property>
  21. <name>mapred.tasktracker.map.tasks.maximum</name>
  22. <value>4</value>
  23. </property>
  24. <property>
  25. <name>mapred.map.tasks</name>
  26. <value>4</value>
  27. </property>
  28. </configuration>

giraph-site.xml如下所示

  1. <configuration>
  2. <property>
  3. <name>giraph.SplitMasterWorker</name>
  4. <value>true</value>
  5. </property>
  6. <property>
  7. <name>giraph.logLevel</name>
  8. <value>error</value>
  9. </property>
  10. </configuration>

我不想在本地模式下运行作业。我还将环境变量mapred\u home设置为hadoop\u home。这是运行程序的命令。

  1. hadoop jar myjar.jar hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation /user/$USER/inputbc/inputgraph.txt /user/$USER/outputBC 1.0 1

当我运行这个计算图中顶点的介数中心性的代码时,我得到以下异常

  1. Exception in thread "main" java.lang.IllegalArgumentException: checkLocalJobRunnerConfiguration: When using LocalJobRunner, you cannot run in split master / worker mode since there is only 1 task at a time!
  2. at org.apache.giraph.job.GiraphJob.checkLocalJobRunnerConfiguration(GiraphJob.java:168)
  3. at org.apache.giraph.job.GiraphJob.run(GiraphJob.java:236)
  4. at hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation.runMain(BetweennessComputation.java:214)
  5. at hu.elte.inf.mbalassi.msc.giraph.betweenness.BetweennessComputation.main(BetweennessComputation.java:218)
  6. at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
  7. at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
  8. at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
  9. at java.lang.reflect.Method.invoke(Method.java:497)
  10. at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
  11. at org.apache.hadoop.util.RunJar.main(RunJar.java:136)

我应该如何确保作业不在本地模式下运行?

vjrehmav

vjrehmav1#

如果要从节点拆分主节点,可以使用:
-ca giraph.splitmasterworker=真
还要指定可以使用的工人数量:
-w型#
其中“#”是您要使用的工人数量。

bfrts1fy

bfrts1fy2#

我几天前刚遇到这个问题,幸好我这样做就解决了。
修改配置文件mapred site.xml,确保属性“mapreduce.framework.name”的值为“yarn”,并添加属性“mapreduce.jobtracker.address”,如果没有,则该属性的值为“yarn”。
mapred-site.xml如下所示:

  1. <configuration>
  2. <property>
  3. <name>mapreduce.framework.name</name>
  4. <value>yarn</value>
  5. </property>
  6. <property>
  7. <name>mapreduce.jobtracker.address</name>
  8. <value>yarn</value>
  9. </property>
  10. </configuration>

修改mapred-site.xml后重新启动hadoop。然后运行程序并将“-w”后面的值设置为大于1,将“giraph.splitmasterworker”的值设置为“true”。它可能会工作。
至于问题的原因,我只是引用了一些人的话:这些属性是为单节点执行而设计的,当在一个节点集群中执行任务时必须进行更改。在这种情况下,jobtracker必须指向将要执行nodemanager守护程序(hadoop从属)的计算机之一。至于框架,应该改成“Yarn”。

展开查看全部
jhdbpxl9

jhdbpxl93#

我们可以在堆栈跟踪中看到 LocalJobRunner 失败这有点误导,因为它使我们假设我们在本地模型中运行。您已经找到了负责任的配置选项: giraph.SplitMasterWorker 但在你的情况下,你把它设置为 true . 但是,在命令行上使用最后一个参数 1 指定仅使用单个辅助进程。因此,框架决定您必须在本地模式下运行。作为解决方案,您有两种选择:
giraph.SplitMasterWorkerfalse 尽管您正在群集上运行。
通过将最后一个参数更改为命令行调用来增加辅助进程的数量。
hadoop jar myjar.jar hu.elte.inf.mbalassi.msc.giraph.betweenness.betweenness计算/user/$user/inputbc/inputgraph.txt/user/$user/outputbc 1.0 4
有关本地模式问题的详细信息,请参阅我在so(apachegiraph主/工作模式)的另一个答案。

相关问题